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:

  1. Desenvolvedor A cria o modelo inicial e faz commit
  2. Desenvolvedor B abre uma issue no GitHub: "Adicionar ameaças para novo endpoint de pagamento"
  3. Desenvolvedor A edita o modelo, adiciona as ameaças e cria um Pull Request
  4. Revisor analisa as alterações no diff do JSON e aprova
  5. 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