🚀 Capítulo 10: Modelagem de Ameaças (Tema: Sherlock Holmes)

NOTE

Este capítulo utiliza a temática de Sherlock Holmes para explicar a Modelagem de Ameaças. Pensar como o criminoso antes do crime acontecer é o segredo para proteger o sistema!


1. 🎯 Objetivo da Aula

Compreender o conceito de Modelagem de Ameaças (Threat Modeling) e aprender a usar a metodologia STRIDE para identificar e mitigar riscos no design do sistema.

2. 🏢 O Cenário Prático (Seu Desafio)

Sherlock Holmes entra em uma sala onde um crime está prestes a acontecer. Ele não espera o vilão agir. Ele observa as janelas abertas, as fechaduras fracas e deduz por onde o criminoso vai tentar entrar.

  • Ele pensa como o criminoso.
  • Ele prevê o ataque antes que ele aconteça.

Na Modelagem de Ameaças, nós fazemos exatamente isso com o nosso software. Antes de escrever o código, nós olhamos o desenho da arquitetura e perguntamos: “Se eu fosse um hacker, como eu tentaria quebrar esse sistema?“. Seu desafio é ser o Sherlock Holmes do seu código!


3. 🧠 Fundamentos: A Teoria Traduzida

A Modelagem de Ameaças é uma atividade de design onde identificamos potenciais ameaças à segurança e definimos contramedidas. Uma das metodologias mais famosas é o STRIDE (criada pela Microsoft).

🕵️‍♂️ O Método STRIDE (As 6 Categorias de Ameaças):

  1. Spoofing (Falsificação de Identidade): Alguém fingindo ser outro usuário ou outro sistema.
  2. Tampering (Adulteração): Alguém alterando dados no banco ou no meio do caminho.
  3. Repudiation (Repúdio): Alguém fazendo algo e depois dizendo “Não fui eu!“. (Falta de logs).
  4. Information Disclosure (Vazamento de Informação): Expor dados secretos para quem não devia.
  5. Denial of Service (Negação de Serviço): Derrubar o sistema por sobrecarga.
  6. Elevation of Privilege (Elevação de Privilégio): Um usuário comum conseguindo virar administrador.

4. 📖 Exemplo Guiado: Modelando um Login

Imagine o fluxo de login: Usuário digita senha -> Vai pela rede -> Banco verifica. Aplicando o STRIDE:

  • Spoofing: O hacker pode tentar adivinhar a senha (brute force) para fingir ser o usuário. Solução: Bloquear após 5 tentativas.
  • Tampering: O hacker pode tentar alterar a senha no meio do caminho pela rede. Solução: Usar HTTPS (Criptografia).
  • Information Disclosure: Se a senha falhar, o sistema diz “Usuário não encontrado”. Isso revela quais usuários existem no banco! Solução: Dizer apenas “Usuário ou senha incorretos”.

5. 🛠️ Prática Obrigatória 1: Aplicando o STRIDE

Diga qual categoria do STRIDE melhor descreve o risco em cada situação:

  1. O sistema de chat não guarda o histórico de quem enviou as mensagens. Um usuário enviou uma ofensa e agora diz que a conta dele foi invadida e não foi ele.
  2. O link para resetar a senha é enviado por e-mail sem criptografia e qualquer um na mesma rede Wi-Fi pode ver o link.
  3. Um usuário comum descobriu que se mudar o parâmetro admin=false para admin=true na URL, ele consegue acessar o painel de controle.

6. 🛠️ Prática Obrigatória 2: Quando fazer a Modelagem?

Se a modelagem de ameaças serve para identificar riscos no design do sistema, qual a melhor fase para realizá-la? Antes de escrever o código ou depois que o sistema já está pronto e testado? Por quê?


7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 10 Seguranca) e clique em Commit to main.
  2. Envie para a Nuvem (Push): Clique em Push origin.

8. 📂 Estrutura de Pastas

mod_12_desenvolvimento_seguro/
├── capitulos/
│   ├── capitulo_10_modelagem.md
│   └── codigos/
│       └── cap10/
│           └── stride_analise.txt

💡 Checkpoint de Lógica

Modelagem de ameaças não é algo que você faz uma vez e esquece. Toda vez que uma funcionalidade nova e grande for adicionada ao sistema, uma nova modelagem deve ser feita!

10. 🔥 Desafio de Fixação

Pesquise sobre o jogo de cartas Elevation of Privilege, criado pela Microsoft para ajudar equipes a fazerem modelagem de ameaças jogando!

🔑 Gabarito de Código/Fórmulas

Gabarito da Prática 1:

  1. Repudiation (O usuário nega a ação e não há provas/logs suficientes).
  2. Information Disclosure (Exposição de dados sensíveis na rede).
  3. Elevation of Privilege (Usuário comum virando admin).

Capitulo Anterior | Proximo Capitulo