Threat modeling - pensar como o atacante antes de codar
Modelagem de ameaças é a conversa estruturada que descobre o que pode dar errado enquanto ainda é barato corrigir: no desenho, não no pentest.
O que é
Threat modeling é o exercício de olhar para um sistema (ou uma feature) e perguntar, de forma sistemática, o que pode dar errado, quem poderia causar isso e o que fazemos a respeito. Ele acontece antes ou durante o desenho, quando mudar uma decisão custa uma conversa e não uma sprint inteira.
, e encontram defeitos que já existem no código ou no ambiente. O threat model encontra defeitos de projeto: o serviço que confia em um header que o cliente controla, o fluxo de reset de senha que vaza se o e-mail existe, o bucket que mistura dados de tenants. Nenhum scanner enxerga isso porque nenhuma linha de código está "errada".
As quatro perguntas
O método mais simples cabe em quatro perguntas, repetidas a cada mudança relevante de arquitetura:
- No que estamos trabalhando? Um (DFD) com atores, processos, armazenamentos e fronteiras de confiança.
- O que pode dar errado? Percorrer cada elemento e cada fluxo que cruza uma procurando ameaças ( ajuda aqui).
- O que vamos fazer a respeito? Para cada ameaça: mitigar, eliminar, transferir ou aceitar, com um dono e uma decisão registrada.
- Fizemos um bom trabalho? Revisar o modelo depois do release e depois de cada incidente, porque o sistema muda e o modelo envelhece.
STRIDE: um checklist de ameaças
STRIDE é um mnemônico da Microsoft que associa cada letra a uma propriedade de segurança violada. Ao olhar um fluxo no diagrama, você pergunta se cada uma das seis categorias se aplica:
- Spoofing (falsificação de identidade) viola a autenticidade: alguém se passa por outro usuário ou serviço.
- Tampering (adulteração) viola a integridade: dados ou código alterados em trânsito ou em repouso.
- Repudiation (repúdio) viola o não-repúdio: não há log para provar quem fez o quê.
- Information disclosure (vazamento) viola a confidencialidade: dados expostos a quem não deveria ver.
- Denial of service (negação de serviço) viola a disponibilidade: o serviço é esgotado ou derrubado.
- Elevation of privilege (elevação de privilégio) viola a autorização: um usuário comum passa a agir como admin.
Threat model como código
O modelo não precisa viver em um slide esquecido. Ferramentas como pytm descrevem o sistema em código, geram o DFD e listam as ameaças aplicáveis. Versionado junto do repositório, o modelo passa por code review e muda no mesmo PR que muda a arquitetura.
from pytm import TM, Server, Datastore, Dataflow, Boundary, Actor
tm = TM("Checkout API")
internet = Boundary("Internet")
vpc = Boundary("VPC privada")
user = Actor("Cliente", inBoundary=internet)
api = Server("API de checkout", inBoundary=vpc)
db = Datastore("Pedidos", inBoundary=vpc, isEncrypted=True)
Dataflow(user, api, "POST /checkout (HTTPS)", isEncrypted=True)
Dataflow(api, db, "INSERT pedido")
tm.process() # gera o DFD e a lista de ameaças STRIDEComo encaixar na esteira
O gatilho mais prático é o mesmo do code review: uma feature nova que toca autenticação, dados sensíveis, um serviço externo ou uma fronteira de confiança pede meia hora de threat model antes do primeiro commit. Para o resto, uma revisão rápida de ameaças no template do PR já cobre.
As ameaças viram itens rastreáveis: cada mitigação aponta para um teste, uma regra de SAST ou um gate da esteira. Assim o threat model deixa de ser documento e passa a gerar verificações que rodam sozinhas, e o mapa fecha o ciclo: o desenho informa o que o SAST, o DAST e os gates precisam checar.
conexões no mapa
- Shift-leftcomeça no designThreat modeling - pensar como o atacante antes de codar
- Threat modeling - pensar como o atacante antes de codardefine o que testarSAST
- Threat modeling - pensar como o atacante antes de codarvira gateDevSecOps
atualizado em 14/10/2026 · fontes para aprofundar · reportar erro
em outros domínios
- Gestão de riscos de segurançagrco modelo de ameaças alimenta o registro de riscos
- A06 Insecure Designowaspo método que encontra a falha antes do código
- Zero-trust - modelo de confiançacloudsecdefine as fronteiras de confiança
- Guardrails - filtros de entrada e saídaai-agentsmapeia o que o agente não pode fazer
Estude antes
teste o que entendeu
Carregando perguntas…