Dependency-Track - Análise Contínua de SBOM - Guia de Referência
Dependency-Track (um projeto emblemático OWASP) é uma plataforma para gestão contínua de risco de cadeia de suprimentos de software. Sua ideia definidora: em vez de escanear suas dependências uma vez no tempo de compilação, você faz upload de um SBOM CycloneDX por projeto e a plataforma re-avalia continuamente esses componentes conforme novas vulnerabilidades são divulgadas. Quando um CVE é divulgado, você imediatamente sabe quais de suas aplicações contêm o componente afetado — sem reconstruir ou rescanear nada.
Implantação
| Método | Comando |
|---|
| Docker Compose | curl -LO https://dependencytrack.org/docker-compose.yml && docker compose up -d |
| Container (API) | docker run -p 8081:8080 dependencytrack/apiserver |
| Frontend | container dependencytrack/frontend (UI padrão em 8080) |
| Kubernetes | Gráfico Helm disponível |
| Requisitos | ~4GB+ RAM; PostgreSQL para produção |
Conceitos Centrais
| Termo | Significado |
|---|
| Projeto | Uma aplicação/serviço que você rastreia |
| Componente | Uma dependência dentro de um projeto |
| SBOM | Bill of materials CycloneDX que você faz upload |
| Vulnerabilidade | Um CVE/advisory afetando um componente |
| Política | Regras que portão risco (licença, severidade, idade) |
| Portfólio | Todos os projetos, agregados |
Fazendo Upload de um SBOM
Gere com Syft ou ferramentas cyclonedx-*, depois faça upload via API:
# Gerar um SBOM CycloneDX
syft dir:. -o cyclonedx-json > bom.json
# Fazer upload para Dependency-Track
curl -X POST "http://localhost:8081/api/v1/bom" \
-H "X-Api-Key: $DT_API_KEY" \
-F "project=$PROJECT_UUID" \
-F "bom=@bom.json"
| Endpoint | Propósito |
|---|
POST /api/v1/bom | Fazer upload de um SBOM |
GET /api/v1/project | Listar projetos |
PUT /api/v1/project | Criar um projeto |
GET /api/v1/vulnerability/project/{uuid} | Vulnerabilidades para um projeto |
GET /api/v1/metrics/project/{uuid}/current | Métricas de risco atual |
Fontes de Inteligência de Vulnerabilidade
| Fonte | Fornece |
|---|
| NVD | Dados de CVE |
| GitHub Advisories | Avisos específicos do ecossistema |
| OSV | Banco de dados de Vulnerabilidades de Código Aberto |
| VulnDB | Comercial (opcional) |
| Interno | Seus próprios avisos |
A plataforma espelha esses feeds e re-analisa todos os componentes armazenados em um cronograma.
Mecanismo de Política
| Condição de política | Exemplo |
|---|
| Severidade | Falhar se alguma vulnerabilidade CRÍTICA |
| Licença | Bloquear GPL em produtos proprietários |
| Idade do componente | Sinalizar dependências não mantidas por N anos |
| Coordenadas | Banir um pacote/versão específica |
| CWE | Sinalizar classes de fraqueza específicas |
Políticas produzem violações que aparecem junto com vulnerabilidades, então risco de licença e higiene são rastreados no mesmo lugar.
Integração de CI/CD
# Em um pipeline: build → gerar SBOM → upload → portão
syft dir:. -o cyclonedx-json > bom.json
curl -X POST "$DT_URL/api/v1/bom" -H "X-Api-Key: $DT_API_KEY" \
-F "project=$PROJECT_UUID" -F "bom=@bom.json"
# Sondagem para o resultado da análise e falha em violações de política
| Integração | Nota |
|---|
| Jenkins/GitHub Actions | Plugins/ações oficiais disponíveis |
| Webhooks | Notifique Slack/Teams/Jira em novas descobertas |
| VEX | Registre decisões de exploração (não afetado, etc.) |
Triagem & VEX
| Ação | Significado |
|---|
| Não Afetado | Caminho de código vulnerável não é alcançável |
| Falso Positivo | Detecção está errada |
| Resolvido | Corrigido neste projeto |
| Suprimido | Risco aceito com justificativa |
Registrar estes como VEX mantém o ruído baixo e documenta decisões para auditores.
Dependency-Track vs Scanners Pontuais
| Aspecto | Dependency-Track | Grype/Trivy | Socket |
|---|
| Modelo | Plataforma SBOM contínua | Scan pontual | Detecção de malware comportamental |
| Re-avaliação | Automática em novos CVEs | Apenas quando você re-executa | Em mudanças de dependência |
| Visualização de portfólio | Sim (todos os projetos) | Por scan | Por PR |
| Melhor para | Risco de cadeia de suprimentos em toda a org | Scanning de CI | Detecção de pacote malicioso |
Alimente-o com SBOMs de Syft; combine com Grype para scanning em tempo de construção e Socket para detecção de pacote malicioso.
Recursos