
IaC-Bedrohungsmodellierer mit STRIDE, MITRE ATT&CK und PASTA-Frameworks. REST-API-, GraphQL- und Docker-Unterstützung für Terraform, CloudFormation und Kubernetes.
Statischer IaC-Bedrohungsmodellierer, der Terraform-, CloudFormation- und Kubernetes-Manifeste analysiert und strukturierte Bedrohungsmodellberichte unter Verwendung der Frameworks STRIDE, MITRE ATT&CK oder PASTA erstellt. Keine Netzwerkaufrufe, keine Cloud-Anmeldedaten, vollständig offline. Läuft als CLI, REST-API oder containerisierter Dienst.
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
REST-API-Server:
threatmap serve --host 0.0.0.0 --port 8000
# Oder via Docker:
docker run -p 8000:8000 bogdynn/threatmap:2.1.0
# API-Endpunkte: /health, /version, /rules, /analyze
GraphQL-API:
docker run -p 8000:8000 bogdynn/threatmap:2.1.0
# GraphQL-Endpunkt: http://localhost:8000/graphql
# Queries: health, version, rules
# Mutationen: analyze(content, filename, framework)
| Format | Anbieter | Erweiterung |
|---|---|---|
| Terraform HCL | AWS, Azure, GCP | .tf |
| CloudFormation | AWS | .yaml, .yml, .json |
| Kubernetes-Manifeste | Kubernetes | .yaml, .yml |
Installation von PyPI:
pip install threatmap
Oder für die lokale Entwicklung:
git clone https://github.com/bogdanticu88/threatmap.git
cd threatmap
pip install -e .
Ein Verzeichnis scannen und einen Markdown-Bericht auf der Standardausgabe ausgeben:
threatmap scan ./terraform/
Mehrere Pfade scannen und einen JSON-Bericht in eine Datei schreiben:
threatmap scan ./terraform/ ./k8s/ ./cloudformation/ --format json --output report.json
Einen interaktiven HTML-Bericht oder einen SARIF-Bericht für GitHub Security erstellen:
threatmap scan ./infra/ --format html --output report.html
threatmap scan ./infra/ --format sarif --output report.sarif
CI-Gate – Exit-Code 1, wenn eine KRITISCHE oder HOHE Bedrohung gefunden wird:
threatmap scan ./infra/ --fail-on HIGH --output threat-report.md
Nur eine terminale Zusammenfassungstabelle ausgeben, ohne einen vollständigen Bericht zu schreiben:
threatmap scan ./infra/ --summary
Nur ASCII-Schweregrad-Indikatoren (keine Emojis) in Umgebungen verwenden, die Unicode nicht unterstützen:
threatmap scan ./infra/ --ascii --output report.md
Analyse mit verschiedenen Bedrohungsmodellierungs-Frameworks:
# STRIDE (Standard)
threatmap scan ./infra/ --framework stride
# MITRE ATT&CK (wird auf Taktiken und Techniken abgebildet)
threatmap scan ./infra/ --framework mitre --format json
# PASTA (asset-zentrierte Bedrohungsmodellierung)
threatmap scan ./infra/ --framework pasta --format json
STRIDE (73 Regeln)
MITRE ATT&CK (11 Regeln, 14 Taktiken)
PASTA (12 Regeln, asset-zentriert)
Die Ausführung von threatmap scan ./examples --output report.md gegen die mitgelieferten Beispiele erzeugt einen vollständigen Markdown-Bericht. Nachfolgend ein repräsentativer Auszug.
| ID | Schweregrad | STRIDE-Kategorie | Ressource | Beschreibung |
|---|---|---|---|---|
| T-001 | 🔴 KRITISCH | Information Disclosure | AuditBucket | S3-Bucket 'AuditBucket' hat keinen öffentlichen Zugriffsblock konfiguriert – der Bucket könnte öffentlich zugänglich sein. |
| T-002 | 🔴 KRITISCH | Spoofing | WebSecurityGroup | Sicherheitsgruppe 'WebSecurityGroup' macht SSH/RDP (Port 22/3389) für 0.0.0.0/0 verfügbar. |
| T-003 | 🔴 KRITISCH | Elevation of Privilege | app_contributor | Rollenzuweisung 'app_contributor' gewährt die privilegierte Rolle 'Contributor'. |
| T-006 | 🟠 HOCH | Information Disclosure | AuditBucket | S3-Bucket 'AuditBucket' hat keine serverseitige Verschlüsselung konfiguriert. |
| T-008 | 🟠 HOCH | Elevation of Privilege | api | Container 'api' in Deployment 'api' könnte als Root ausgeführt werden (kein runAsNonRoot=true oder runAsUser=0). |
| T-011 | 🟠 HOCH | Elevation of Privilege | web | EC2-Instanz 'web' erlaubt IMDSv1 – Metadatendienst ohne Sitzungstoken zugänglich, was SSRF-basierten Credential-Diebstahl ermöglicht. |
### T-002 — Spoofing (KRITISCH)
Ressource: AWS::EC2::SecurityGroup.WebSecurityGroup
Eigenschaft: ingress.ssh_rdp_open
Befund: Sicherheitsgruppe 'WebSecurityGroup' macht SSH/RDP (Port 22/3389) für 0.0.0.0/0 verfügbar.
Abhilfe: Entfernen Sie den öffentlichen SSH/RDP-Zugriff. Verwenden Sie AWS Systems Manager Session Manager
oder einen Bastion-Host mit IP-Einschränkungen.
Der Bericht fügt ein Mermaid flowchart LR-Diagramm an. Knoten sind nach dem worst-case Schweregrad eingefärbt (🔴 rot = KRITISCH, 🟠 orange = HOCH). Fügen Sie den Block in einen beliebigen Mermaid-Renderer ein oder betrachten Sie ihn direkt auf GitHub.