Orquestracao de 20+ ferramentas open source de seguranca para analise completa de repositorios. Um unico comando escaneia secrets, vulnerabilidades, dependencias, containers, IaC e aplicacoes web.
Todos os direitos reservados a Carlos Eduardo (https://github.com/Cadush).
Repositorio --> Relatorio HTML + JSON + DefectDojo
O pipeline analisa codigo em 6 camadas:
| Camada | O que verifica | Ferramentas |
|---|---|---|
| Secrets | API keys, tokens, senhas expostas | Gitleaks, TruffleHog |
| SAST | XSS, SQLi, RCE, command injection | Semgrep, Bandit, Gosec, SpotBugs, Brakeman |
| SCA | Dependencias com CVEs conhecidas | Trivy, Grype, Syft, OSV-Scanner |
| Container | Dockerfile inseguro, imagem com CVEs | Hadolint, Dockle, Trivy, Checkov, KICS |
| DAST | Vulnerabilidades em app rodando | OWASP ZAP, Nuclei, Nikto, sqlmap |
| Quality | Code smells, bugs, duplicacao | SonarQube |
Alem do pipeline de scan, o projeto inclui:
- Dependency Audit - analise profunda de libs com Snyk, OWASP Dependency-Check, npm audit, Dependabot
- Legacy Doc - documentacao automatica de codigo legado usando LLM (Ollama local, open source)
- DefectDojo - dashboard centralizado que agrega todos os findings com tracking ao longo do tempo
- Vault + SOPS - gerenciamento de secrets (nao so detectar, mas proteger)
- Deploy EC2 - servidor centralizado para equipes
| Servico | URL | Credenciais |
|---|---|---|
| DefectDojo | http://localhost:8888 | admin / gerada em .env (veja make up) |
| SonarQube | http://localhost:9000 | admin / admin (troca de senha exigida no 1o login) |
| Dependency-Track | http://localhost:8080 | (setup inicial) |
| Vault | http://localhost:8200 | token gerado em .env (veja make up) |
| ZAP API | http://localhost:8090 | - |
make up roda scripts/init-env.sh automaticamente na primeira vez, gerando um
.env local (nao versionado) com senha do DefectDojo e token do Vault
aleatorios. Rode cat .env para ve-los, ou apague o arquivo e rode make up
de novo para gerar credenciais novas.
Um unico docker build empacota todas as ferramentas. Ideal para rodar localmente ou em CI sem precisar de infra.
make build # uma vez (~3GB)
make scan-docker REPO=./meu-projeto # secrets + SAST + SCA + IaC + relatorio HTMLFerramentas: Gitleaks, TruffleHog, Semgrep, Bandit, Trivy, Syft, Grype, OSV-Scanner, Hadolint, Checkov
Cada ferramenta roda no proprio container oficial. Inclui SonarQube, DefectDojo e ZAP.
make pull # baixa ~15GB de imagens (uma vez)
make up # sobe SonarQube, DefectDojo, Vault, ZAP
make scan REPO=./meu-projeto # todas as 14 etapas
make downOpcoes extras:
# + DAST (app precisa estar rodando)
make scan REPO=./meu-projeto DAST=http://localhost:3000
# + analise de imagem Docker
make scan REPO=./meu-projeto IMAGE=meu-app:latest
# scan de repositorio remoto
make scan REPO=https://github.com/org/repoFoco exclusivo em CVEs de dependencias. Mais rapido que o scan completo.
make dep-audit REPO=./meu-projeto
# com Snyk (fix PRs automaticos)
make dep-audit REPO=./meu-projeto SNYK_TOKEN=xxx
# via container (para CI/CD)
make dep-audit-build
make dep-audit-docker REPO=./meu-projeto FAIL_ON=highFerramentas: npm audit, pip-audit, bundle-audit, govulncheck, OWASP Dependency-Check, Snyk
make scan-remote REPO=./meu-projeto SERVER=<IP_DA_EC2>Findings ficam acumulados no DefectDojo da EC2 com historico por sprint.
| Comando | Descricao |
|---|---|
make preflight |
Verifica docker/git/jq/curl e se o daemon do Docker esta acessivel |
make build |
Constroi imagem unica (Dockerfile.scanner) |
make scan-docker REPO=<path> |
Scan rapido via container unico |
make scan REPO=<path> |
Scan completo via ferramentas separadas |
make up |
Sobe infraestrutura (SonarQube, DefectDojo, Vault, ZAP) |
make down |
Para infraestrutura |
make pull |
Baixa todas as imagens Docker |
make status |
Mostra status dos containers |
make dep-audit REPO=<path> |
Auditoria profunda de dependencias |
make dep-audit-build |
Constroi imagem dep-audit para CI |
make dep-audit-docker REPO=<path> |
Dep-audit via container |
make legacy-doc REPO=<path> |
Documenta codigo legado com LLM |
make ollama-setup |
Instala Ollama + modelos open source |
make ollama-up |
Sobe Ollama em container Docker |
make scan-remote REPO=<path> SERVER=<ip> |
Scan remoto (envia para EC2) |
make vault-setup |
Configura HashiCorp Vault |
make sops-setup |
Configura SOPS + age para encriptacao |
make report DIR=reports/<ts> |
Regenera relatorio HTML de scan anterior |
make clear |
Remove TODOS os dados Docker (~15GB) |
Ferramenta dedicada para revisao profunda de dependencias. Roda localmente ou em CI/CD.
# Scan basico (open source)
make dep-audit REPO=./meu-projeto
# Com Snyk (monitoramento + fix PRs)
make dep-audit REPO=./meu-projeto SNYK_TOKEN=xxx
# Via container (para pipelines)
make dep-audit-build
make dep-audit-docker REPO=./meu-projeto FAIL_ON=highFerramentas: npm audit, pip-audit, bundle-audit, govulncheck, OWASP Dependency-Check, Snyk, Dependabot config.
Templates CI prontos em ci/ para Bitbucket, GitHub Actions e GitLab.
Analisa um codebase sem documentacao e gera docs automaticamente usando LLM. Roda 100% local e open source com Ollama.
# Setup (uma vez - instala Ollama + modelos)
make ollama-setup
# Gerar documentacao
make legacy-doc REPO=./codigo-legado
# Modelo menor (8GB RAM)
make legacy-doc REPO=./codigo-legado MODEL=qwen2.5-coder:7bGera: README.md, ARCHITECTURE.md, SECURITY-REVIEW.md
Tambem suporta OpenAI, OpenRouter e AWS Bedrock se preferir.
make vault-setup
bash scripts/vault.sh put db/prod password=s3cr3t
bash scripts/vault.sh get db/prod
bash scripts/vault.sh inject app/dev .envmake sops-setup
bash scripts/sops.sh encrypt secrets.yml
bash scripts/sops.sh decrypt secrets.ymlSobe o SecOps Orchestrator numa EC2 para centralizar findings de todos os projetos da equipe ao longo do tempo.
# Via Terraform
cd infra/ && terraform apply
# Via script (SSH na EC2)
bash infra/setup-ec2.sh
# Scan remoto (dev local -> EC2)
make scan-remote REPO=./meu-app SERVER=<IP_DA_EC2>DefectDojo na EC2 acumula findings e gera metricas: MTTR, tendencias, findings por sprint.
- Semgrep sublinha XSS/SQLi enquanto digita
- SonarLint mostra code smells inline
- Pre-commit hook bloqueia commits com secrets
cp scripts/pre-commit .git/hooks/pre-commit
chmod +x .git/hooks/pre-commitApos executar make scan REPO=./test-vulnerable-app, o pipeline gera:
reports/20260525_093216/
├── report.html <-- Relatorio visual (abrir no navegador)
├── audit-config.json # .env expostos, .gitignore, chaves privadas
├── gitleaks.json # Secrets no historico git
├── trufflehog.json # Secrets no filesystem
├── semgrep.json # SAST (XSS, SQLi, RCE)
├── bandit.json # SAST Python
├── trivy-fs.json # SCA (CVEs em dependencias)
├── grype.json # SCA
├── syft-sbom.json # SBOM (inventario de dependencias)
├── osv-scanner.json # CVEs (Google OSV database)
├── checkov.json # IaC (Terraform, Dockerfile)
├── hadolint-Dockerfile.txt # Lint de Dockerfile
└── ...
- Abra o
report.htmlno navegador - Clique no botao "Exportar PDF"
- No dialogo de impressao, selecione "Salvar como PDF"
- O PDF gerado pode ser armazenado para auditoria
make clearRemove todos os containers, volumes e imagens (~15GB liberados). Para usar novamente, execute make build ou make pull.
Instale antes de rodar qualquer comando:
| Dependencia | Uso | Instalacao |
|---|---|---|
| Docker Engine (20.10+) | Roda todas as ferramentas de scan como containers | https://docs.docker.com/engine/install/ |
Docker Compose (v2, docker compose) |
Sobe SonarQube, DefectDojo, Vault, ZAP | incluso no Docker Desktop / docker-compose-plugin |
| make | Atalhos do Makefile | apt install make / brew install make |
| git | Clonar repositorios remotos para scan | apt install git |
| jq | Parsing de JSON no relatorio HTML | apt install jq |
| bash 4+ | Todos os scripts | Linux/macOS ja tem; no Windows use WSL2 |
| curl | Health-check de servicos (SonarQube, DefectDojo) | apt install curl |
Recursos de hardware:
- ~8GB RAM disponivel (se usar
make upcom SonarQube + DefectDojo) - ~3GB disco (se usar
make buildcom container unico) - ~15GB disco (se usar
make pullcom ferramentas separadas)
Para o legacy-doc com Ollama:
- ~16GB RAM (modelo 14B) ou ~8GB RAM (modelo 7B)
- GPU NVIDIA opcional (acelera geracao)
Antes do primeiro scan, rode make preflight (ou bash scripts/preflight.sh) para
confirmar que Docker, git, jq e curl estao instalados e que o daemon do Docker
esta acessivel. make scan/make dep-audit já rodam essa checagem sozinhos e
abortam com uma mensagem explicativa se algo estiver faltando — em vez de
seguir em frente e gerar um relatorio vazio.
Não rode make scan/make dep-audit com sudo a menos que seu Docker também
esteja configurado para root. Se você usa Docker rootless (comum em setups
recentes de Linux desktop), o daemon roda no seu usuário — sudo su ou sudo bash enxergam um Docker diferente (ou nenhum). Nesse caso, docker run falha
silenciosamente para todas as ferramentas e o pipeline antigo gerava um
relatório "0 vulnerabilidades encontradas", indistinguível de um scan real e limpo.
A partir desta versão, scripts/preflight.sh detecta esse cenário antes de
iniciar qualquer scan e interrompe com uma mensagem explicando o problema e como
corrigir (rodar sem sudo, adicionar seu usuário ao grupo docker, ou exportar
DOCKER_HOST apontando para o socket rootless correto). Se, mesmo assim, uma
ferramenta específica falhar no meio do scan, o relatório HTML final mostra um
aviso destacado no topo listando quais ferramentas não executaram — o relatório
nunca mais deve ser lido como "limpo" sem checar esse aviso primeiro.
SECops/
├── config/
│ ├── semgrep-rules.yml # Regras custom SAST
│ ├── .sops.yaml # Config de encriptacao SOPS
│ └── oh-my-openagent.json # Config multi-agente para legacy-doc
├── ci/
│ ├── bitbucket-pipelines.yml # Template Bitbucket
│ ├── github-actions.yml # Template GitHub Actions
│ └── gitlab-ci.yml # Template GitLab CI
├── docs/ # Documentacao completa
├── scripts/
│ ├── preflight.sh # Checagem de dependencias e do daemon Docker
│ ├── init-env.sh # Gera .env com credenciais aleatorias (make up)
│ ├── scan.sh # Orquestrador principal (14 etapas)
│ ├── scan-local.sh # Orquestrador (container unico)
│ ├── scan-remote.sh # Scan remoto (envia para EC2)
│ ├── audit-config.sh # Auditoria de .env, .gitignore
│ ├── dep-audit.sh # Analise profunda de dependencias
│ ├── dep-audit-docker.sh # Dep-audit (entrypoint container)
│ ├── legacy-doc.sh # Documentacao de codigo legado
│ ├── setup-ollama.sh # Setup Ollama + modelos
│ ├── import-defectdojo.sh # Importa reports no DefectDojo
│ ├── report-html.sh # Gerador de relatorio HTML
│ ├── vault.sh # Operacoes com Vault
│ ├── sops.sh # Operacoes com SOPS
│ ├── clear.sh # Limpeza completa do Docker
│ └── pre-commit # Git hook de seguranca
├── infra/
│ ├── main.tf # Terraform para EC2
│ └── setup-ec2.sh # Bootstrap da EC2
├── reports/ # Output dos scans
├── docker-compose.yml # Infra (SonarQube, DefectDojo, Vault)
├── docker-compose.ollama.yml # Ollama (LLM local)
├── Dockerfile.dep-audit # Imagem dep-audit para CI
└── Makefile # Atalhos
| Doc | Conteudo |
|---|---|
| docs/FERRAMENTAS.md | Detalhes de cada ferramenta |
| docs/DEFECTDOJO.md | Dashboard agregador |
| docs/VAULT-SOPS.md | Gerenciamento de secrets |
| docs/VSCODE-INTEGRACAO.md | Integracao com IDE |
| docs/DEPLOY-EC2.md | Deploy na AWS EC2 |
| docs/DEP-AUDIT.md | Analise profunda de dependencias |
| docs/LEGACY-DOC.md | Documentacao de codigo legado |