
Modelador de ameaças de IaC com os frameworks STRIDE, MITRE ATT&CK e PASTA. Suporte a REST API, GraphQL e Docker para Terraform, CloudFormation e Kubernetes.
Modelador de ameaças IaC estático que analisa manifestos Terraform, CloudFormation e Kubernetes e produz relatórios estruturados de modelagem de ameaças usando os frameworks STRIDE, MITRE ATT&CK ou PASTA. Sem chamadas de rede, sem credenciais de nuvem, totalmente offline. Funciona como CLI, API REST ou serviço containerizado.
CLI:
pip install threatmap
threatmap scan ./examples --output report.md --fail-on HIGH
Docker:
docker run -v $(pwd):/workspace bogdynn/threatmap:2.1.0 threatmap scan /workspace --output /workspace/report.md
Servidor de API REST:
threatmap serve --host 0.0.0.0 --port 8000
# Ou via Docker:
docker run -p 8000:8000 bogdynn/threatmap:2.1.0
# Endpoints da API: /health, /version, /rules, /analyze
API GraphQL:
docker run -p 8000:8000 bogdynn/threatmap:2.1.0
# Endpoint GraphQL: http://localhost:8000/graphql
# Consultas: health, version, rules
# Mutações: analyze(content, filename, framework)
| Formato | Provedor | Extensão |
|---|---|---|
| Terraform HCL | AWS, Azure, GCP | .tf |
| CloudFormation | AWS | .yaml, .yml, .json |
| Manifestos Kubernetes | Kubernetes | .yaml, .yml |
Instale a partir do PyPI:
pip install threatmap
Ou para desenvolvimento local:
git clone https://github.com/bogdanticu88/threatmap.git
cd threatmap
pip install -e .
Digitalize um diretório e imprima um relatório Markdown na saída padrão:
threatmap scan ./terraform/
Digitalize múltiplos caminhos e escreva um relatório JSON em um arquivo:
threatmap scan ./terraform/ ./k8s/ ./cloudformation/ --format json --output report.json
Gere um relatório HTML interativo ou um relatório SARIF para o GitHub Security:
threatmap scan ./infra/ --format html --output report.html
threatmap scan ./infra/ --format sarif --output report.sarif
Gate de CI — código de saída 1 se qualquer ameaça CRÍTICA ou ALTA for encontrada:
threatmap scan ./infra/ --fail-on HIGH --output threat-report.md
Imprima apenas uma tabela de resumo no terminal, sem gerar um relatório completo:
threatmap scan ./infra/ --summary
Use indicadores de severidade somente ASCII (sem emojis) para ambientes que não suportam Unicode:
threatmap scan ./infra/ --ascii --output report.md
Analise usando diferentes frameworks de modelagem de ameaças:
# STRIDE (padrão)
threatmap scan ./infra/ --framework stride
# MITRE ATT&CK (mapeia para táticas e técnicas)
threatmap scan ./infra/ --framework mitre --format json
# PASTA (modelagem de ameaças centrada em ativos)
threatmap scan ./infra/ --framework pasta --format json
STRIDE (73 regras)
MITRE ATT&CK (11 regras, 14 táticas)
PASTA (12 regras, centrado em ativos)
Executar threatmap scan ./examples --output report.md contra os exemplos incluídos produz um relatório Markdown completo. Abaixo está um trecho representativo.
| ID | Severidade | Categoria STRIDE | Recurso | Descrição |
|---|---|---|---|---|
| T-001 | 🔴 CRÍTICA | Divulgação de Informação | AuditBucket | Bucket S3 'AuditBucket' não possui bloqueio de acesso público configurado — o bucket pode estar acessível publicamente. |
| T-002 | 🔴 CRÍTICA | Spoofing | WebSecurityGroup | Grupo de segurança 'WebSecurityGroup' expõe SSH/RDP (porta 22/3389) para 0.0.0.0/0. |
| T-003 | 🔴 CRÍTICA | Elevação de Privilégio | app_contributor | Atribuição de função 'app_contributor' concede a função privilegiada 'Contributor'. |
| T-006 | 🟠 ALTA | Divulgação de Informação | AuditBucket | Bucket S3 'AuditBucket' não possui criptografia do lado do servidor configurada. |
| T-008 | 🟠 ALTA | Elevação de Privilégio | api | Contêiner 'api' no Deployment 'api' pode ser executado como root (sem runAsNonRoot=true ou runAsUser=0). |
| T-011 | 🟠 ALTA | Elevação de Privilégio | web | Instância EC2 'web' permite IMDSv1 — serviço de metadados acessível sem tokens de sessão, possibilitando roubo de credenciais via SSRF. |
### T-002 — Spoofing (CRÍTICA)
Recurso: AWS::EC2::SecurityGroup.WebSecurityGroup
Propriedade: ingress.ssh_rdp_open
Descoberta: Grupo de segurança 'WebSecurityGroup' expõe SSH/RDP (porta 22/3389) para 0.0.0.0/0.
Mitigação: Remova o acesso público SSH/RDP. Use o AWS Systems Manager Session Manager
ou um bastion host com restrições de IP.
O relatório anexa um diagrama flowchart LR Mermaid. Os nós são coloridos pela severidade do pior caso (🔴 vermelho = CRÍTICA, 🟠 laranja = ALTA). Cole o bloco em qualquer renderizador Mermaid ou visualize diretamente no GitHub.