🚀 Capítulo 12: Análise Dinâmica de Segurança (DAST) (Tema: Independence Day)
NOTE
Este capítulo utiliza a temática de Independence Day para explicar o DAST. Para vencer o inimigo, precisamos atacar o escudo deles enquanto ele está ativado e funcionando!
1. 🎯 Objetivo da Aula
Compreender o que é DAST (Dynamic Application Security Testing), entendendo como ele testa o sistema em execução simulando ataques externos (caixa preta).
2. 🏢 O Cenário Prático (Seu Desafio)
No filme Independence Day, naves alienígenas gigantescas atacam a Terra. Elas possuem um escudo de força indestrutível.
- Os cientistas não têm acesso ao “código-fonte” da nave alienígena (não podem usar SAST).
- Eles precisam testar as defesas da nave em tempo real, atirando nela e vendo como ela reage!
No desenvolvimento de software, o DAST faz exatamente isso. Ele não lê o seu código. Ele espera o sistema estar rodando (em um ambiente de teste) e começa a “atirar” nele: envia tentativas de SQL Injection, XSS e outras pragas para ver se o sistema se defende ou se o escudo cai! Seu desafio é testar as defesas da sua nave!
🧠 Fundamentos: A Teoria Traduzida
DAST (Dynamic Application Security Testing) é um método de teste que analisa a aplicação enquanto ela está sendo executada.
📦 Teste de Caixa Preta (Black Box):
O DAST não sabe em qual linguagem o sistema foi escrito e nem como o banco de dados funciona. Ele apenas vê a interface externa (URLs, formulários, APIs) e interage com ela como se fosse um hacker real.
🆚 SAST vs DAST:
- SAST (Estático): Lê o código-fonte parado. Encontra o erro na linha X do arquivo Y. (Visão de dentro).
- DAST (Dinâmico): Ataca o sistema rodando. Encontra o erro na URL
site.com/busca. (Visão de fora).
⚖️ Prós e Contras do DAST:
- Prós: Encontra falhas que o SAST não pega (como erros de configuração do servidor ou problemas de autenticação). Não gera falsos positivos de código.
- Contras: É lento (pode demorar horas). Só pode ser executado mais tarde no projeto (quando o sistema já consegue rodar).
4. 📖 Exemplo Guiado: O Ataque do Robô DAST
Uma ferramenta de DAST (como o OWASP ZAP) funciona assim:
- Você dá a URL do seu site de testes para ela.
- O robô “rasteja” (crawl) pelo site encontrando todas as páginas e formulários.
- O robô tenta preencher os campos com códigos maliciosos (Ex: Injetando scripts de XSS).
- Se a página responder de volta mostrando o script sendo executado, o DAST gera o alerta: “⚠️ Vulnerabilidade XSS encontrada na página de busca!“.
5. 🛠️ Prática Obrigatória 1: SAST ou DAST?
Diga qual ferramenta (SAST ou DAST) seria capaz de encontrar o problema em cada situação:
- O programador esqueceu de colocar uma regra de segurança no arquivo de configuração do servidor Nginx, permitindo que qualquer um veja os arquivos da pasta raiz.
- O programador escreveu uma função de login usando concatenação direta de strings no SQL (vulnerável a SQL Injection).
6. 🛠️ Prática Obrigatória 2: O Perigo em Produção
Por que o DAST NUNCA deve ser executado diretamente no site de produção (o site que os clientes reais usam todo dia)? O que aconteceria se o robô do DAST tentasse preencher um formulário de “Excluir Conta” para testar se ele funciona?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 12 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_12_dast.md
│ └── codigos/
│ └── cap12/
│ └── zap_scan_results.txt💡 Checkpoint de Lógica
O ideal é usar os dois! O SAST ajuda o programador a codificar melhor no dia a dia. O DAST garante que, quando tudo estiver junto e rodando no servidor, o sistema continue seguro.
10. 🔥 Desafio de Fixação
Pesquise sobre a ferramenta gratuita OWASP ZAP (Zed Attack Proxy), que é uma das ferramentas de DAST mais usadas no mundo.
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- DAST (O SAST só lê o código da aplicação, ele não vê a configuração do servidor onde ela está rodando. O DAST testa o comportamento real do servidor).
- SAST (Ele lê a linha de código e já acusa o erro antes mesmo de rodar). Nota: O DAST também poderia achar se tentasse atacar o campo, mas o SAST acha mais cedo!