aulify · Mini-Projecto
UC UC02836 · T. Desenv. Software
Versão · Aluno
Mini-Projecto · Auditoria e correcção de app vulnerável
Encontrar e corrigir vulnerabilidades reais
Contexto
O professor entrega a cada par/trio uma mini-app Python vulnerável (~200 linhas) construída intencionalmente com várias vulnerabilidades. A missão é:
- Encontrar todas as vulnerabilidades.
- Documentar cada uma (tipo, severidade, demonstração de exploit).
- Corrigir o código.
- Verificar que correcções resolveram sem partir funcionalidades.
Requisitos
Funcionais
- Identificar mín. 8 vulnerabilidades distintas.
- Para cada: tipo OWASP, severidade (alta/média/baixa), exploit demonstrável, correcção.
- Submeter PR com todas as correcções.
- Relatório de auditoria final.
Não-funcionais
- Não introduzir novas vulnerabilidades.
- App deve continuar a funcionar.
- Pelo menos 3 testes pytest que verificam as correcções.
Fases
Fase 1 · 1h
Inspecção
- Ler todo o código.
- Anotar linhas suspeitas.
- Tentar identificar tipos OWASP.
Lista inicial de suspeitas (mín. 8 items).
Fase 2 · 1.5h
Demonstrar exploits
- Confirmar cada vulnerabilidade com exploit real.
- Curl, Burp Suite, browser dev tools.
- Documentar payload usado.
Capturas/screenshots de cada exploit + payload.
Fase 3 · 1.5h
Correcções
- Para cada vulnerabilidade, escrever correcção.
- Commit separado por vulnerabilidade ("fix: SQL injection in login").
- Testar que correcção funciona e não partiu nada.
Branch com commits descritivos.
Fase 4 · 0.5h
Testes
- Escrever 3+ testes pytest que verificam as correcções.
tests/test_security.py.
Fase 5 · 0.5h
Relatório
- Compilar findings num relatório de auditoria (3-5 páginas).
- Estrutura: sumário executivo, lista de vulnerabilidades, correcções, recomendações futuras.
auditoria.md + apresentação curta (5 min).
Critérios de avaliação
| Item | Peso |
|---|---|
| Vulnerabilidades encontradas | 25% |
| Exploits demonstrados | 20% |
| Correcções correctas | 25% |
| Não introduzir novos bugs | 10% |
| Testes pytest | 10% |
| Relatório claro | 10% |
Reflexão
Em meia página: que vulnerabilidade te surpreendeu mais? Que difícil é hoje atacar uma app moderna comparado com 10 anos atrás? Como aplicarias o que aprendeste ao teu próprio código futuro?