Esqueça de Desenhar a Arquitetura no Paint: Introdução ao OWASP Threat Dragon
Volte no tempo e pense na última vez que a equipe de segurança pediu para você "criar um modelo de ameaças". Na maioria das vezes, você abriu o Miro ou Draw.io, montou algumas caixas com setas e tentou lembrar do acrônimo STRIDE. O resultado foi um diagrama bonito que ficou desatualizado uma semana após o lançamento e acabou acumulando poeira no Wiki corporativo.
Os desenvolvedores da OWASP reconheceram esse problema há muito tempo e criaram o Threat Dragon. É uma ferramenta de código aberto que ajuda você a desenhar diagramas de fluxo de dados e associar riscos diretamente aos elementos da arquitetura.
O que o Threat Dragon Pode Fazer
O projeto foi fundado por Mike Goodwin em 2015 e agora tem status oficial de Produção da OWASP. Isso significa que a ferramenta é ativamente mantida, não abandonada após o primeiro commit.
O objetivo da ferramenta é tornar a modelagem de ameaças acessível para equipes de desenvolvimento comuns, não apenas para especialistas dedicados em Arquitetura Segura.
Aqui estão os principais recursos que valem a pena conhecer no projeto:
- Criação de Diagramas de Fluxo de Dados (DFD). Você organiza processos, armazenamentos de dados, atores externos e limites de confiança em uma tela.
- Geração e descrição de ameaças. Com base nos elementos do diagrama, você pode compilar rapidamente uma lista de riscos potenciais e associar etapas específicas de remediação a eles.
- Integração com repositórios Git. A versão web pode autorizar via GitHub, GitLab ou Bitbucket e salvar modelos de ameaças diretamente no código do seu projeto como arquivos JSON.
- Capacidade offline. Se as políticas corporativas proibirem o envio de diagramas de arquitetura para serviços externos, existem builds desktop autônomas disponíveis.
Por Baixo dos Panos
A primeira versão original era difícil de usar porque o frontend foi escrito em AngularJS 1.x. Devido à obsolescência do framework, os autores tomaram a decisão lógica de reescrever completamente o projeto.
A versão dois do Threat Dragon é construída em uma stack moderna: Vue.js para a interface do usuário e Node.js para o backend. O repositório é claramente dividido em dois diretórios: td.server e td.vue. Se você quiser adicionar sua própria regra personalizada ou ajustar a interface para suas necessidades, entender a estrutura não será difícil.
Início Rápido
A maneira mais fácil de experimentar a ferramenta localmente é executar um container Docker pronto para uso. Literalmente leva um comando:
docker pull threatdragon/owasp-threat-dragon:stable
docker run -it --rm -p 8080:3000 threatdragon/owasp-threat-dragon:stable
Depois disso, a interface web estará disponível em http://localhost:8080/.
Se você preferir uma compilação tradicional a partir do código-fonte, os processos também são diretos:
git clone https://github.com/owasp/threat-dragon.git
cd threat-dragon
npm install
npm start
Para funcionalidade completa da versão web com GitHub ou GitLab, você precisará registrar um aplicativo OAuth nas configurações do seu sistema de controle de versão e passar as chaves via variáveis para o arquivo .env. O repositório tem instruções detalhadas para cada serviço popular.
Para Quem Este Projeto Será Útil
O Threat Dragon não substituirá uma auditoria completa de segurança, e sua interface parece bastante austera. Mas se sua equipe precisa implementar práticas DevSecOps no início da fase de design, é uma excelente alternativa a sistemas pagos volumosos.
A ferramenta é ideal para documentar decisões arquiteturais diretamente no repositório do projeto. Todos os diagramas são armazenados junto com o código, facilitando a atualização durante refatorações e a atualização durante revisões arquiteturais planejadas.
Projetos relacionados