Threat modeling com OWASP Threat Dragon
1. Introdução ao Threat Modeling e OWASP Threat Dragon
Threat modeling é uma prática sistemática para identificar, documentar e mitigar riscos de segurança em um sistema antes que ele seja implementado. Para desenvolvedores, essa prática é essencial porque permite enxergar vulnerabilidades na arquitetura antes que se tornem bugs caros ou incidentes de segurança. Em vez de corrigir problemas após o deploy, o threat modeling adota uma postura proativa — o famoso "shift left" na segurança.
O OWASP Threat Dragon é uma ferramenta open-source e gratuita que simplifica esse processo. Diferente de soluções corporativas complexas, o Threat Dragon foi projetado para ser leve, colaborativo e integrável ao fluxo de desenvolvimento. Ele permite desenhar diagramas de fluxo de dados (DFD), aplicar metodologias como STRIDE e gerar relatórios de ameaças de forma visual.
No contexto de Security by Design, o Threat Dragon se encaixa perfeitamente: você modela ameaças na fase de design, documenta decisões de segurança e mantém o modelo versionado junto com o código. Isso transforma segurança em um artefato vivo do ciclo de desenvolvimento.
2. Instalação e Configuração Inicial
O Threat Dragon oferece duas formas principais de uso:
Desktop App (Electron): Ideal para uso individual ou times pequenos. Baixe o instalador em threatdragon.org e execute localmente.
Versão Web (Docker): Para equipes que desejam centralizar modelos e colaborar em tempo real. Execute com Docker:
docker run -d -p 8080:80 --name threatdragon owasp/threat-dragon:stable
Acesse http://localhost:8080 e configure um repositório Git para versionamento. Na interface web, vá em Settings > Repository e informe a URL do seu repositório (GitHub, GitLab ou Bitbucket). Isso permite que cada modelo seja salvo como um arquivo JSON versionado.
Primeiros passos: Crie um novo modelo clicando em New Model. Dê um nome ao projeto e escolha o diretório de armazenamento. O Threat Dragon criará automaticamente um arquivo .json com a estrutura inicial.
3. Modelagem de Diagramas de Fluxo de Dados (DFD)
O coração do threat modeling é o diagrama de fluxo de dados. No Threat Dragon, você desenha o sistema usando quatro elementos principais:
- Atores (pessoas ou sistemas externos) — representados como figuras humanas
- Processos (serviços, microsserviços, funções) — círculos
- Armazenamentos (bancos de dados, filas, caches) — barras horizontais paralelas
- Fluxos de dados (setas entre elementos) — linhas direcionadas
Exemplo prático: Modelando um sistema de autenticação simples:
[Usuário] --(credenciais)--> [API de Login] --(consulta)--> [Banco de Usuários]
[API de Login] --(token JWT)--> [Usuário]
Adicione trust boundaries (limites de confiança) para separar zonas seguras de zonas não confiáveis. Por exemplo, desenhe uma linha tracejada ao redor do "API de Login" e "Banco de Usuários" indicando que estão no backend confiável, enquanto o "Usuário" está fora.
Boas práticas:
- Mantenha o diagrama em um nível de abstração que todos do time entendam
- Não misture muitos detalhes de implementação — foque nos fluxos de dados
- Use cores para destacar limites de confiança (ex: vermelho para não confiável, verde para confiável)
4. Aplicando STRIDE com o Threat Dragon
STRIDE é uma metodologia de classificação de ameaças desenvolvida pela Microsoft. Cada letra representa uma categoria:
- Spoofing (Falsificação de identidade)
- Tampering (Violação de integridade)
- Repudiation (Não repúdio)
- Information Disclosure (Vazamento de informações)
- Denial of Service (Negação de serviço)
- Elevation of Privilege (Elevação de privilégio)
No Threat Dragon, clique com o botão direito em qualquer elemento do diagrama e selecione Add Threat. A ferramenta oferece uma biblioteca de ameaças pré-definidas para cada tipo de elemento. Por exemplo, para um fluxo de dados que transmite credenciais, a biblioteca sugere:
Ameaça: Spoofing do fluxo de autenticação
Categoria: Spoofing
Descrição: Um atacante pode interceptar ou modificar as credenciais durante a transmissão.
Mitigação sugerida: Utilizar TLS 1.3 com certificados válidos.
Você pode personalizar o texto da ameaça, associar um CWE (Common Weakness Enumeration) e definir o nível de risco. A biblioteca embutida acelera o processo — não precisa reinventar a roda para ameaças comuns como SQL Injection ou Cross-Site Scripting.
5. Análise e Priorização de Ameaças
Nem toda ameaça merece a mesma atenção. O Threat Dragon permite classificar cada ameaça com dois modelos:
DREAD (Damage, Reproducibility, Exploitability, Affected Users, Discoverability): Atribua notas de 1 a 10 para cada critério. A soma ou média gera um score de prioridade.
Classificação personalizada: Defina seus próprios campos de probabilidade (1-5) e impacto (1-5). O Threat Dragon calcula automaticamente o nível de risco (baixo, médio, alto, crítico).
Exemplo de preenchimento:
Ameaça: SQL Injection no endpoint /api/users
Probabilidade: 4 (alta - parâmetros não sanitizados)
Impacto: 5 (crítico - acesso total ao banco)
Risco calculado: Crítico (4x5 = 20)
Contramedida: Implementar prepared statements e validação de entrada.
Status: Planejado
Documente também as mitigações propostas. Use o campo Mitigation para descrever a solução técnica e vincule a issues no GitHub/GitLab para rastreamento.
6. Colaboração e Versionamento
Um dos maiores diferenciais do Threat Dragon é o suporte nativo a versionamento via Git. Cada modelo é um arquivo JSON que pode ser commitado, revisado em Pull Requests e comparado entre versões.
Exemplo de workflow colaborativo:
- Desenvolvedor A cria o modelo inicial e faz commit
- Desenvolvedor B abre uma issue no GitHub: "Adicionar ameaças para novo endpoint de pagamento"
- Desenvolvedor A edita o modelo, adiciona as ameaças e cria um Pull Request
- Revisor analisa as alterações no diff do JSON e aprova
- O modelo é mergeado na branch principal
Para integração com CI/CD, utilize a CLI do Threat Dragon para exportar relatórios automaticamente:
# Exemplo de script para gerar relatório em Markdown
threat-dragon-export --input model.json --format markdown --output report.md
Isso permite que o time de segurança revise ameaças a cada deploy, sem depender de reuniões manuais.
7. Integração com o Ciclo de Desenvolvimento
O threat modeling não deve ser um exercício único. Incorpore-o ao seu fluxo ágil:
- Sprint Planning: Antes de implementar uma nova funcionalidade, atualize o DFD e adicione ameaças relacionadas
- Code Review: Inclua o modelo de ameaças como parte do checklist de revisão. Pergunte: "Essa mudança introduz um novo fluxo de dados não modelado?"
- Auditoria: Gere relatórios de ameaças para compliance (ISO 27001, SOC 2, LGPD). O Threat Dragon exporta para PDF, Markdown e JSON
Exemplo de relatório gerado:
# Relatório de Ameaças - Sistema de Autenticação v2.1
## Ameaças Críticas
1. SQL Injection em /api/login (CWE-89)
- Risco: Crítico (20)
- Mitigação: Usar ORM com parâmetros nomeados
- Status: Em andamento
2. Exposição de tokens JWT em logs (CWE-532)
- Risco: Alto (12)
- Mitigação: Configurar log level para warning e filtrar campos sensíveis
- Status: Planejado
Mantenha os modelos atualizados conforme o sistema evolui. Uma boa prática é revisar o threat model a cada 3 meses ou sempre que uma nova funcionalidade alterar significativamente a arquitetura.
O OWASP Threat Dragon coloca o poder do threat modeling nas mãos dos desenvolvedores, com baixa barreira de entrada e integração profunda com ferramentas modernas. Comece modelando um fluxo crítico do seu sistema hoje — sua base de código (e seu time de segurança) agradecerão.
Referências
- OWASP Threat Dragon Official Website — Página oficial com download, documentação e guia de início rápido
- OWASP Threat Dragon GitHub Repository — Código-fonte, issues e exemplos de integração com CI/CD
- OWASP Threat Modeling Cheat Sheet — Guia prático sobre metodologias de threat modeling, incluindo STRIDE e DREAD
- Microsoft STRIDE Threat Modeling — Documentação oficial da Microsoft sobre a metodologia STRIDE, base para o uso no Threat Dragon
- OWASP Threat Dragon Documentation - Threat Modeling with DFD — Documentação oficial detalhada sobre diagramas de fluxo de dados e biblioteca de ameaças
- Threat Dragon: A Developer's Guide to Threat Modeling — Artigo técnico no Dev.to com exemplos práticos de modelagem e versionamento