
Modélisateur de menaces IaC avec les frameworks STRIDE, MITRE ATT&CK et PASTA. Support pour REST API, GraphQL et Docker pour Terraform, CloudFormation et Kubernetes.
Modélisateur de menaces IaC statique qui analyse les manifests Terraform, CloudFormation et Kubernetes et produit des rapports structurés de modélisation des menaces en utilisant les frameworks STRIDE, MITRE ATT&CK ou PASTA. Aucun appel réseau, aucune information d'identification cloud, entièrement hors ligne. Fonctionne en CLI, API REST ou service conteneurisé.
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
Serveur API REST :
threatmap serve --host 0.0.0.0 --port 8000
# Ou via Docker :
docker run -p 8000:8000 bogdynn/threatmap:2.1.0
# Points de terminaison API : /health, /version, /rules, /analyze
API GraphQL :
docker run -p 8000:8000 bogdynn/threatmap:2.1.0
# Point de terminaison GraphQL : http://localhost:8000/graphql
# Requêtes : health, version, rules
# Mutations : analyze(content, filename, framework)
| Format | Fournisseur | Extension |
|---|---|---|
| Terraform HCL | AWS, Azure, GCP | .tf |
| CloudFormation | AWS | .yaml, .yml, .json |
| Manifests Kubernetes | Kubernetes | .yaml, .yml |
Installer depuis PyPI :
pip install threatmap
Ou pour le développement local :
git clone https://github.com/bogdanticu88/threatmap.git
cd threatmap
pip install -e .
Analyser un répertoire et afficher un rapport Markdown sur la sortie standard :
threatmap scan ./terraform/
Analyser plusieurs chemins et écrire un rapport JSON dans un fichier :
threatmap scan ./terraform/ ./k8s/ ./cloudformation/ --format json --output report.json
Générer un rapport HTML interactif ou un rapport SARIF pour GitHub Security :
threatmap scan ./infra/ --format html --output report.html
threatmap scan ./infra/ --format sarif --output report.sarif
Porte CI — code de sortie 1 si une menace CRITIQUE ou HAUTE est trouvée :
threatmap scan ./infra/ --fail-on HIGH --output threat-report.md
Afficher uniquement un tableau récapitulatif dans le terminal, sans écrire de rapport complet :
threatmap scan ./infra/ --summary
Utiliser des indicateurs de sévérité ASCII uniquement (sans émojis) pour les environnements ne supportant pas Unicode :
threatmap scan ./infra/ --ascii --output report.md
Analyser en utilisant différents cadres de modélisation des menaces :
# STRIDE (par défaut)
threatmap scan ./infra/ --framework stride
# MITRE ATT&CK (mappe vers tactiques et techniques)
threatmap scan ./infra/ --framework mitre --format json
# PASTA (modélisation des menaces centrée sur les actifs)
threatmap scan ./infra/ --framework pasta --format json
STRIDE (73 règles)
MITRE ATT&CK (11 règles, 14 tactiques)
PASTA (12 règles, centré sur les actifs)
L'exécution de threatmap scan ./examples --output report.md sur les exemples fournis produit un rapport Markdown complet. Voici un extrait représentatif.
| ID | Sévérité | Catégorie STRIDE | Ressource | Description |
|---|---|---|---|---|
| T-001 | 🔴 CRITIQUE | Divulgation d'informations | AuditBucket | Le bucket S3 'AuditBucket' n'a pas de bloc d'accès public configuré — le bucket peut être accessible publiquement. |
| T-002 | 🔴 CRITIQUE | Usurpation | WebSecurityGroup | Le groupe de sécurité 'WebSecurityGroup' expose SSH/RDP (port 22/3389) à 0.0.0.0/0. |
| T-003 | 🔴 CRITIQUE | Élévation de privilèges | app_contributor | L'attribution de rôle 'app_contributor' accorde le rôle privilégié 'Contributeur'. |
| T-006 | 🟠 HAUTE | Divulgation d'informations | AuditBucket | Le bucket S3 'AuditBucket' n'a pas de chiffrement côté serveur configuré. |
| T-008 | 🟠 HAUTE | Élévation de privilèges | api | Le conteneur 'api' dans le déploiement 'api' peut s'exécuter en tant que root (pas de runAsNonRoot=true ou runAsUser=0). |
| T-011 | 🟠 HAUTE | Élévation de privilèges | web | L'instance EC2 'web' autorise IMDSv1 — le service de métadonnées accessible sans jetons de session, permettant le vol d'identifiants basé sur SSRF. |
### T-002 — Usurpation (CRITIQUE)
Ressource : AWS::EC2::SecurityGroup.WebSecurityGroup
Propriété : ingress.ssh_rdp_open
Constat : Le groupe de sécurité 'WebSecurityGroup' expose SSH/RDP (port 22/3389) à 0.0.0.0/0.
Atténuation : Supprimer l'accès SSH/RDP public. Utiliser AWS Systems Manager Session Manager
ou un bastion avec restrictions IP.