Threat modeling clássico (STRIDE, PASTA) dá 3 dias de workshop. Squad de 4 pessoas não sobrevive a isso. Este é um framework de 1 hora, feito uma vez por trimestre, que resolve 80% do valor de threat modeling profissional.
Threat modeling faz diferença real. Mas frameworks clássicos são pesados demais pra squad de 4-8 pessoas de startup. Este é o framework enxuto que a Varredura recomenda: 1 hora, uma vez por trimestre.
Quando rodar
- No começo de projeto grande (feature nova que muda arquitetura).
- Antes de subir para produção pela primeira vez.
- Trimestralmente em produtos maduros.
- Depois de incidente relevante.
Framework de 4 perguntas
Em 1 hora, o time responde:
1. O que estamos construindo? (10 min)
Desenha o diagrama num quadro branco:
- Componentes (services, DBs, caches, filas).
- Fronteiras de confiança (o que é público, o que é interno).
- Dados que fluem (o que trafega em cada seta).
Nada elaborado. Rabisco de quadro branco basta.
2. O que pode dar errado? (30 min)
Para cada componente e fluxo, o time cita 2-3 formas de "dar errado". Use STRIDE como cheat sheet:
- Spoofing (fingir ser outro).
- Tampering (alterar dado em trânsito ou repouso).
- Repudiation (negar que fez).
- Information disclosure (vazar).
- Denial of service (derrubar).
- Elevation of privilege (ganhar acesso além do permitido).
Só puxa a categoria que faz sentido. Não perde tempo em todas.
3. O que vamos fazer? (15 min)
Para cada risco listado:
- Aceitar: documenta e segue. Ex: risco baixíssimo.
- Mitigar: vira ticket com prazo.
- Transferir: cobre por seguro ou terceiro.
- Evitar: repensa a feature.
Anti-padrão comum
- Fazer só na cabeça de uma pessoa. Precisa ser conversa do time.
- Documento de 30 páginas ninguém lê depois. Rabisco + tickets no Jira/Linear basta.
- Não voltar depois. Trimestral, sério.
Saída esperada
- Diagrama no quadro branco fotografado no Notion.
- 3-8 tickets criados no backlog com prazo.
- 1-2 riscos aceitos com documentação de por quê.
Exemplo real (SaaS de 10 pessoas)
1 hora em outubro. Diagrama de 6 componentes. STRIDE aplicado.
Riscos identificados:
- Info disclosure em endpoint export (não tinha rate limit). → Ticket com prazo 1 semana.
- Spoofing em webhook (não valida assinatura). → Ticket com prazo 2 semanas.
- Elevation via API key compartilhada entre ambientes. → Ticket com prazo 3 dias.
- DoS em endpoint de busca (query pesada). → Aceito por 3 meses, revisar próximo threat model.
Tempo total investido: 1h de squad + 3 dias de correção = risco P0 evitado.
Ferramentas úteis
- Threat Dragon (OWASP): free, web-based, opcional.
- draw.io / Excalidraw: pra formalizar diagrama depois.
- Só Notion + foto: também funciona.
TL;DR
- 1h por trimestre.
- 4 perguntas.
- STRIDE como cheat sheet, não bíblia.
- Saída: tickets + diagrama.
- Ligue com o backlog do trimestre.
Depois do threat model, a Varredura testa contra os vetores identificados. Ver como.
Sua app em produção passa por essa análise?
Rode uma varredura autônoma em ~60 segundos. Sem cadastro.