Manual DefectDojo
Manual - OWASP DefectDojo
Versão: 1.0.0
Data: 2024
Visão Geral
DefectDojo é a Fonte da Verdade de Segurança do projeto nCommand Lite. Centraliza, deduplica e gerencia o ciclo de vida completo de todas as vulnerabilidades identificadas através de SAST, SCA e DAST.
Função no Processo: Gestão centralizada de vulnerabilidades, deduplicação automática, integração com pipeline e Azure DevOps.
Arquitetura
Como Fonte da Verdade
Scanners (SAST/SCA/DAST)
↓
DefectDojo API
↓
Deduplicação Automática
↓
Gestão de Ciclo de Vida
↓
Azure DevOps (Bugs)
Configuração Inicial
Passo 1: Acesso ao DefectDojo
URL: [Configurar conforme ambiente]
Credenciais:
- Usuário: [Fornecido pelo AppSec]
- Senha: [Definida no primeiro acesso]
Passo 2: Obter API Key
- Login no DefectDojo
- User → API Key
- Gerar nova API Key
- Copiar e armazenar como secret no Azure DevOps
⚠️ Importante: API Key deve ser tratada como secret. Nunca commitar no código.
Passo 3: Criar Produto
- Products → Add Product
- Nome:
nCommand-Lite - Description:
nCommand Lite - SaMD Platform - Product Type: [Selecionar tipo apropriado]
- Lifecycle: Active
- Save
Passo 4: Criar Engagement
Engagements por Tipo:
- Development: Para scans durante desenvolvimento
- Release: Para scans pré-release
- Production: Para scans diários de produção
Criar Engagement:
- Products → nCommand-Lite → Engagements
- Add Engagement
- Nome:
nCommand-Lite-develop(ou-release,-production) - Engagement Type: CI/CD
- Target Start: Data atual
- Target End: [Data futura]
- Save
Integração com Pipeline
Ingestão Automática
Script: pipelines/scripts/defectdojo-ingest.sh
Uso no Pipeline:
- task: Bash@3
inputs:
targetType: 'inline'
script: |
bash pipelines/scripts/defectdojo-ingest.sh \
--type sast \
--file $(System.DefaultWorkingDirectory)/sonar-report.json \
--url $(DEFECTDOJO_URL) \
--api-key $(DEFECTDOJO_API_KEY) \
--commit $(Build.SourceVersion) \
--branch $(Build.SourceBranchName)
Tipos de Scan Suportados:
sast: SonarCloud reportssca: Trivy reportsdast: OWASP ZAP reports
Verificação de Vulnerabilidades
Script: pipelines/scripts/defectDojo-check.sh
Uso no Pipeline:
- task: Bash@3
inputs:
targetType: 'inline'
script: |
bash pipelines/scripts/defectdojo-check.sh \
--url $(DEFECTDOJO_URL) \
--api-key $(DEFECTDOJO_API_KEY) \
--branch $(Build.SourceBranchName) \
--severity-critical \
--severity-high
Gate de Bloqueio: Pipeline falha se encontrar vulnerabilidades críticas/altas.
Processo de Triagem
Fluxo de Triagem
- Scan Executado → Relatório enviado para DefectDojo
- DefectDojo Processa → Deduplicação automática
- AppSec/QA Analisa → Novos findings no DefectDojo
- Decisão:
- False Positive → Marcar como tal
- True Positive → Push to Azure DevOps
Triagem de Finding
Acessar Finding
- DefectDojo → Findings
- Filtrar por:
- Engagement:
nCommand-Lite-develop - Status: Active
- Severity: Critical, High
- Engagement:
Marcar False Positive
- Abrir finding
- Status → False Positive
- Adicionar comentário explicando:
- Por que é false positive
- Contexto técnico
- Save
Push to Azure DevOps
- Abrir finding (True Positive)
- Clicar em "Push to Azure DevOps"
- Selecionar projeto:
nCommand-Lite - DefectDojo cria Bug automaticamente:
- Título: [Título da vulnerabilidade]
- Descrição: Detalhes técnicos
- Severity: Mapeada do DefectDojo
- Vinculado ao commit/branch onde foi encontrado
Gestão de Vulnerabilidades
Classificação de Severidade
| Severidade DefectDojo | CVSS Score | SLA Correção |
|---|---|---|
| Critical | 9.0 - 10.0 | 24 horas |
| High | 7.0 - 8.9 | 7 dias |
| Medium | 4.0 - 6.9 | 30 dias |
| Low | 0.1 - 3.9 | Próxima release |
Ciclo de Vida
- New: Vulnerabilidade recém descoberta
- Active: Em análise/correção
- Verified: Corrigida e verificada
- Mitigated: Mitigação implementada
- False Positive: Não é vulnerabilidade real
- Out of Scope: Fora do escopo
- Risk Accepted: Risco aceito documentadamente
Auto-Close
Quando o desenvolvedor corrige o código:
- Pipeline executa novo scan
- Relatório enviado para DefectDojo
- DefectDojo compara com finding antigo
- Se corrigido → Status muda para "Mitigated" automaticamente
Dashboard e Relatórios
Dashboard Principal
Métricas Visíveis:
- Vulnerabilidades ativas por severidade
- Vulnerabilidades por tipo de scan
- Tendências ao longo do tempo
- Engagements ativos
Relatórios Disponíveis
- Executive Summary: Resumo para gestão
- Security Testing: Detalhes de testes de segurança
- Product Type Report: Por tipo de produto
- Metrics: Métricas detalhadas
Certificado de Segurança
Geração: Durante FASE 4 (Release)
Conteúdo:
- Total de vulnerabilidades
- Vulnerabilidades críticas/altas: 0
- Último scan completo
- Status: Aprovado
Uso: Incluído no DHF
Configurações Específicas do Projeto
Engagements Configurados
| Engagement | Tipo | Uso |
|---|---|---|
nCommand-Lite-develop | CI/CD | Scans durante desenvolvimento |
nCommand-Lite-release | CI/CD | Scans pré-release |
nCommand-Lite-production | CI/CD | Scans diários de produção |
Notificações
Configurar:
- User → Notifications
- Configurar alertas para:
- Novos findings críticos/altos
- Findings próximos ao SLA
- Engagements finalizados
Integrações
Com Azure DevOps
Configuração:
- DefectDojo → Configuration → Tool Configurations
- Adicionar Azure DevOps:
- URL:
https://dev.azure.com/ionic-health - Token: Personal Access Token (PAT) do Azure DevOps
- Project:
nCommand-Lite
- URL:
Funcionalidade: Push to Azure DevOps cria bugs automaticamente.
Com Scanners
SonarCloud:
- Scan Type: SonarQube
- Formato: JSON
Trivy:
- Scan Type: Trivy Scan
- Formato: JSON
OWASP ZAP:
- Scan Type: ZAP Scan
- Formato: JSON
Troubleshooting
Problema: Ingestão falha
Solução:
- Verificar API Key
- Verificar formato do relatório
- Verificar URL do DefectDojo
- Ver logs do pipeline
Problema: Findings não são deduplicados
Solução:
- Verificar configuração de deduplicação no Engagement
- Verificar se CVE/CWE está presente
- Verificar branch/commit hash
Problema: Push to Azure DevOps não funciona
Solução:
- Verificar configuração da integração
- Verificar PAT do Azure DevOps
- Verificar permissões do PAT
Boas Práticas
- Triar findings rapidamente (dentro de 24h para críticos)
- Documentar false positives com justificativa clara
- Usar Push to Azure DevOps para criar rastreabilidade
- Revisar engagements periodicamente
- Monitorar SLAs através do dashboard
API Reference
Endpoints Principais
Importar Scan:
POST /api/v2/import-scan/
Listar Findings:
GET /api/v2/findings/?engagement={id}&active=true
Push to Azure DevOps:
POST /api/v2/findings/{id}/push_to_azure_devops/
Documentação Completa: DefectDojo API Docs
Referências
- Documentação Oficial DefectDojo
- DefectDojo API Docs
- Processo no projeto:
docs/PROCESS.md - SOP-003:
docs/sop/SOP-003-Vulnerability-Management.md
Última Atualização: 2024
Responsável: AppSec Team