
Моделировщик угроз IaC с использованием фреймворков STRIDE, MITRE ATT&CK и PASTA. Поддержка REST API, GraphQL и Docker для Terraform, CloudFormation и Kubernetes.
Статический моделировщик угроз IaC, который анализирует манифесты Terraform, CloudFormation и Kubernetes и создаёт структурированные отчёты модели угроз на основе фреймворков STRIDE, MITRE ATT&CK или PASTA. Без сетевых вызовов, без облачных учётных данных, полностью офлайн. Работает как CLI, REST API или контейнеризированный сервис.
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
# Or via Docker:
docker run -p 8000:8000 bogdynn/threatmap:2.1.0
# API endpoints: /health, /version, /rules, /analyze
GraphQL API:
docker run -p 8000:8000 bogdynn/threatmap:2.1.0
# GraphQL endpoint: http://localhost:8000/graphql
# Queries: health, version, rules
# Mutations: analyze(content, filename, framework)
| Формат | Провайдер | Расширение |
|---|---|---|
| Terraform HCL | AWS, Azure, GCP | .tf |
| CloudFormation | AWS | .yaml, .yml, .json |
| Kubernetes manifests | Kubernetes | .yaml, .yml |
Установка из PyPI:
pip install threatmap
Или для локальной разработки:
git clone https://github.com/bogdanticu88/threatmap.git
cd threatmap
pip install -e .
Сканировать директорию и вывести отчёт Markdown в stdout:
threatmap scan ./terraform/
Сканировать несколько путей и записать JSON-отчёт в файл:
threatmap scan ./terraform/ ./k8s/ ./cloudformation/ --format json --output report.json
Сгенерировать интерактивный HTML-отчёт или SARIF-отчёт для GitHub Security:
threatmap scan ./infra/ --format html --output report.html
threatmap scan ./infra/ --format sarif --output report.sarif
CI-шлюз — код возврата 1, если найдена угроза CRITICAL или HIGH:
threatmap scan ./infra/ --fail-on HIGH --output threat-report.md
Вывести только сводную таблицу в терминал, без записи полного отчёта:
threatmap scan ./infra/ --summary
Использовать только ASCII-индикаторы серьёзности (без эмодзи) для сред, не поддерживающих Unicode:
threatmap scan ./infra/ --ascii --output report.md
Анализировать с использованием различных фреймворков моделирования угроз:
# STRIDE (по умолчанию)
threatmap scan ./infra/ --framework stride
# MITRE ATT&CK (сопоставляет тактики и техники)
threatmap scan ./infra/ --framework mitre --format json
# PASTA (ориентированное на активы моделирование угроз)
threatmap scan ./infra/ --framework pasta --format json
STRIDE (73 правила)
MITRE ATT&CK (11 правил, 14 тактик)
PASTA (12 правил, ориентированный на активы)
При выполнении threatmap scan ./examples --output report.md с включёнными примерами создаётся полный отчёт Markdown. Ниже приведён репрезентативный фрагмент.
| ID | Серьёзность | Категория STRIDE | Ресурс | Описание |
|---|---|---|---|---|
| T-001 | 🔴 CRITICAL | Information Disclosure | AuditBucket | S3 bucket 'AuditBucket' не имеет настроенного блока публичного доступа — bucket может быть общедоступен. |
| T-002 | 🔴 CRITICAL | Spoofing | WebSecurityGroup | Группа безопасности 'WebSecurityGroup' открывает SSH/RDP (порт 22/3389) для 0.0.0.0/0. |
| T-003 | 🔴 CRITICAL | Elevation of Privilege | app_contributor | Назначение роли 'app_contributor' предоставляет привилегированную роль 'Contributor'. |
| T-006 | 🟠 HIGH | Information Disclosure | AuditBucket | S3 bucket 'AuditBucket' не использует шифрование на стороне сервера. |
| T-008 | 🟠 HIGH | Elevation of Privilege | api | Контейнер 'api' в Deployment 'api' может работать от root (нет runAsNonRoot=true или runAsUser=0). |
| T-011 | 🟠 HIGH | Elevation of Privilege | web | EC2 instance 'web' поддерживает IMDSv1 — метаданные доступны без токенов сессии, что позволяет кражу учётных данных через SSRF. |
### T-002 — Spoofing (CRITICAL)
Resource: AWS::EC2::SecurityGroup.WebSecurityGroup
Property: ingress.ssh_rdp_open
Finding: Security group 'WebSecurityGroup' exposes SSH/RDP (port 22/3389) to 0.0.0.0/0.
Mitigation: Remove public SSH/RDP access. Use AWS Systems Manager Session Manager
or a bastion host with IP restrictions.
В отчёт добавляется диаграмма Mermaid flowchart LR. Узлы окрашены по наихудшей серьёзности (🔴 красный = CRITICAL, 🟠 оранжевый = HIGH). Вставьте блок в любой рендерер Mermaid или просмотрите его непосредственно на GitHub.