Laboratorio completo de testes de segurança para a API ProStaff, incluindo analise estatica, analise dinamica e varredura de vulnerabilidades.
| Ferramenta | Tipo | Descricao |
|---|---|---|
| OWASP ZAP | DAST | Analise dinamica de segurança web |
| Brakeman | SAST | Analisador de segurança especifico para Rails |
| Semgrep | SAST | Analise estatica de codigo com regras customizaveis |
| Trivy | SCA | Scanner de vulnerabilidades em dependencias |
| Dependency-Check | SCA | Analise de vulnerabilidades conhecidas (CVE) |
| Nuclei | DAST | Scanner de vulnerabilidades web rapido |
./security_tests/start-security-lab.shEste comando ira:
- Iniciar todos os containers de ferramentas de segurança
- Iniciar a aplicacao ProStaff API
- Aguardar a API ficar pronta
- Conectar tudo na mesma rede Docker
./security_tests/run-security-scans.sh./security_tests/stop-security-lab.shApos executar os scans, os relatorios estarao disponiveis em:
security_tests/
├── reports/
│ ├── brakeman/
│ │ └── brakeman-report.html
│ ├── dependency-check/
│ │ ├── dependency-check-report.html
│ │ └── dependency-check-report.json
│ ├── semgrep/
│ │ └── semgrep-report.json
│ ├── trivy/
│ │ └── trivy-report.json
│ └── nuclei/
│ └── nuclei-report.json
└── zap/
└── reports/
├── zap-report.html
└── zap-report.json
# Brakeman
xdg-open security_tests/reports/brakeman/brakeman-report.html
# Dependency Check
xdg-open security_tests/reports/dependency-check/dependency-check-report.html
# ZAP
xdg-open security_tests/zap/reports/zap-report.html
# JSON reports
cat security_tests/reports/semgrep/semgrep-report.json | jq
cat security_tests/reports/trivy/trivy-report.json | jqdocker exec prostaff-brakeman brakeman --rails7 --output /reports/brakeman-report.html --format htmldocker exec prostaff-semgrep semgrep \
--config=auto \
--json \
--output=/reports/semgrep-report.json \
/srcdocker exec prostaff-trivy trivy fs \
--format json \
--output /reports/trivy-report.json \
/appdocker exec prostaff-nuclei nuclei \
-u http://prostaff-api:3000 \
-json \
-o /reports/nuclei-report.jsondocker exec prostaff-zap zap-baseline.py \
-t http://prostaff-api:3000 \
-J /zap/reports/zap-report.json \
-r /zap/reports/zap-report.htmldocker exec prostaff-zap zap-full-scan.py \
-t http://prostaff-api:3000 \
-J /zap/reports/zap-full-report.json \
-r /zap/reports/zap-full-report.html- ProStaff API: http://localhost:3333
- ZAP Web Interface: http://localhost:8087/zap
- ZAP API: http://localhost:8097
docker ps | grep prostaff# API
docker logs prostaff-api -f
# ZAP
docker logs prostaff-zap -f
# Brakeman
docker logs prostaff-brakeman
# Todos os containers de seguranca
docker compose -f security_tests/docker-compose.security.yml -p security_tests logs -fdocker restart prostaff-zap
docker restart prostaff-apidocker compose build api
docker compose up -d apiCrie um arquivo .env na raiz do projeto com:
# Database
POSTGRES_DB=prostaff_api_development
POSTGRES_USER=postgres
POSTGRES_PASSWORD=password
DATABASE_URL=postgresql://postgres:password@postgres:5432/prostaff_api_development
# Redis
REDIS_URL=redis://redis:6379/0
# Rails
RAILS_ENV=development
JWT_SECRET_KEY=your_secret_key_here
# API
CORS_ORIGINS=http://localhost:3000,http://localhost:3333
# External APIs
RIOT_API_KEY=your_riot_api_key_here- Execute os scans regularmente: Idealmente em cada commit ou antes de cada release
- Revise todos os relatorios: Priorize vulnerabilidades criticas e altas
- Mantenha as ferramentas atualizadas:
docker compose -f security_tests/docker-compose.security.yml pull
- Documente falsos positivos: Use arquivos de supressao quando apropriado
- Integre ao CI/CD: Automatize os scans em seu pipeline
# Verifique se a API esta rodando
docker ps | grep prostaff-api
# Verifique os logs
docker logs prostaff-api
# Teste o health endpoint
curl http://localhost:3333/up- Acesse: http://localhost:8087/zap (nao http://localhost:8087)
- A autenticacao foi desabilitada na configuracao
- Confirme que a API esta rodando:
curl http://localhost:3333/up - Verifique se o container esta na rede correta:
docker network inspect security_tests_security-net
- Verifique os logs:
docker logs <container_name> - Confirme que os volumes estao corretos no docker-compose.yml
- Verifique se a aplicacao Rails esta no diretorio pai:
../
# Reconstrua a imagem
docker compose build api
# Force bundle install
docker compose run --rm api bundle installPara adicionar novas ferramentas ou melhorar os scans:
- Edite
docker-compose.security.yml - Adicione scripts de execucao em
run-security-scans.sh - Documente as mudancas neste README
- Teste completamente antes de commitar
┌─────────────────────────────────────────────────────┐
│ Security Testing Lab Network │
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ ProStaff │◄─────┤ OWASP ZAP │ DAST │
│ │ API │ │ (Baseline) │ │
│ │ │ └──────────────┘ │
│ │ Rails 7.2 │ │
│ │ Port: 3333 │ ┌──────────────┐ │
│ └──────┬───────┘ │ Nuclei │ DAST │
│ │ └──────────────┘ │
│ │ │
│ ┌──────▼───────────────────────────────┐ │
│ │ Application Code │ │
│ │ │ │
│ │ ┌───────────┐ ┌────────────┐ │ │
│ │ │ Brakeman │ │ Semgrep │ SAST│ │
│ │ └───────────┘ └────────────┘ │ │
│ │ │ │
│ │ ┌───────────┐ ┌────────────┐ │ │
│ │ │ Trivy │ │Dependency- │ SCA │ │
│ │ │ │ │ Check │ │ │
│ │ └───────────┘ └────────────┘ │ │
│ └───────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────┘
Este laboratorio de seguranca e parte do projeto ProStaff API.