@blamejs/exceptd-skills 0.18.30 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/AGENTS.md +5 -5
  2. package/ARCHITECTURE.md +3 -3
  3. package/CHANGELOG.md +16 -0
  4. package/README.md +5 -5
  5. package/data/_indexes/_meta.json +42 -42
  6. package/data/_indexes/activity-feed.json +17 -17
  7. package/data/_indexes/catalog-summaries.json +10 -10
  8. package/data/_indexes/chains.json +2715 -2715
  9. package/data/_indexes/frequency.json +9 -8
  10. package/data/_indexes/recipes.json +1 -1
  11. package/data/_indexes/section-offsets.json +129 -129
  12. package/data/_indexes/summary-cards.json +4 -4
  13. package/data/_indexes/token-budget.json +44 -44
  14. package/data/_indexes/xref.json +2 -2
  15. package/data/atlas-ttps.json +95 -78
  16. package/data/attack-techniques.json +21 -208
  17. package/data/cve-catalog.json +8 -8
  18. package/data/framework-control-gaps.json +8 -8
  19. package/data/playbooks/audit-log-integrity.json +2 -2
  20. package/data/playbooks/hardening.json +1 -1
  21. package/manifest-snapshot.json +8 -8
  22. package/manifest-snapshot.sha256 +1 -1
  23. package/manifest.json +94 -94
  24. package/package.json +3 -3
  25. package/sbom.cdx.json +122 -107
  26. package/scripts/builders/catalog-summaries.js +1 -1
  27. package/scripts/builders/recipes.js +1 -1
  28. package/scripts/check-ttp-upstream.js +202 -0
  29. package/skills/age-gates-child-safety/skill.md +2 -2
  30. package/skills/ai-attack-surface/skill.md +3 -3
  31. package/skills/ai-c2-detection/skill.md +4 -4
  32. package/skills/api-security/skill.md +1 -1
  33. package/skills/attack-surface-pentest/skill.md +3 -3
  34. package/skills/audit-log-integrity/skill.md +3 -3
  35. package/skills/cloud-iam-incident/skill.md +1 -1
  36. package/skills/cloud-security/skill.md +2 -2
  37. package/skills/compliance-theater/skill.md +2 -2
  38. package/skills/container-runtime-security/skill.md +2 -2
  39. package/skills/coordinated-vuln-disclosure/skill.md +1 -1
  40. package/skills/dlp-gap-analysis/skill.md +4 -4
  41. package/skills/exploit-scoring/skill.md +1 -1
  42. package/skills/framework-gap-analysis/skill.md +3 -3
  43. package/skills/fuzz-testing-strategy/skill.md +1 -1
  44. package/skills/incident-response-playbook/skill.md +2 -2
  45. package/skills/mcp-agent-trust/skill.md +1 -1
  46. package/skills/mlops-security/skill.md +2 -2
  47. package/skills/ot-ics-security/skill.md +5 -5
  48. package/skills/policy-exception-gen/skill.md +2 -2
  49. package/skills/pqc-first/skill.md +1 -1
  50. package/skills/rag-pipeline-security/skill.md +3 -3
  51. package/skills/ransomware-response/skill.md +1 -1
  52. package/skills/sector-energy/skill.md +9 -9
  53. package/skills/sector-federal-government/skill.md +1 -1
  54. package/skills/sector-financial/skill.md +3 -3
  55. package/skills/sector-healthcare/skill.md +2 -2
  56. package/skills/security-maturity-tiers/skill.md +1 -1
  57. package/skills/skill-update-loop/skill.md +5 -5
  58. package/skills/supply-chain-integrity/skill.md +1 -1
  59. package/skills/threat-model-currency/skill.md +7 -7
  60. package/skills/threat-modeling-methodology/skill.md +1 -1
  61. package/skills/webapp-security/skill.md +1 -1
  62. package/skills/zeroday-gap-learn/skill.md +2 -2
@@ -64,7 +64,7 @@
64
64
  ]
65
65
  },
66
66
  "ai-attack-surface": {
67
- "description": "Comprehensive AI/ML attack surface assessment mapped to MITRE ATLAS v2026.06 with explicit framework gap flags",
67
+ "description": "Comprehensive AI/ML attack surface assessment mapped to MITRE ATLAS v2026.07 with explicit framework gap flags",
68
68
  "threat_context_excerpt": "The AI attack surface is not speculative. It is actively exploited. The following are confirmed, documented threats as of mid-2026.",
69
69
  "produces": "The assessment produces a structured AI Attack Surface Assessment report. The shape below is consumed downstream by `mcp-agent-trust` (which converts the MCP Trust Assessment section into per-server policy), by `rag-pipeline-security` (which picks up any RAG-pipeline entries from the Surface Inventory), and by `incident-response-playbook` (which scopes IR against the prompt-injection and AI-C2 exposure bands). CSAF-style auditor evidence bundles consume the Framework Gaps and ATLAS TTP Coverage Gaps sections verbatim — preserve the framework-control IDs as cited.\n\n```\n## AI Attack Surface Asse ...",
70
70
  "key_xrefs": {
@@ -980,7 +980,7 @@
980
980
  "AML.T0010"
981
981
  ],
982
982
  "attack_refs": [
983
- "T0855",
983
+ "T1692.001",
984
984
  "T0883",
985
985
  "T1190",
986
986
  "T1068"
@@ -1447,7 +1447,7 @@
1447
1447
  ],
1448
1448
  "atlas_refs": [],
1449
1449
  "attack_refs": [
1450
- "T0855",
1450
+ "T1692.001",
1451
1451
  "T0883",
1452
1452
  "T1190",
1453
1453
  "T1078"
@@ -2321,7 +2321,7 @@
2321
2321
  "attack_refs": [
2322
2322
  "T1070",
2323
2323
  "T1565.001",
2324
- "T1562.008"
2324
+ "T1685.002"
2325
2325
  ],
2326
2326
  "rfc_refs": [],
2327
2327
  "dlp_refs": []
@@ -3,8 +3,8 @@
3
3
  "schema_version": "1.0.0",
4
4
  "tokenizer_note": "Character-density approximation: 1 token ≈ 4 chars. This is the canonical rule-of-thumb for OpenAI tokenizers on English+technical text. Claude's tokenizer is typically more efficient on prose; treat this as an upper-bound budget for both. Consumers with stricter precision needs should re-tokenize with their own tokenizer.",
5
5
  "approx_chars_per_token": 4,
6
- "total_chars": 1767897,
7
- "total_approx_tokens": 441982,
6
+ "total_chars": 1767951,
7
+ "total_approx_tokens": 441995,
8
8
  "skill_count": 51
9
9
  },
10
10
  "skills": {
@@ -580,10 +580,10 @@
580
580
  },
581
581
  "threat-model-currency": {
582
582
  "path": "skills/threat-model-currency/skill.md",
583
- "bytes": 33297,
584
- "chars": 33111,
583
+ "bytes": 33301,
584
+ "chars": 33115,
585
585
  "lines": 448,
586
- "approx_tokens": 8278,
586
+ "approx_tokens": 8279,
587
587
  "approx_chars_per_token": 4,
588
588
  "sections": {
589
589
  "frontmatter-scope": {
@@ -597,9 +597,9 @@
597
597
  "approx_tokens": 135
598
598
  },
599
599
  "the-14-threat-class-checklist": {
600
- "bytes": 11120,
601
- "chars": 11106,
602
- "approx_tokens": 2777
600
+ "bytes": 11124,
601
+ "chars": 11110,
602
+ "approx_tokens": 2778
603
603
  },
604
604
  "threat-context": {
605
605
  "bytes": 1831,
@@ -870,10 +870,10 @@
870
870
  },
871
871
  "skill-update-loop": {
872
872
  "path": "skills/skill-update-loop/skill.md",
873
- "bytes": 47847,
874
- "chars": 47713,
873
+ "bytes": 47843,
874
+ "chars": 47709,
875
875
  "lines": 522,
876
- "approx_tokens": 11928,
876
+ "approx_tokens": 11927,
877
877
  "approx_chars_per_token": 4,
878
878
  "sections": {
879
879
  "frontmatter-scope": {
@@ -887,9 +887,9 @@
887
887
  "approx_tokens": 385
888
888
  },
889
889
  "ttp-mapping": {
890
- "bytes": 1092,
891
- "chars": 1090,
892
- "approx_tokens": 273
890
+ "bytes": 1088,
891
+ "chars": 1086,
892
+ "approx_tokens": 272
893
893
  },
894
894
  "why-skills-decay": {
895
895
  "bytes": 887,
@@ -1400,10 +1400,10 @@
1400
1400
  },
1401
1401
  "ot-ics-security": {
1402
1402
  "path": "skills/ot-ics-security/skill.md",
1403
- "bytes": 37122,
1404
- "chars": 36924,
1403
+ "bytes": 37134,
1404
+ "chars": 36936,
1405
1405
  "lines": 344,
1406
- "approx_tokens": 9231,
1406
+ "approx_tokens": 9234,
1407
1407
  "approx_chars_per_token": 4,
1408
1408
  "sections": {
1409
1409
  "threat-context": {
@@ -1417,9 +1417,9 @@
1417
1417
  "approx_tokens": 1118
1418
1418
  },
1419
1419
  "ttp-mapping": {
1420
- "bytes": 3736,
1421
- "chars": 3712,
1422
- "approx_tokens": 928
1420
+ "bytes": 3744,
1421
+ "chars": 3720,
1422
+ "approx_tokens": 930
1423
1423
  },
1424
1424
  "exploit-availability-matrix": {
1425
1425
  "bytes": 2319,
@@ -1855,16 +1855,16 @@
1855
1855
  },
1856
1856
  "sector-energy": {
1857
1857
  "path": "skills/sector-energy/skill.md",
1858
- "bytes": 54792,
1859
- "chars": 54582,
1858
+ "bytes": 54824,
1859
+ "chars": 54614,
1860
1860
  "lines": 412,
1861
- "approx_tokens": 13646,
1861
+ "approx_tokens": 13654,
1862
1862
  "approx_chars_per_token": 4,
1863
1863
  "sections": {
1864
1864
  "threat-context": {
1865
- "bytes": 5378,
1866
- "chars": 5348,
1867
- "approx_tokens": 1337
1865
+ "bytes": 5386,
1866
+ "chars": 5356,
1867
+ "approx_tokens": 1339
1868
1868
  },
1869
1869
  "framework-lag-declaration": {
1870
1870
  "bytes": 8344,
@@ -1872,9 +1872,9 @@
1872
1872
  "approx_tokens": 2082
1873
1873
  },
1874
1874
  "ttp-mapping": {
1875
- "bytes": 6378,
1876
- "chars": 6358,
1877
- "approx_tokens": 1590
1875
+ "bytes": 6394,
1876
+ "chars": 6374,
1877
+ "approx_tokens": 1594
1878
1878
  },
1879
1879
  "exploit-availability-matrix": {
1880
1880
  "bytes": 4027,
@@ -1882,9 +1882,9 @@
1882
1882
  "approx_tokens": 1000
1883
1883
  },
1884
1884
  "analysis-procedure": {
1885
- "bytes": 10946,
1886
- "chars": 10902,
1887
- "approx_tokens": 2726
1885
+ "bytes": 10950,
1886
+ "chars": 10906,
1887
+ "approx_tokens": 2727
1888
1888
  },
1889
1889
  "output-format": {
1890
1890
  "bytes": 3460,
@@ -2185,10 +2185,10 @@
2185
2185
  },
2186
2186
  "incident-response-playbook": {
2187
2187
  "path": "skills/incident-response-playbook/skill.md",
2188
- "bytes": 63031,
2189
- "chars": 62779,
2188
+ "bytes": 63036,
2189
+ "chars": 62784,
2190
2190
  "lines": 549,
2191
- "approx_tokens": 15695,
2191
+ "approx_tokens": 15696,
2192
2192
  "approx_chars_per_token": 4,
2193
2193
  "sections": {
2194
2194
  "threat-context": {
@@ -2202,9 +2202,9 @@
2202
2202
  "approx_tokens": 2541
2203
2203
  },
2204
2204
  "ttp-mapping": {
2205
- "bytes": 4952,
2206
- "chars": 4944,
2207
- "approx_tokens": 1236
2205
+ "bytes": 4957,
2206
+ "chars": 4949,
2207
+ "approx_tokens": 1237
2208
2208
  },
2209
2209
  "exploit-availability-matrix": {
2210
2210
  "bytes": 3811,
@@ -2240,10 +2240,10 @@
2240
2240
  },
2241
2241
  "ransomware-response": {
2242
2242
  "path": "skills/ransomware-response/skill.md",
2243
- "bytes": 48434,
2244
- "chars": 48252,
2243
+ "bytes": 48439,
2244
+ "chars": 48257,
2245
2245
  "lines": 371,
2246
- "approx_tokens": 12063,
2246
+ "approx_tokens": 12064,
2247
2247
  "approx_chars_per_token": 4,
2248
2248
  "sections": {
2249
2249
  "threat-context": {
@@ -2257,9 +2257,9 @@
2257
2257
  "approx_tokens": 1692
2258
2258
  },
2259
2259
  "ttp-mapping": {
2260
- "bytes": 2237,
2261
- "chars": 2235,
2262
- "approx_tokens": 559
2260
+ "bytes": 2242,
2261
+ "chars": 2240,
2262
+ "approx_tokens": 560
2263
2263
  },
2264
2264
  "exploit-availability-matrix": {
2265
2265
  "bytes": 2592,
@@ -1157,7 +1157,7 @@
1157
1157
  "T1110": [
1158
1158
  "identity-assurance"
1159
1159
  ],
1160
- "T0855": [
1160
+ "T1692.001": [
1161
1161
  "ot-ics-security",
1162
1162
  "sector-energy"
1163
1163
  ],
@@ -1246,7 +1246,7 @@
1246
1246
  "log-injection-telemetry",
1247
1247
  "privacy-consent-ops"
1248
1248
  ],
1249
- "T1562.008": [
1249
+ "T1685.002": [
1250
1250
  "audit-log-integrity"
1251
1251
  ],
1252
1252
  "T1574": [
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "_meta": {
3
3
  "schema_version": "1.0.0",
4
- "atlas_version": "2026.06",
5
- "atlas_release_date": "2026-06-30",
4
+ "atlas_version": "2026.07",
5
+ "atlas_release_date": "2026-08-07",
6
6
  "secure_ai_v2_release_date": "2026-05-06",
7
7
  "secure_ai_v2_source": "https://ctid.mitre.org/blog/2026/05/06/secure-ai-v2-release",
8
- "last_updated": "2026-07-03",
9
- "last_threat_review": "2026-07-03",
8
+ "last_updated": "2026-08-08",
9
+ "last_threat_review": "2026-08-08",
10
10
  "source": "https://atlas.mitre.org",
11
- "note": "AI-relevant ATLAS TTPs with framework_gap field, curated as a subset of the full ATLAS matrix and pinned to v2026.06. ATLAS content follows a YYYY.MM calendar-versioning scheme; the CalVer scheme and the per-technique platform tags (Predictive AI, Generative AI, Agentic AI, Enterprise) were introduced in v2026.05. The v2026.05 → v2026.06 audit (AGENTS.md Hard Rule #12) confirmed the release is additive with NO technique-ID removals or renames, so every AML.T* id curated in this file remains valid. Upstream v2026.06 additionally published three new techniques — AML.T0113 (Steal Web Session Cookie), AML.T0091.001 (Use Alternate Authentication Material: Web Session Cookie), and AML.T0114 (AI Service Web Interface) — refreshed AML.T0054 (LLM Jailbreak), and shipped new case studies (EchoLeak zero-click prompt injection, AI-in-the-Middle C2 relays, Semantic Kernel RCE); these newly-published techniques are not yet ingested into this curated subset and are tracked as future-curation candidates (the subset intentionally trails the full matrix, e.g. 170 curated of the full ATLAS technique set). framework_gap: no framework has a control that addresses this TTP. secure_ai_v2_layer flags entries included in the CTID Secure AI v2 layered set (May 2026); maturity reflects CTID's technique-maturity classification (low / moderate / high).",
11
+ "note": "AI-relevant ATLAS TTPs with framework_gap field, curated as a subset of the full ATLAS matrix and pinned to v2026.07. ATLAS content follows a YYYY.MM calendar-versioning scheme; the CalVer scheme and the per-technique platform tags (Predictive AI, Generative AI, Agentic AI, Enterprise) were introduced in v2026.05. The v2026.05 → v2026.07 audit (AGENTS.md Hard Rule #12) confirmed the release is additive with NO technique-ID removals or renames, so every AML.T* id curated in this file remains valid. Upstream v2026.07 additionally published three new techniques — AML.T0113 (Steal Web Session Cookie), AML.T0091.001 (Use Alternate Authentication Material: Web Session Cookie), and AML.T0114 (AI Service Web Interface) — refreshed AML.T0054 (LLM Jailbreak), and shipped new case studies (EchoLeak zero-click prompt injection, AI-in-the-Middle C2 relays, Semantic Kernel RCE); these newly-published techniques are not yet ingested into this curated subset and are tracked as future-curation candidates (the subset intentionally trails the full matrix, e.g. 170 curated of the full ATLAS technique set). framework_gap: no framework has a control that addresses this TTP. secure_ai_v2_layer flags entries included in the CTID Secure AI v2 layered set (May 2026); maturity reflects CTID's technique-maturity classification (low / moderate / high).",
12
12
  "tlp": "CLEAR",
13
13
  "source_confidence": {
14
14
  "scheme": "Admiralty (A-F + 1-6)",
@@ -21,7 +21,7 @@
21
21
  "rebuild_after_days": 365,
22
22
  "note": "Per-entry last_verified governs decay. Skills depending on this catalog must check entry freshness before high-stakes use."
23
23
  },
24
- "bulk_intake_note": " v0.13.18: +137 AML.* techniques from MITRE ATLAS STIX bundle (atlas-navigator-data dist/stix-atlas.json). Now tracking ATLAS v2026.06 (June 2026 release). Auto-imported entries flagged _auto_imported:true + _intake_method:v0.13.18-bulk-mitre-atlas-stix for downstream curation."
24
+ "bulk_intake_note": " v0.13.18: +137 AML.* techniques from MITRE ATLAS STIX bundle (atlas-navigator-data dist/stix-atlas.json). Now tracking ATLAS v2026.07 (June 2026 release). Auto-imported entries flagged _auto_imported:true + _intake_method:v0.13.18-bulk-mitre-atlas-stix for downstream curation."
25
25
  },
26
26
  "AML.T0001": {
27
27
  "id": "AML.T0001",
@@ -536,7 +536,7 @@
536
536
  "Multiple production AI assistant prompt injection incidents 2025-2026"
537
537
  ],
538
538
  "framework_gap": true,
539
- "framework_gap_detail": "No framework has a control for prompt injection as an access control failure vector. The attack uses the AI service account's authorized permissions — from AC-2's perspective, the access is authorized. MITRE ATLAS v2026.06 documents the technique; no framework has implemented controls. OWASP LLM Top 10 documents the class; it is not incorporated in any compliance framework.",
539
+ "framework_gap_detail": "No framework has a control for prompt injection as an access control failure vector. The attack uses the AI service account's authorized permissions — from AC-2's perspective, the access is authorized. MITRE ATLAS v2026.07 documents the technique; no framework has implemented controls. OWASP LLM Top 10 documents the class; it is not incorporated in any compliance framework.",
540
540
  "controls_that_partially_help": [
541
541
  "NIST-800-53-AC-2",
542
542
  "ISO-27001-2022-A.8.28"
@@ -1037,45 +1037,6 @@
1037
1037
  "stix_id": "attack-pattern--f8d5be4e-b5f8-5b61-bdc9-3a8818327210",
1038
1038
  "is_subtechnique": false
1039
1039
  },
1040
- "AML.T0104": {
1041
- "id": "AML.T0104",
1042
- "name": "Publish Poisoned AI Agent Tool",
1043
- "tactic": "Resource Development",
1044
- "description": "Adversary publishes a poisoned AI agent tool — MCP server, plugin, function-calling package — to a registry where it will be discovered and installed by victim agents. Distinguished from T0010 (general supply-chain compromise) by being scoped to AI-agent tool registries and from T0053 (plugin compromise) by being the publishing step rather than the runtime trust failure.",
1045
- "subtechniques": [
1046
- "AML.T0104.000 — Typosquat publish to MCP registry",
1047
- "AML.T0104.001 — Compromised-account publish to agent-tool registry",
1048
- "AML.T0104.002 — Slow-poison via legitimate-tool update with later backdoor"
1049
- ],
1050
- "real_world_instances": [
1051
- "CVE-2026-30615 — Windsurf MCP zero-interaction RCE via published tool",
1052
- "MCP registry typosquat campaigns 2025-2026"
1053
- ],
1054
- "framework_gap": true,
1055
- "framework_gap_detail": "No framework has a publish-time control for AI-agent tool registries. SA-12 supply chain assumes traditional package registries. No framework requires Ed25519-style signing or registry-side review on agent-tool publishes.",
1056
- "controls_that_partially_help": [
1057
- "NIST-800-53-SA-12",
1058
- "ISO-27001-2022-A.8.30"
1059
- ],
1060
- "controls_that_dont_help": [
1061
- "NIST-800-53-SI-3"
1062
- ],
1063
- "detection": "Registry-side reputation scoring on newly published tools; signature requirement enforcement at registry boundary; victim-side allowlist of audited tools",
1064
- "exceptd_skills": [],
1065
- "secure_ai_v2_layer": true,
1066
- "maturity": "high",
1067
- "last_verified": "2026-05-19",
1068
- "description_full": "Adversaries may create and publish poisoned AI agent tools. Poisoned tools may contain an [LLM Prompt Injection](/techniques/AML.T0051), which can lead to a variety of impacts. Tools may be published to open source version control repositories (e.g. GitHub, GitLab), to package registries (e.g. npm), or to repositories specifically designed for sharing tools (e.g. OpenClaw Hub). These registries may be largely unregulated and may contain many poisoned tools [\\[1\\]][1]. Tools may also be published as remotely hosted servers [\\[2\\]][2]. [1]: https://opensourcemalware.com/blog/clawdbot-skills-ganked-your-crypto [2]: https://mcpservers.org/remote-mcp-servers",
1069
- "platforms": [
1070
- "ATLAS"
1071
- ],
1072
- "reference_url": "https://atlas.mitre.org/techniques/AML.T0104",
1073
- "stix_id": "attack-pattern--04842d98-bb69-586e-9765-6ff1f56ef722",
1074
- "is_subtechnique": false,
1075
- "cve_refs": [
1076
- "CVE-2025-54136"
1077
- ]
1078
- },
1079
1040
  "AML.T0105": {
1080
1041
  "id": "AML.T0105",
1081
1042
  "name": "Escape to Host",
@@ -1531,22 +1492,6 @@
1531
1492
  "stix_id": "attack-pattern--d74153d6-ac3c-52fb-9847-e0a6f675cd93",
1532
1493
  "is_subtechnique": false
1533
1494
  },
1534
- "AML.T0019": {
1535
- "id": "AML.T0019",
1536
- "name": "Publish Poisoned Datasets",
1537
- "tactic": "Resource Development",
1538
- "description": "Adversaries may [Poison Training Data](/techniques/AML.T0020) and publish it to a public location.",
1539
- "reference_url": "https://atlas.mitre.org/techniques/AML.T0019",
1540
- "last_verified": "2026-05-19",
1541
- "_auto_imported": true,
1542
- "_intake_method": "v0.13.18-bulk-mitre-atlas-stix",
1543
- "description_full": "Adversaries may [Poison Training Data](/techniques/AML.T0020) and publish it to a public location. The poisoned dataset may be a novel dataset or a poisoned variant of an existing open source dataset. This data may be introduced to a victim system via [AI Supply Chain Compromise](/techniques/AML.T0010).",
1544
- "platforms": [
1545
- "ATLAS"
1546
- ],
1547
- "stix_id": "attack-pattern--c38896b2-974c-5ed5-adeb-c2477b311353",
1548
- "is_subtechnique": false
1549
- },
1550
1495
  "AML.T0021": {
1551
1496
  "id": "AML.T0021",
1552
1497
  "name": "Establish Accounts",
@@ -1870,22 +1815,6 @@
1870
1815
  "stix_id": "attack-pattern--b8b16dac-3b95-59f7-8bf7-60e39b0c062f",
1871
1816
  "is_subtechnique": false
1872
1817
  },
1873
- "AML.T0058": {
1874
- "id": "AML.T0058",
1875
- "name": "Publish Poisoned Models",
1876
- "tactic": "Resource Development",
1877
- "description": "Adversaries may publish a poisoned model to a public location such as a model registry or code repository.",
1878
- "reference_url": "https://atlas.mitre.org/techniques/AML.T0058",
1879
- "last_verified": "2026-05-19",
1880
- "_auto_imported": true,
1881
- "_intake_method": "v0.13.18-bulk-mitre-atlas-stix",
1882
- "description_full": "Adversaries may publish a poisoned model to a public location such as a model registry or code repository. The poisoned model may be a novel model or a poisoned variant of an existing open-source model. This model may be introduced to a victim system via [AI Supply Chain Compromise](/techniques/AML.T0010).",
1883
- "platforms": [
1884
- "ATLAS"
1885
- ],
1886
- "stix_id": "attack-pattern--d4c7f78e-4609-555c-a2eb-3d344dab3309",
1887
- "is_subtechnique": false
1888
- },
1889
1818
  "AML.T0059": {
1890
1819
  "id": "AML.T0059",
1891
1820
  "name": "Erode Dataset Integrity",
@@ -3678,5 +3607,93 @@
3678
3607
  ],
3679
3608
  "stix_id": "attack-pattern--bd0fd9ca-cc30-542e-9c1a-de9f66c9455b",
3680
3609
  "is_subtechnique": true
3610
+ },
3611
+ "AML.T0115": {
3612
+ "id": "AML.T0115",
3613
+ "name": "Publish Poisoned AI Artifacts",
3614
+ "tactic": "Resource Development",
3615
+ "is_subtechnique": false,
3616
+ "subtechniques": [
3617
+ "AML.T0115.000",
3618
+ "AML.T0115.001",
3619
+ "AML.T0115.002"
3620
+ ],
3621
+ "reference_url": "https://atlas.mitre.org/techniques/AML.T0115",
3622
+ "description": "Adversary publishes a poisoned AI artifact — a dataset, a model, or an agent tool — to a distribution channel where a victim will discover and consume it. ATLAS 2026.07 consolidated the three previously separate publish-poisoned techniques under this parent; the sub-techniques record which artifact class is published.",
3623
+ "supersedes": "AML.T0019, AML.T0058, AML.T0104",
3624
+ "cve_refs": [],
3625
+ "exceptd_skills": []
3626
+ },
3627
+ "AML.T0115.000": {
3628
+ "id": "AML.T0115.000",
3629
+ "name": "Publish Poisoned AI Artifacts: Datasets",
3630
+ "tactic": "Resource Development",
3631
+ "description": "Adversaries may [Poison Training Data](/techniques/AML.T0020) and publish it to a public location.",
3632
+ "reference_url": "https://atlas.mitre.org/techniques/AML.T0115.000",
3633
+ "last_verified": "2026-05-19",
3634
+ "_auto_imported": true,
3635
+ "_intake_method": "v0.13.18-bulk-mitre-atlas-stix",
3636
+ "description_full": "Adversaries may [Poison Training Data](/techniques/AML.T0020) and publish it to a public location. The poisoned dataset may be a novel dataset or a poisoned variant of an existing open source dataset. This data may be introduced to a victim system via [AI Supply Chain Compromise](/techniques/AML.T0010).",
3637
+ "platforms": [
3638
+ "ATLAS"
3639
+ ],
3640
+ "stix_id": "attack-pattern--c38896b2-974c-5ed5-adeb-c2477b311353",
3641
+ "is_subtechnique": true,
3642
+ "supersedes": "AML.T0019",
3643
+ "parent_technique": "AML.T0115"
3644
+ },
3645
+ "AML.T0115.001": {
3646
+ "id": "AML.T0115.001",
3647
+ "name": "Publish Poisoned AI Artifacts: Models",
3648
+ "tactic": "Resource Development",
3649
+ "description": "Adversaries may publish a poisoned model to a public location such as a model registry or code repository.",
3650
+ "reference_url": "https://atlas.mitre.org/techniques/AML.T0115.001",
3651
+ "last_verified": "2026-05-19",
3652
+ "_auto_imported": true,
3653
+ "_intake_method": "v0.13.18-bulk-mitre-atlas-stix",
3654
+ "description_full": "Adversaries may publish a poisoned model to a public location such as a model registry or code repository. The poisoned model may be a novel model or a poisoned variant of an existing open-source model. This model may be introduced to a victim system via [AI Supply Chain Compromise](/techniques/AML.T0010).",
3655
+ "platforms": [
3656
+ "ATLAS"
3657
+ ],
3658
+ "stix_id": "attack-pattern--d4c7f78e-4609-555c-a2eb-3d344dab3309",
3659
+ "is_subtechnique": true,
3660
+ "supersedes": "AML.T0058",
3661
+ "parent_technique": "AML.T0115"
3662
+ },
3663
+ "AML.T0115.002": {
3664
+ "id": "AML.T0115.002",
3665
+ "name": "Publish Poisoned AI Artifacts: AI Agent Tools",
3666
+ "tactic": "Resource Development",
3667
+ "description": "Adversary publishes a poisoned AI agent tool — MCP server, plugin, function-calling package — to a registry where it will be discovered and installed by victim agents. Distinguished from T0010 (general supply-chain compromise) by being scoped to AI-agent tool registries and from T0053 (plugin compromise) by being the publishing step rather than the runtime trust failure.",
3668
+ "real_world_instances": [
3669
+ "CVE-2026-30615 — Windsurf MCP zero-interaction RCE via published tool",
3670
+ "MCP registry typosquat campaigns 2025-2026"
3671
+ ],
3672
+ "framework_gap": true,
3673
+ "framework_gap_detail": "No framework has a publish-time control for AI-agent tool registries. SA-12 supply chain assumes traditional package registries. No framework requires Ed25519-style signing or registry-side review on agent-tool publishes.",
3674
+ "controls_that_partially_help": [
3675
+ "NIST-800-53-SA-12",
3676
+ "ISO-27001-2022-A.8.30"
3677
+ ],
3678
+ "controls_that_dont_help": [
3679
+ "NIST-800-53-SI-3"
3680
+ ],
3681
+ "detection": "Registry-side reputation scoring on newly published tools; signature requirement enforcement at registry boundary; victim-side allowlist of audited tools",
3682
+ "exceptd_skills": [],
3683
+ "secure_ai_v2_layer": true,
3684
+ "maturity": "high",
3685
+ "last_verified": "2026-05-19",
3686
+ "description_full": "Adversaries may create and publish poisoned AI agent tools. Poisoned tools may contain an [LLM Prompt Injection](/techniques/AML.T0051), which can lead to a variety of impacts. Tools may be published to open source version control repositories (e.g. GitHub, GitLab), to package registries (e.g. npm), or to repositories specifically designed for sharing tools (e.g. OpenClaw Hub). These registries may be largely unregulated and may contain many poisoned tools [\\[1\\]][1]. Tools may also be published as remotely hosted servers [\\[2\\]][2]. [1]: https://opensourcemalware.com/blog/clawdbot-skills-ganked-your-crypto [2]: https://mcpservers.org/remote-mcp-servers",
3687
+ "platforms": [
3688
+ "ATLAS"
3689
+ ],
3690
+ "reference_url": "https://atlas.mitre.org/techniques/AML.T0115.002",
3691
+ "stix_id": "attack-pattern--04842d98-bb69-586e-9765-6ff1f56ef722",
3692
+ "is_subtechnique": true,
3693
+ "cve_refs": [
3694
+ "CVE-2025-54136"
3695
+ ],
3696
+ "supersedes": "AML.T0104",
3697
+ "parent_technique": "AML.T0115"
3681
3698
  }
3682
3699
  }