Framework Mappings
The mappings field links threat models to industry security frameworks.
Overview
{
"mappings": {
"mitreAttack": [...],
"mitreAtlas": [...],
"owasp": [...],
"stride": [...],
"cwe": [...],
"cvss": {...}
}
}
MITRE ATT&CK
{
"mitreAttack": [
{
"tacticId": "TA0001",
"tacticName": "Initial Access",
"techniqueId": "T1189",
"techniqueName": "Drive-by Compromise",
"description": "Malicious website exploits browser",
"url": "https://attack.mitre.org/techniques/T1189"
}
]
}
| Field |
Type |
Required |
Description |
tacticId |
string |
Yes |
Tactic ID (TA####) |
tacticName |
string |
No |
Tactic name |
techniqueId |
string |
Yes |
Technique ID (T####) |
techniqueName |
string |
No |
Technique name |
description |
string |
No |
Context |
url |
string |
No |
ATT&CK URL |
MITRE ATLAS
{
"mitreAtlas": [
{
"id": "AML.T0024",
"name": "Prompt Injection",
"description": "Crafted prompts manipulate AI behavior"
}
]
}
| Field |
Type |
Required |
Description |
id |
string |
Yes |
ATLAS technique ID (AML.T####) |
name |
string |
No |
Technique name |
description |
string |
No |
Context |
url |
string |
No |
ATLAS URL |
Alignment Failure Modes
Alignment failure modes classify why AI models behaved as they did — a layer
that cyber (ATT&CK) and adversarial-ML (ATLAS) frameworks do not capture. Use
them for incidents rooted in misaligned model behavior (e.g. reward hacking,
goal drift, emergent coordination).
{
"alignmentFailureModes": [
{
"id": "reward-hacking",
"name": "Reward Hacking",
"description": "Agent optimizes the reward signal via an unintended path rather than solving the task",
"primary": true
}
]
}
| Field |
Type |
Required |
Description |
id |
string |
Yes |
Stable slug (e.g. reward-hacking) |
name |
string |
No |
Human-readable failure-mode name |
description |
string |
No |
How the failure mode manifested |
primary |
bool |
No |
Marks the dominant failure mode for the incident |
Section Summaries
mappings.summaries holds an optional short prose intro per classification
section, keyed by section slug (cve, cwe, mitreAttack, mitreAtlas,
owasp, stride, alignmentFailureModes). Renderers use it to introduce each
mapping table.
{
"summaries": {
"alignmentFailureModes": "Why the collective behaved as it did, beyond the cyber and adversarial-ML views."
}
}
OWASP
{
"owasp": [
{
"category": "api",
"id": "API2:2023",
"name": "Broken Authentication",
"description": "No rate limiting on authentication",
"url": "https://owasp.org/API-Security/..."
},
{
"category": "agentic",
"id": "ASI02:2026",
"name": "Tool Misuse & Exploitation",
"description": "Attackers exploit agent's access to tools"
}
]
}
| Field |
Type |
Required |
Description |
category |
string |
Yes |
web, api, llm, or agentic |
id |
string |
Yes |
OWASP ID |
name |
string |
Yes |
Vulnerability name |
description |
string |
No |
Context |
url |
string |
No |
OWASP URL |
OWASP Categories
| Category |
Value |
Year |
| Web Applications |
web |
2021 |
| API Security |
api |
2023 |
| LLM Applications |
llm |
2025 |
| Agentic Applications |
agentic |
2026 |
Attack Step OWASP Mappings
Attack steps can include owaspIds and asiIds:
{
"attacks": [
{
"step": 1,
"from": "attacker",
"to": "agent",
"label": "Inject malicious prompt",
"owaspIds": ["LLM01:2025"],
"asiIds": ["ASI01:2026", "ASI02:2026"]
}
]
}
STRIDE
{
"stride": [
{
"category": "S",
"name": "Spoofing",
"description": "Attacker impersonates legitimate client"
},
{
"category": "I",
"name": "Information Disclosure",
"description": "API keys exposed to attacker"
}
]
}
| Field |
Type |
Required |
Description |
category |
string |
Yes |
S, T, R, I, D, or E |
name |
string |
No |
Category name |
description |
string |
No |
Context |
CWE
{
"cwe": [
{
"id": "CWE-346",
"name": "Origin Validation Error",
"description": "WebSocket accepts any origin",
"url": "https://cwe.mitre.org/data/definitions/346.html"
}
]
}
| Field |
Type |
Required |
Description |
id |
string |
Yes |
CWE ID (CWE-###) |
name |
string |
No |
Weakness name |
description |
string |
No |
Context |
url |
string |
No |
CWE URL |
CVSS
{
"cvss": {
"version": "3.1",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N",
"score": 9.3,
"severity": "Critical"
}
}
| Field |
Type |
Required |
Description |
version |
string |
Yes |
CVSS version |
vector |
string |
Yes |
CVSS vector string |
score |
float |
No |
Calculated score |
severity |
string |
No |
Critical/High/Medium/Low |
Complete Example
{
"type": "attack-chain",
"title": "WebSocket Localhost Takeover",
"mappings": {
"mitreAttack": [
{
"tacticId": "TA0001",
"tacticName": "Initial Access",
"techniqueId": "T1189",
"techniqueName": "Drive-by Compromise"
},
{
"tacticId": "TA0006",
"tacticName": "Credential Access",
"techniqueId": "T1110",
"techniqueName": "Brute Force"
}
],
"mitreAtlas": [
{
"techniqueId": "AML.T0024",
"techniqueName": "Prompt Injection"
}
],
"owasp": [
{"category": "api", "id": "API2:2023", "name": "Broken Authentication"},
{"category": "api", "id": "API4:2023", "name": "Unrestricted Resource Consumption"},
{"category": "llm", "id": "LLM06:2025", "name": "Excessive Agency"},
{"category": "agentic", "id": "ASI02:2026", "name": "Tool Misuse & Exploitation"}
],
"stride": [
{"category": "S", "name": "Spoofing"},
{"category": "I", "name": "Information Disclosure"},
{"category": "E", "name": "Elevation of Privilege"}
],
"cwe": [
{"id": "CWE-346", "name": "Origin Validation Error"},
{"id": "CWE-307", "name": "Improper Restriction of Excessive Authentication Attempts"}
],
"cvss": {
"version": "3.1",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N",
"score": 9.3,
"severity": "Critical"
}
}
}
STIX 2.1 Export
Framework mappings are preserved in STIX 2.1 export:
- MITRE ATT&CK → Attack Patterns with external references
- MITRE ATLAS → Attack Patterns with external references
- CWE → Vulnerability objects
tms generate model.json --stix -o model.stix.json