Avançado

Modelagem de ameaças

Lição 13 · Módulo 4 — Riscos e evolução

Well-Architected: SEC01-BP07

O que é modelagem de ameaças

Modelar ameaças é analisar uma representação do sistema para descobrir o que pode comprometer a sua segurança e a privacidade, e decidir o que fazer a respeito. O resultado não é um relatório para a gaveta: é um registro vivo de ameaças e mitigações, que orienta quais controles implementar.

A boa prática SEC01-BP07 pede exatamente isso: identificar ameaças, manter esse registro atualizado e priorizar mitigações para prevenir, detectar e responder. O risco de não fazer é classificado como alto.

Quando fazer

O quanto antes, de preferência na fase de design. Como acontece com bugs, ameaças encontradas cedo custam menos para corrigir: mudar um diagrama é mais barato que reescrever um serviço em produção. É o mesmo raciocínio do shift-left.

Depois, revisite o modelo sempre que houver:

  • uma mudança relevante na arquitetura (novo fluxo de dados, nova integração externa, nova conta);
  • uma mudança no cenário de ameaças (por exemplo, uma nova técnica de ataque contra algo que você usa);
  • a adoção de um serviço ou recurso novo (tema da lição 15).

As quatro perguntas

Existem vários métodos. O Well-Architected sugere começar pelo arcabouço de quatro perguntas de Adam Shostack, o mesmo adotado pelo Threat Modeling Manifesto:

  1. No que estamos trabalhando? (What are we working on?; alguns textos da AWS usam "o que estamos construindo?") — alinhar o que está sendo construído, o escopo e as suposições. Normalmente com um diagrama.
  2. O que pode dar errado? (What can go wrong?) — levantar ameaças: ações ou eventos, intencionais ou acidentais, com impacto indesejado.
  3. O que vamos fazer a respeito? (What are we going to do about it?) — definir mitigações. Inclui perguntar quem é responsável: você ou a AWS, conforme o modelo de responsabilidade compartilhada.
  4. Fizemos um bom trabalho? (Did we do a good job? — no Manifesto, good enough) — revisar o resultado e melhorar a qualidade e a velocidade dos próximos modelos.

Diagrama de fluxo de dados e limites de confiança

A forma mais comum de responder à primeira pergunta é um diagrama de fluxo de dados (DFD). Ele mostra quatro tipos de elemento: entidades externas (usuários, sistemas de terceiros), processos (uma função Lambda, um container), repositórios de dados (bucket S3, tabela DynamoDB) e os fluxos entre eles.

Sobre o diagrama, marque os limites de confiança (trust boundaries): os pontos em que o dado passa de uma zona com um nível de confiança para outra. Exemplos na AWS: internet → API Gateway; uma conta → outra conta; uma sub-rede pública → uma sub-rede privada; seu código → um serviço de terceiro. É nesses cruzamentos que a maior parte das ameaças aparece.

Anote também as suposições ("o IdP corporativo exige MFA", "o bucket só recebe tráfego da VPC") — elas delimitam o escopo e, se falharem, viram ameaças.

STRIDE com exemplos AWS

STRIDE é um mnemônico de seis categorias que ajuda a responder "o que pode dar errado?":

CategoriaPropriedade violadaExemplo na AWSMitigação típica
Spoofing (falsificação)AutenticaçãoChave de acesso vazada usada para chamar APIs como se fosse a aplicação.Roles com credenciais temporárias, MFA, federação.
Tampering (adulteração)IntegridadeAlguém altera objetos de log em um bucket S3 para apagar rastros.S3 Object Lock, validação de integridade de logs do CloudTrail.
Repudiation (repúdio)Não repúdioUma mudança em produção sem registro de quem fez.Trail da organização no CloudTrail, identidades individuais.
Information disclosureConfidencialidadeBucket com dados pessoais exposto publicamente.S3 Block Public Access, criptografia com AWS KMS, IAM Access Analyzer.
Denial of serviceDisponibilidadeInundação de requisições em uma API pública.AWS WAF com regras baseadas em taxa, throttling do API Gateway, AWS Shield.
Elevation of privilegeAutorizaçãoRole com iam:PassRole amplo usada para obter uma role mais poderosa.Menor privilégio, permissions boundaries, SCPs.

Para as mitigações do lado do cliente, use o capítulo de segurança da documentação de cada serviço: ele lista os controles disponíveis (identidade, criptografia, rede, logging).

Threat Composer

A AWS mantém o Threat Composer, ferramenta de código aberto (licença Apache-2.0) citada na própria SEC01-BP07. Ela ajuda a:

  • escrever ameaças com uma gramática de ameaças: "uma [fonte de ameaça] com [pré-requisitos] pode [ação] levando a [impacto], afetando [ativos]";
  • registrar diagramas, suposições e mitigações ligadas a cada ameaça;
  • gerar um modelo legível por pessoas e outro em JSON, versionável no Git (threat model as code);
  • apontar lacunas de qualidade e cobertura em um painel de insights.

Dá para testar na demo pública (os dados ficam no navegador) e abrir o workspace de exemplo, que modela a própria ferramenta. O roteiro desta trilha está no template de modelagem de ameaças.

Teste rápido

Uma equipe está desenhando uma API que vai receber arquivos de parceiros externos. Quando ela deve fazer o primeiro modelo de ameaças?

Um atacante consegue usar uma role com permissão ampla de iam:PassRole para ganhar acesso de administrador. Em qual categoria STRIDE isso se encaixa?

Resumo

Modelagem de ameaças responde a quatro perguntas: no que estamos trabalhando, o que pode dar errado, o que vamos fazer e se fizemos um bom trabalho. Comece no design, desenhe o fluxo de dados e os limites de confiança, use STRIDE para não esquecer categorias e mantenha o modelo vivo. Na próxima lição, como priorizar as mitigações encontradas.

Referência Well-Architected

Referências

Terminou esta lição?

Seu progresso fica salvo apenas neste navegador.