A maioria dos threat models falha de uma de duas formas. Ou a segurança escreve-os sozinha, e descrevem um sistema que ninguém na equipa reconhece. Ou chegam tarde, e descrevem um sistema que já foi lançado.
A solução não é um template melhor. É uma sala melhor.
Quem está na sala
Produto, porque sabe para que serve a funcionalidade e o que o negócio detestaria perder. O dev lead, porque sabe como é realmente construída. Alguém da segurança, porque sabe como as coisas partem. Security champions, se os houver.
A hora
- 10 min · desenharUma funcionalidade, um quadro. Caixas para componentes, setas para dados, linhas tracejadas onde a confiança muda. Feio e rápido.
- 30 min · partirPercorrer cada seta e perguntar: quem poderia falsificar isto, alterar isto, ler isto, bloquear isto ou usá-lo para ganhar mais acesso do que devia?
- 15 min · ordenarImpacto vezes probabilidade, mais ou menos. O produto decide o que o negócio aguenta; a segurança diz quão difícil é explorar cada um.
- 5 min · criar ticketsCada ameaça que fica torna-se um ticket com um responsável. Os abuse cases vão para QA como ideias de testes.
Partir, com o STRIDE como guia
As seis letras STRIDE dão boas perguntas para cada seta: spoofing, tampering, repudiation, information disclosure, denial of service, elevation of privilege. Escreva todas as respostas, mesmo as tontas. As tontas são muitas vezes onde o bug real se esconde.
O que muda
Os developers deixam de ouvir falar de segurança pela primeira vez num relatório de pentest. O produto percebe porque é que um controlo importa. A segurança aprende como o sistema funciona de facto. E o threat model vive no repo, ao lado do código, onde é atualizado.
O que fazer na segunda-feira
- Escolha a próxima funcionalidade com um novo input externo ou um novo armazenamento de dados.
- Marque uma hora com produto, o dev lead e segurança.
- Faça commit da foto do quadro e da lista de ameaças como
docs/threat-model.md.
Onde isto fica na linha
Na torre (em desenvolvimento):