🚀 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):
- Spoofing (Falsificação de Identidade): Alguém fingindo ser outro usuário ou outro sistema.
- Tampering (Adulteração): Alguém alterando dados no banco ou no meio do caminho.
- Repudiation (Repúdio): Alguém fazendo algo e depois dizendo “Não fui eu!“. (Falta de logs).
- Information Disclosure (Vazamento de Informação): Expor dados secretos para quem não devia.
- Denial of Service (Negação de Serviço): Derrubar o sistema por sobrecarga.
- 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:
- 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.
- O link para resetar a senha é enviado por e-mail sem criptografia e qualquer um na mesma rede Wi-Fi pode ver o link.
- Um usuário comum descobriu que se mudar o parâmetro
admin=falseparaadmin=truena 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)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 10 Seguranca) e clique em Commit to main. - 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:
- Repudiation (O usuário nega a ação e não há provas/logs suficientes).
- Information Disclosure (Exposição de dados sensíveis na rede).
- Elevation of Privilege (Usuário comum virando admin).