pular para o conteúdo
voltar ao mapa
prática
etapa: source
3 min de leitura

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.

STRIDEOWASP Threat DragonMicrosoft Threat Modeling ToolpytmIriusRisk

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.

tm.py - exemplo com pytmpython
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 STRIDE

Como 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.

SASTAnálise estática: examina o código sem executar. Acha por análise de fluxo, não por adivinhação.ver no glossário →DASTTeste dinâmico: ataca a aplicação rodando, de fora, em caixa-preta.ver no glossário →SCAAnálise de composição: inventaria dependências de terceiros e cruza com CVEs conhecidas.ver no glossário →DFDdiagrama de fluxo de dadosDesenho de atores, processos, armazenamentos e fluxos de um sistema, com as fronteiras de confiança marcadas. É a entrada do threat modeling: as ameaças aparecem onde um fluxo cruza uma fronteira.ver no glossário →Fronteira de confiançatrust boundaryLinha onde muda o nível de confiança dos dados ou de quem os envia (internet para VPC, serviço para banco, usuário para admin). Tudo que a cruza deve ser autenticado, autorizado e validado.ver no glossário →STRIDEMnemônico de seis categorias de ameaça (Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of privilege) usado como checklist ao percorrer um diagrama de fluxo de dados.ver no glossário →

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

Estude antes

teste o que entendeu

Carregando perguntas…