Python framework para Modelagem de Ameaça
Link da imagem e texto ➡️ https://arstechnica.com/information-technology/2017/07/how-i-learned-to-stop-worrying-mostly-and-love-my-threat-model/
Começo o texto com essa imagem e texto muito bom, mostrando como devemos realizar a modelagem de ameaça! 🦇
Esse é um assunto muito recorrente quando trabalhamos com AppSec.
Devemos entender sempre o fluxo dos dados, como também, fazer as perguntas certas para montar o que entendemos como arquitetura de segurança. Assim, podemos tornar a aplicação mais segura desde o design do software, quanto ao longo do tempo também. Diminuindo dessa maneira, qualquer tipo de fronteira.
Assim, precisamos criar um diagrama de fluxo. Existem várias ferramentas que fazem isso, desde Irius Risk ou o diagrams.net (conforme imagem abaixo).
No entanto, vale conhecer esse projeto disponível no GitHub!
Aqui, vocês podem ver a apresentação detalhada na conferência da OWASP:
De maneira bemresumida, foi desenvolvido um projeto em Python, por meio de orientação a objetos. Então, podemos escrever comandos que criam figuras sobre o que seria a modelagem de ameaças de um sistema!
Uma maneira muito prática e que facilita, sem precisar desenhar diagramas.
Assim podemos escrever e colocar diferentes camadas sobre uma aplicação. Além disso, o projeto conta com ampla quantidade de ameaças/vulnerabilidades que podem ser mostradas nessas figuras.
Um exemplo do código aqui:
my_lambda.levels = [1, 2]
Caso queiram rodar o projeto, é bastante simples! É possível utilizar o Dockerfile disponível no repositório ou utilizá-lo localmente.
Para rodar localmente, no MacOS, é necessário instalar 3 bibliotecas:
brew install graphvizbrew install makebrew install pandoc
Esse segundo comando é necessário caso queira rodar utilizando o Docker. No entanto, é necessário trocar a imagem para "python:3-alpine" no Dockerfile.
Quando for rodar o arquivo utilizando o make, lembre-se de rodar da seguinte maneira:
sudo gmake image
Caso queira rodar localmente, apenas o primeiro comando será necessário 😊
Caso queira rodar o exemplo disponível, utilize:
./tm.py — dfd | dot -Tpng > sample.png
Assim, será possível gerar uma imagem, conforme aqui:
Facilitando muito todo o desenho!
Um outro ponto super interessante que o desenvolvedor deixou, foi uma documentação super clara que é possível encontrar na pasta:
pytm/docs/pytm/index.html
Assim, é possível entender todos os objetos disponíveis para o desenvolvimento da modelagem de ameaças. Como também, possui um exemplo com códigos para ilustrar!
No final, podemos gerar um report completo com todas as possíveis vulnerabilidades no sistema:
./tm.py — report docs/basic_template.md | pandoc -f markdown -t html > report.html
Podemos ver o output no arquivo report.html . Além disso, é possível adicionar seu próprio json de vulnerabilidades que você conhece
➡️ /pytm/pytm/threatlib/threats.json
Espero que vocês também tenham gostado dessa dica e que vocês possam utilizar utilizar no trabalho de vocês. Achei uma ferramenta muito boa e que facilita bastante no dia a dia 💜