Problem
Threat modelling is done manually in spreadsheets or skipped entirely. When it does happen, the output is a raw list of threats that developers ignore and that executives can’t read. Security teams need something they can hand to a CISO on Monday morning.
What It Does
- Multi-input parsing โ auto-detects YAML/JSON descriptor, OpenAPI/Swagger spec, Dockerfile, docker-compose.yml, or runs an interactive CLI wizard
- STRIDE engine โ generates threats for every component (web app, API, database, cache, auth service, message queue) across all 6 STRIDE categories
- Risk scoring โ likelihood ร impact ร 4, auto-classified into Critical/High/Medium/Low with sprint priority
- Framework mapping โ every threat linked to MITRE ATT&CK technique IDs, OWASP 2021 categories, and NIST 800-53 controls
- Compliance flagging โ automatic GDPR, PCI-DSS, SOC2, HIPAA violation detection mapped to specific threats
- LLM narratives โ on-prem Ollama (hermes3:70b) enriches top threats with executive-language paragraphs. No data leaves the network
- Executive HTML report โ self-contained with Chart.js visualisations (STRIDE distribution, severity breakdown, top 5 risk bar), sprint remediation table, compliance exposure section, full threat inventory
Sample Output
On a 7-component e-commerce platform (web app + API gateway + auth + payments + database + cache + order service):
- 35 threats generated
- Risk score: 100/100 (Critical risk)
- 2 Critical โ SQL injection on internet-facing components
- 15 High โ broken access control, identity spoofing, sensitive data exposure
- Compliance: GDPR Art. 32 + PCI-DSS v4.0 Req. 6 flagged
Key Technical Decisions
STRIDE per component type โ rules are specialised by component. A database gets data tampering and query exhaustion rules. An API gets injection, broken access control, and rate-limiting threats. Generic rules produce generic noise.
Business-impact language โ every threat includes a business_impact field written for a non-technical audience: regulatory fine amounts, average breach costs, SLA consequences. This is what makes the report usable outside the security team.
Local LLM only โ all application data stays on-prem. Ollama receives the threat metadata; no source code or production data is ever sent.
Sprint prioritisation โ Critical/High threats are automatically assigned to Sprint 1. Medium to this quarter. Low to backlog. The remediation table is ready to paste into Jira.