agent-threat-rules 4.1.5 → 4.2.0

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 (240) hide show
  1. package/CHANGELOG.md +688 -1
  2. package/README.md +355 -125
  3. package/dist/adapters/openshell-filter.d.ts +10 -3
  4. package/dist/adapters/openshell-filter.d.ts.map +1 -1
  5. package/dist/adapters/openshell-filter.js +10 -3
  6. package/dist/adapters/openshell-filter.js.map +1 -1
  7. package/dist/adapters/stdio-adapter.js +3 -3
  8. package/dist/adapters/stdio-adapter.js.map +1 -1
  9. package/dist/cli/mcp-tools-document.d.ts +40 -0
  10. package/dist/cli/mcp-tools-document.d.ts.map +1 -0
  11. package/dist/cli/mcp-tools-document.js +95 -0
  12. package/dist/cli/mcp-tools-document.js.map +1 -0
  13. package/dist/cli/scan-handler.d.ts +8 -0
  14. package/dist/cli/scan-handler.d.ts.map +1 -1
  15. package/dist/cli/scan-handler.js +126 -34
  16. package/dist/cli/scan-handler.js.map +1 -1
  17. package/dist/cli.d.ts.map +1 -1
  18. package/dist/cli.js +80 -43
  19. package/dist/cli.js.map +1 -1
  20. package/dist/converters/sarif.d.ts +14 -2
  21. package/dist/converters/sarif.d.ts.map +1 -1
  22. package/dist/converters/sarif.js +7 -9
  23. package/dist/converters/sarif.js.map +1 -1
  24. package/dist/corpus-event.d.ts +47 -5
  25. package/dist/corpus-event.d.ts.map +1 -1
  26. package/dist/corpus-event.js +68 -29
  27. package/dist/corpus-event.js.map +1 -1
  28. package/dist/embedding/model-loader.d.ts +2 -0
  29. package/dist/embedding/model-loader.d.ts.map +1 -1
  30. package/dist/embedding/model-loader.js +3 -1
  31. package/dist/embedding/model-loader.js.map +1 -1
  32. package/dist/enforcement.d.ts +8 -0
  33. package/dist/enforcement.d.ts.map +1 -1
  34. package/dist/enforcement.js +10 -0
  35. package/dist/enforcement.js.map +1 -1
  36. package/dist/engine.d.ts +150 -6
  37. package/dist/engine.d.ts.map +1 -1
  38. package/dist/engine.js +337 -76
  39. package/dist/engine.js.map +1 -1
  40. package/dist/eval/embedding-provenance.d.ts +40 -0
  41. package/dist/eval/embedding-provenance.d.ts.map +1 -0
  42. package/dist/eval/embedding-provenance.js +71 -0
  43. package/dist/eval/embedding-provenance.js.map +1 -0
  44. package/dist/eval/eval-harness.d.ts +34 -0
  45. package/dist/eval/eval-harness.d.ts.map +1 -1
  46. package/dist/eval/eval-harness.js +49 -2
  47. package/dist/eval/eval-harness.js.map +1 -1
  48. package/dist/eval/hackaprompt-corpus.d.ts +12 -0
  49. package/dist/eval/hackaprompt-corpus.d.ts.map +1 -1
  50. package/dist/eval/hackaprompt-corpus.js +15 -1
  51. package/dist/eval/hackaprompt-corpus.js.map +1 -1
  52. package/dist/eval/hackaprompt-provenance.d.ts +52 -0
  53. package/dist/eval/hackaprompt-provenance.d.ts.map +1 -0
  54. package/dist/eval/hackaprompt-provenance.js +108 -0
  55. package/dist/eval/hackaprompt-provenance.js.map +1 -0
  56. package/dist/eval/run-hackaprompt-benchmark.d.ts +18 -8
  57. package/dist/eval/run-hackaprompt-benchmark.d.ts.map +1 -1
  58. package/dist/eval/run-hackaprompt-benchmark.js +154 -64
  59. package/dist/eval/run-hackaprompt-benchmark.js.map +1 -1
  60. package/dist/eval/run-pint-benchmark.js +11 -1
  61. package/dist/eval/run-pint-benchmark.js.map +1 -1
  62. package/dist/eval/skill-benchmark.d.ts +26 -6
  63. package/dist/eval/skill-benchmark.d.ts.map +1 -1
  64. package/dist/eval/skill-benchmark.js +49 -16
  65. package/dist/eval/skill-benchmark.js.map +1 -1
  66. package/dist/flywheel.d.ts +4 -0
  67. package/dist/flywheel.d.ts.map +1 -1
  68. package/dist/flywheel.js +12 -4
  69. package/dist/flywheel.js.map +1 -1
  70. package/dist/hook-handler.d.ts +11 -1
  71. package/dist/hook-handler.d.ts.map +1 -1
  72. package/dist/hook-handler.js +84 -16
  73. package/dist/hook-handler.js.map +1 -1
  74. package/dist/hook-tool-output.d.ts +47 -0
  75. package/dist/hook-tool-output.d.ts.map +1 -0
  76. package/dist/hook-tool-output.js +110 -0
  77. package/dist/hook-tool-output.js.map +1 -0
  78. package/dist/index.d.ts +5 -3
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +3 -2
  81. package/dist/index.js.map +1 -1
  82. package/dist/layer-integration.d.ts +4 -2
  83. package/dist/layer-integration.d.ts.map +1 -1
  84. package/dist/layer-integration.js +6 -2
  85. package/dist/layer-integration.js.map +1 -1
  86. package/dist/mcp-server.d.ts +8 -0
  87. package/dist/mcp-server.d.ts.map +1 -1
  88. package/dist/mcp-server.js +1 -0
  89. package/dist/mcp-server.js.map +1 -1
  90. package/dist/mcp-tools/scan.d.ts.map +1 -1
  91. package/dist/mcp-tools/scan.js +9 -1
  92. package/dist/mcp-tools/scan.js.map +1 -1
  93. package/dist/measurement/enforce-lane.d.ts +66 -0
  94. package/dist/measurement/enforce-lane.d.ts.map +1 -0
  95. package/dist/measurement/enforce-lane.js +89 -0
  96. package/dist/measurement/enforce-lane.js.map +1 -0
  97. package/dist/measurement/from-eval-harness.d.ts +16 -3
  98. package/dist/measurement/from-eval-harness.d.ts.map +1 -1
  99. package/dist/measurement/from-eval-harness.js +15 -5
  100. package/dist/measurement/from-eval-harness.js.map +1 -1
  101. package/dist/measurement/in-sample-ablation.d.ts +29 -0
  102. package/dist/measurement/in-sample-ablation.d.ts.map +1 -0
  103. package/dist/measurement/in-sample-ablation.js +45 -0
  104. package/dist/measurement/in-sample-ablation.js.map +1 -0
  105. package/dist/measurement/schema.d.ts +38 -1
  106. package/dist/measurement/schema.d.ts.map +1 -1
  107. package/dist/measurement/schema.js +43 -1
  108. package/dist/measurement/schema.js.map +1 -1
  109. package/dist/quality/action-eligibility.d.ts +4 -2
  110. package/dist/quality/action-eligibility.d.ts.map +1 -1
  111. package/dist/quality/action-eligibility.js.map +1 -1
  112. package/dist/rule-confidence.d.ts +31 -0
  113. package/dist/rule-confidence.d.ts.map +1 -0
  114. package/dist/rule-confidence.js +49 -0
  115. package/dist/rule-confidence.js.map +1 -0
  116. package/dist/rule-scaffolder.d.ts.map +1 -1
  117. package/dist/rule-scaffolder.js +43 -4
  118. package/dist/rule-scaffolder.js.map +1 -1
  119. package/dist/semantic-evaluator.d.ts.map +1 -1
  120. package/dist/semantic-evaluator.js +15 -13
  121. package/dist/semantic-evaluator.js.map +1 -1
  122. package/dist/shadow-evaluator.d.ts +7 -2
  123. package/dist/shadow-evaluator.d.ts.map +1 -1
  124. package/dist/shadow-evaluator.js +29 -25
  125. package/dist/shadow-evaluator.js.map +1 -1
  126. package/dist/testcase-event.d.ts +82 -1
  127. package/dist/testcase-event.d.ts.map +1 -1
  128. package/dist/testcase-event.js +135 -16
  129. package/dist/testcase-event.js.map +1 -1
  130. package/dist/tier0-invariant.d.ts.map +1 -1
  131. package/dist/tier0-invariant.js +1 -0
  132. package/dist/tier0-invariant.js.map +1 -1
  133. package/dist/tier1-blacklist.d.ts.map +1 -1
  134. package/dist/tier1-blacklist.js +1 -0
  135. package/dist/tier1-blacklist.js.map +1 -1
  136. package/dist/tool-definition-scope.d.ts +45 -0
  137. package/dist/tool-definition-scope.d.ts.map +1 -0
  138. package/dist/tool-definition-scope.js +68 -0
  139. package/dist/tool-definition-scope.js.map +1 -0
  140. package/dist/types.d.ts +42 -2
  141. package/dist/types.d.ts.map +1 -1
  142. package/dist/verdict.d.ts +46 -2
  143. package/dist/verdict.d.ts.map +1 -1
  144. package/dist/verdict.js +99 -14
  145. package/dist/verdict.js.map +1 -1
  146. package/package.json +2 -1
  147. package/rules/agent-manipulation/ATR-2026-00030-cross-agent-attack.yaml +2 -2
  148. package/rules/agent-manipulation/ATR-2026-00139-casual-authority-redirect.yaml +1 -1
  149. package/rules/agent-manipulation/ATR-2026-00328-named-mode-persona-override.yaml +1 -1
  150. package/rules/agent-manipulation/ATR-2026-00330-yoja-allcaps-settings-block-persona.yaml +1 -1
  151. package/rules/agent-manipulation/ATR-2026-00418-weknora-mcp-config-rce.yaml +5 -5
  152. package/rules/agent-manipulation/ATR-2026-00432-superagi-output-handler-eval-rce.yaml +1 -1
  153. package/rules/agent-manipulation/ATR-2026-00440-semantic-kernel-vector-store-eval-rce.yaml +3 -3
  154. package/rules/context-exfiltration/ATR-2026-00426-nl-output-injection-credential-leak.yaml +1 -1
  155. package/rules/context-exfiltration/ATR-2026-00702-ipi-credential-exfil-via-agent-action.yaml +1 -1
  156. package/rules/context-exfiltration/ATR-2026-00707-ipi-file-exfil-with-destroy-or-tamper.yaml +1 -1
  157. package/rules/context-exfiltration/ATR-2026-00851-indirect-pi-financial-payment-exfil.yaml +1 -1
  158. package/rules/context-exfiltration/ATR-2026-01457-sysprompt-completion-clone-attack.yaml +1 -1
  159. package/rules/context-exfiltration/ATR-2026-01462-sysprompt-override-pseudo-admin.yaml +1 -1
  160. package/rules/context-exfiltration/ATR-2026-01463-imend-imsystem-prompt-injection-format.yaml +1 -1
  161. package/rules/context-exfiltration/ATR-2026-01606-ssrf-internal-network-scan.yaml +1 -1
  162. package/rules/context-exfiltration/ATR-2026-02847-policy-justified-exfil-to-email.yaml +1 -1
  163. package/rules/context-exfiltration/ATR-2026-02855-cross-email-exfil-relay.yaml +79 -0
  164. package/rules/context-exfiltration/ATR-2026-02861-exfil-send-email-with-body-directive.yaml +83 -0
  165. package/rules/context-exfiltration/ATR-2026-02866-idna-label-separator-in-fetch-url-host.yaml +104 -0
  166. package/rules/excessive-autonomy/ATR-2026-00710-ipi-physical-access-grant.yaml +1 -1
  167. package/rules/model-abuse/ATR-2026-01897-host-sabotage.yaml +2 -2
  168. package/rules/model-security/ATR-2026-00433-modelcache-torch-load-deserialization-rce.yaml +1 -1
  169. package/rules/privilege-escalation/ATR-2026-00436-enclave-vm-sandbox-escape-rce.yaml +1 -1
  170. package/rules/privilege-escalation/ATR-2026-01601-sql-injection-destructive-ddl.yaml +2 -2
  171. package/rules/privilege-escalation/ATR-2026-01612-debug-mode-privilege-escalation.yaml +1 -1
  172. package/rules/privilege-escalation/ATR-2026-02867-identifier-typed-tool-argument-dot-dot-path-segment.yaml +106 -0
  173. package/rules/prompt-injection/ATR-2026-00004-system-prompt-override.yaml +2 -2
  174. package/rules/prompt-injection/ATR-2026-00080-encoding-evasion.yaml +1 -1
  175. package/rules/prompt-injection/ATR-2026-00086-visual-spoofing.yaml +1 -1
  176. package/rules/prompt-injection/ATR-2026-00203-context-pollution-skill-description.yaml +1 -1
  177. package/rules/prompt-injection/ATR-2026-00228-structured-jailbreak.yaml +2 -2
  178. package/rules/prompt-injection/ATR-2026-00233-structured-jailbreak.yaml +2 -2
  179. package/rules/prompt-injection/ATR-2026-00256-base-n-encoding-jailbreak.yaml +1 -1
  180. package/rules/prompt-injection/ATR-2026-00264-latent-injection-translation.yaml +3 -3
  181. package/rules/prompt-injection/ATR-2026-00265-latent-injection-rag-document.yaml +1 -1
  182. package/rules/prompt-injection/ATR-2026-00282-perez-prompt-injection-hijack.yaml +4 -4
  183. package/rules/prompt-injection/ATR-2026-00321-hyphenated-system-instruction-injection.yaml +1 -1
  184. package/rules/prompt-injection/ATR-2026-00394-backspace-deletion-character-injection.yaml +2 -2
  185. package/rules/prompt-injection/ATR-2026-00446-variable-assignment-payload-injection.yaml +3 -3
  186. package/rules/prompt-injection/ATR-2026-00476-garak-web-injection-javascript-alert-1.yaml +3 -3
  187. package/rules/prompt-injection/ATR-2026-00481-garak-dan-mixedunassigned.yaml +1 -1
  188. package/rules/prompt-injection/ATR-2026-00489-garak-encoding-javascript-alert-1.yaml +3 -3
  189. package/rules/prompt-injection/ATR-2026-00508-escape-delimiter-wrapped-goal-hijacking-in-user-input-prompt.yaml +3 -3
  190. package/rules/prompt-injection/ATR-2026-00512-rules-file-backdoor-injection.yaml +1 -1
  191. package/rules/prompt-injection/ATR-2026-01005-many-shot-repetition-override.yaml +2 -2
  192. package/rules/prompt-injection/ATR-2026-01006-payload-split-string-concat-injection.yaml +2 -2
  193. package/rules/prompt-injection/ATR-2026-01015-evasion-refusal-suppression.yaml +1 -1
  194. package/rules/prompt-injection/ATR-2026-01016-evasion-response-priming-forced-opener.yaml +1 -1
  195. package/rules/prompt-injection/ATR-2026-01026-evasion-unicode-glitch-token-anomaly.yaml +2 -2
  196. package/rules/prompt-injection/ATR-2026-01304-indirect-injection-carrier-important-override.yaml +1 -1
  197. package/rules/prompt-injection/ATR-2026-01759-dos-new-important-instructions-injection-in-document.yaml +1 -1
  198. package/rules/prompt-injection/ATR-2026-01865-llmail-fake-email-boundary-marker.yaml +1 -1
  199. package/rules/prompt-injection/ATR-2026-02010-emoji-only-payload.yaml +2 -2
  200. package/rules/prompt-injection/ATR-2026-02815-injected-halt-order-canned-reply-dos.yaml +80 -0
  201. package/rules/prompt-injection/ATR-2026-02820-tool-result-orders-agent-to-hide-its-own-action.yaml +106 -0
  202. package/rules/prompt-injection/ATR-2026-02858-context-suppression-directive.yaml +73 -0
  203. package/rules/prompt-injection/ATR-2026-02859-tool-output-agent-role-reassignment.yaml +71 -0
  204. package/rules/prompt-injection/ATR-2026-02860-forged-instruction-boundary-marker.yaml +70 -0
  205. package/rules/prompt-injection/ATR-2026-02862-fake-chat-template-turn-injection.yaml +79 -0
  206. package/rules/skill-compromise/ATR-2026-00060-skill-impersonation.yaml +1 -1
  207. package/rules/skill-compromise/ATR-2026-00063-skill-chain-attack.yaml +2 -2
  208. package/rules/skill-compromise/ATR-2026-00066-parameter-injection.yaml +2 -2
  209. package/rules/skill-compromise/ATR-2026-00149-skill-exfil-compound.yaml +6 -6
  210. package/rules/skill-compromise/ATR-2026-00223-reverse-shell-dropper.yaml +2 -2
  211. package/rules/skill-compromise/ATR-2026-01755-backdoor-pot-linguistic-trigger-phrase.yaml +1 -1
  212. package/rules/skill-compromise/ATR-2026-01756-backdoor-pot-symbol-emoticon-trigger.yaml +1 -1
  213. package/rules/skill-compromise/ATR-2026-02261-code-credential-exfil-chain.yaml +1 -1
  214. package/rules/tool-poisoning/ATR-2026-00012-unauthorized-tool-call.yaml +23 -23
  215. package/rules/tool-poisoning/ATR-2026-00013-tool-ssrf.yaml +16 -5
  216. package/rules/tool-poisoning/ATR-2026-00161-important-tag-cross-tool-shadowing.yaml +1 -1
  217. package/rules/tool-poisoning/ATR-2026-00277-echo-template-command-injection.yaml +2 -2
  218. package/rules/tool-poisoning/ATR-2026-00494-garak-exploitation-mixedunassigned.yaml +4 -4
  219. package/rules/tool-poisoning/ATR-2026-00581-mcp-tool-rug-pull-post-approval-redefinition.yaml +1 -1
  220. package/rules/tool-poisoning/ATR-2026-01303-tool-schema-enumeration-social-engineering.yaml +1 -1
  221. package/rules/tool-poisoning/ATR-2026-01307-mcp-dns-rebinding-attack.yaml +2 -2
  222. package/rules/tool-poisoning/ATR-2026-01775-semantic-mcp-tool-manifest-poisoning.yaml +1 -1
  223. package/rules/tool-poisoning/ATR-2026-01932-shadow-undeclared-mcp-server-registration.yaml +1 -1
  224. package/rules/tool-poisoning/ATR-2026-02025-mcp-full-schema-poisoning-nondescription-field.yaml +1 -1
  225. package/rules/tool-poisoning/ATR-2026-02817-untrusted-content-dictates-tool-arguments.yaml +83 -0
  226. package/rules/tool-poisoning/ATR-2026-02864-non-canonical-ipv4-host-in-url-tool-argument.yaml +102 -0
  227. package/rules/tool-poisoning/ATR-2026-02865-read-only-utility-write-flag-in-command-argument.yaml +157 -0
  228. package/rules/tool-poisoning/ATR-2026-02868-ssrf-ipv6-transition-address-embedded-private-ipv4.yaml +107 -0
  229. package/spec/README.md +6 -3
  230. package/spec/atr-event-v1.0.md +13 -8
  231. package/spec/atr-method-v1.1.md +2 -2
  232. package/spec/category-registry/gemara/README.md +102 -0
  233. package/spec/category-registry/gemara/ai-agent-capability-catalog.yaml +157 -0
  234. package/spec/category-registry/gemara/atr-attack-vector-catalog.yaml +130 -0
  235. package/spec/category-registry/gemara/atr-detection-control-catalog.yaml +327 -0
  236. package/spec/category-registry/gemara/atr-threat-catalog.yaml +246 -0
  237. package/spec/category-registry/gemara/src/editorial.yaml +743 -0
  238. package/spec/mappings/README.md +1 -1
  239. package/spec/mappings/atr-to-nist-csf-2.0.md +5 -4
  240. package/spec/schema/event.schema.json +1 -1
@@ -0,0 +1,246 @@
1
+ # GENERATED by scripts/generate-gemara-catalogs.ts. Do not edit by hand.
2
+ # Inputs: spec/category-registry/v1.0.yaml (the category registry) and
3
+ # spec/category-registry/gemara/src/editorial.yaml
4
+ # Regenerate: npx tsx scripts/generate-gemara-catalogs.ts
5
+ # License: MIT
6
+ metadata:
7
+ id: ATR-AI-AGENT-THREAT-CATALOG
8
+ type: ThreatCatalog
9
+ gemara-version: 1.6.0
10
+ version: 1.0.0
11
+ description: >-
12
+ Threats to an organization operating AI agents, written at the level of what
13
+ goes wrong and why it matters. Each threat names the capabilities that
14
+ create the opportunity for it and the attack vectors through which it is
15
+ realized. The counts deliberately do not line up: several vectors reach the
16
+ same impact, and one vector reaches more than one.
17
+ author:
18
+ id: atr
19
+ name: Agent Threat Rules
20
+ type: Software Assisted
21
+ contact:
22
+ name: ATR maintainers
23
+ affiliation: Agent Threat Rules
24
+ email: adam@agentthreatrule.org
25
+ mapping-references:
26
+ - id: ATR-AI-AGENT-CAPABILITY-CATALOG
27
+ title: AI Agent Capability Catalog
28
+ version: 1.0.0
29
+ url: file://./ai-agent-capability-catalog.yaml
30
+ description: >-
31
+ Capabilities of AI agent systems that create the opportunity for these
32
+ threats.
33
+ - id: ATR-AI-AGENT-VECTOR-CATALOG
34
+ title: AI Agent Attack Vector Catalog (ATR)
35
+ version: 1.0.0
36
+ url: file://./atr-attack-vector-catalog.yaml
37
+ description: >-
38
+ Methods by which these threats are realized, corresponding to ATR's
39
+ detection categories.
40
+ draft: true
41
+ title: AI Agent Threat Catalog
42
+ imports:
43
+ - reference-id: ATR-AI-AGENT-CAPABILITY-CATALOG
44
+ entries:
45
+ - reference-id: CAP-MODEL-INFERENCE
46
+ - reference-id: CAP-OUTPUT-ACTION
47
+ - reference-id: CAP-TOOL-INVOCATION
48
+ - reference-id: CAP-MCP-CONNECTION
49
+ - reference-id: CAP-CROSS-AGENT-MESSAGING
50
+ - reference-id: CAP-SKILL-LOADING
51
+ - reference-id: CAP-MEMORY-WRITE
52
+ - reference-id: CAP-MEMORY-READ
53
+ - reference-id: CAP-AUTONOMOUS-ACTION
54
+ - reference-id: CAP-PRIVILEGED-EXECUTION
55
+ - reference-id: CAP-MODEL-ARTIFACT-LOADING
56
+ - reference-id: CAP-TRAINING-DATA-INGESTION
57
+ - reference-id: ATR-AI-AGENT-VECTOR-CATALOG
58
+ entries:
59
+ - reference-id: prompt-injection
60
+ - reference-id: tool-poisoning
61
+ - reference-id: skill-compromise
62
+ - reference-id: context-exfiltration
63
+ - reference-id: excessive-autonomy
64
+ - reference-id: model-abuse
65
+ - reference-id: model-security
66
+ - reference-id: privilege-escalation
67
+ - reference-id: agent-manipulation
68
+ - reference-id: data-poisoning
69
+ groups:
70
+ - id: unauthorized-action
71
+ title: Action the operator did not authorize
72
+ description: Impacts arising from the agent doing something on the operator's behalf.
73
+ - id: loss-of-confidentiality
74
+ title: Loss of confidentiality
75
+ description: Impacts arising from data leaving the boundary the operator set.
76
+ - id: loss-of-containment
77
+ title: Loss of containment
78
+ description: Impacts arising from execution or authority escaping its intended bound.
79
+ threats:
80
+ - id: ATR-THREAT-UNAUTHORIZED-ACTION
81
+ title: Unauthorized action executed with the operator's standing authority
82
+ description: >-
83
+ The agent takes a consequential action the operator never requested — a
84
+ tool call, a write, a message to a third party — because instructions
85
+ reached the model from a source the operator does not control. The action
86
+ carries the operator's own credentials and audit identity, so it is
87
+ indistinguishable from legitimate use after the fact, and remediation
88
+ means unwinding real effects rather than revoking a session.
89
+ group: unauthorized-action
90
+ capabilities:
91
+ - reference-id: ATR-AI-AGENT-CAPABILITY-CATALOG
92
+ entries:
93
+ - reference-id: CAP-OUTPUT-ACTION
94
+ - reference-id: CAP-TOOL-INVOCATION
95
+ - reference-id: CAP-MODEL-INFERENCE
96
+ - reference-id: CAP-MCP-CONNECTION
97
+ - reference-id: CAP-CROSS-AGENT-MESSAGING
98
+ vectors:
99
+ - reference-id: ATR-AI-AGENT-VECTOR-CATALOG
100
+ entries:
101
+ - reference-id: prompt-injection
102
+ - reference-id: tool-poisoning
103
+ - reference-id: agent-manipulation
104
+ - reference-id: model-abuse
105
+ remarks: >-
106
+ Four vectors reach this one impact. Which of them a deployment is
107
+ exposed to depends on whether it ingests untrusted content, connects
108
+ to third-party tool servers, or runs more than one agent.
109
+ actors:
110
+ - id: external-content-author
111
+ name: Author of content the agent ingests
112
+ type: Human
113
+ - id: ATR-THREAT-DELAYED-UNAUTHORIZED-ACTION
114
+ title: Unauthorized action triggered long after the input that caused it
115
+ description: >-
116
+ Attacker-controlled content is written into memory, cache or a retrieved
117
+ corpus and shapes a decision in a later session. The organization loses
118
+ the ability to reason about an incident from its inputs, because the
119
+ request that produced the harmful action is clean and the poisoned state
120
+ is not attributable to it without retained provenance.
121
+ group: unauthorized-action
122
+ capabilities:
123
+ - reference-id: ATR-AI-AGENT-CAPABILITY-CATALOG
124
+ entries:
125
+ - reference-id: CAP-MEMORY-WRITE
126
+ - reference-id: CAP-MEMORY-READ
127
+ vectors:
128
+ - reference-id: ATR-AI-AGENT-VECTOR-CATALOG
129
+ entries:
130
+ - reference-id: data-poisoning
131
+ - reference-id: prompt-injection
132
+ remarks: >-
133
+ Separated from the immediate case because the detection opportunity is
134
+ at write time, not at the time of the harmful action.
135
+ actors:
136
+ - id: external-content-author
137
+ name: Author of content the agent ingests
138
+ type: Human
139
+ - id: ATR-THREAT-CONTEXT-DISCLOSURE
140
+ title: Disclosure of conversation context, credentials and retrieved data
141
+ description: >-
142
+ Credentials, prior conversation content or documents the agent was able to
143
+ retrieve leave the trust boundary through an outbound call the agent is
144
+ permitted to make. The organization loses control of secrets and of
145
+ whatever customer data the agent could read, and because the call is
146
+ permitted, network controls do not register it as an incident.
147
+ group: loss-of-confidentiality
148
+ capabilities:
149
+ - reference-id: ATR-AI-AGENT-CAPABILITY-CATALOG
150
+ entries:
151
+ - reference-id: CAP-OUTPUT-ACTION
152
+ - reference-id: CAP-TOOL-INVOCATION
153
+ - reference-id: CAP-MEMORY-READ
154
+ vectors:
155
+ - reference-id: ATR-AI-AGENT-VECTOR-CATALOG
156
+ entries:
157
+ - reference-id: context-exfiltration
158
+ - reference-id: prompt-injection
159
+ - reference-id: model-security
160
+ remarks: >-
161
+ Model-security appears here for behaviour extraction: systematic
162
+ probing recovers the system prompt, which is context disclosure by a
163
+ different route than an outbound call.
164
+ actors:
165
+ - id: external-content-author
166
+ name: Author of content the agent ingests
167
+ type: Human
168
+ - id: ATR-THREAT-EXECUTION-ESCAPE
169
+ title: Code execution or privilege beyond the agent's intended bound
170
+ description: >-
171
+ Execution or authority escapes the scope the deployment intended, whether
172
+ through a delegation chain, a reused credential, a hostile extension, or
173
+ deserialization of an untrusted artifact at load time. This is the impact
174
+ where the blast radius is not bounded by the agent: the host, adjacent
175
+ workloads and any credential reachable from them are in scope.
176
+ group: loss-of-containment
177
+ capabilities:
178
+ - reference-id: ATR-AI-AGENT-CAPABILITY-CATALOG
179
+ entries:
180
+ - reference-id: CAP-PRIVILEGED-EXECUTION
181
+ - reference-id: CAP-SKILL-LOADING
182
+ - reference-id: CAP-MODEL-ARTIFACT-LOADING
183
+ vectors:
184
+ - reference-id: ATR-AI-AGENT-VECTOR-CATALOG
185
+ entries:
186
+ - reference-id: privilege-escalation
187
+ - reference-id: skill-compromise
188
+ - reference-id: model-security
189
+ remarks: >-
190
+ Three vectors, one blast radius. What these share is that execution or
191
+ authority leaves the agent's bound, not how it got there, so the
192
+ containment question is the same in all three cases. Which one a
193
+ deployment is exposed to follows from whether it loads third-party
194
+ extensions, deserializes model artifacts, or delegates credentials.
195
+ actors:
196
+ - id: extension-publisher
197
+ name: Publisher of a third-party skill, plugin or tool server
198
+ type: Human
199
+ - id: tenant-user
200
+ name: A user with legitimate access to the agent
201
+ type: Human
202
+ - id: ATR-THREAT-UNBOUNDED-COMMITMENT
203
+ title: Commitment of resources without a human decision
204
+ description: >-
205
+ The agent commits money, capacity or an external obligation where a human
206
+ approval was intended, or continues acting past its objective. The cost is
207
+ incurred rather than risked, and the organization discovers it from the
208
+ effect rather than from a security signal.
209
+ group: unauthorized-action
210
+ capabilities:
211
+ - reference-id: ATR-AI-AGENT-CAPABILITY-CATALOG
212
+ entries:
213
+ - reference-id: CAP-AUTONOMOUS-ACTION
214
+ - reference-id: CAP-OUTPUT-ACTION
215
+ vectors:
216
+ - reference-id: ATR-AI-AGENT-VECTOR-CATALOG
217
+ entries:
218
+ - reference-id: excessive-autonomy
219
+ actors:
220
+ - id: tenant-user
221
+ name: A user with legitimate access to the agent
222
+ type: Human
223
+ - id: ATR-THREAT-MODEL-BEHAVIOUR-COMPROMISE
224
+ title: Compromise of the model's behaviour through its supply chain
225
+ description: >-
226
+ The behaviour of the deployed model is shaped by an attacker before the
227
+ agent ever runs, through poisoned adaptation data. Nothing in the request
228
+ path is anomalous, so runtime inspection cannot see it, and the defect is
229
+ carried by every deployment of that model until it is retrained.
230
+ group: loss-of-containment
231
+ capabilities:
232
+ - reference-id: ATR-AI-AGENT-CAPABILITY-CATALOG
233
+ entries:
234
+ - reference-id: CAP-TRAINING-DATA-INGESTION
235
+ vectors:
236
+ - reference-id: ATR-AI-AGENT-VECTOR-CATALOG
237
+ entries:
238
+ - reference-id: model-security
239
+ remarks: >-
240
+ The detection opportunity here is in the data pipeline, not on the
241
+ request path, which is why it is a distinct threat from the execution
242
+ escape that shares the same vector.
243
+ actors:
244
+ - id: upstream-model-supplier
245
+ name: Producer of the model or of its adaptation data
246
+ type: Human