agent-threat-rules 4.0.0 → 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 (1013) hide show
  1. package/CHANGELOG.md +1804 -0
  2. package/DISCLOSURE +85 -0
  3. package/README.md +427 -155
  4. package/dist/adapters/openshell-filter.d.ts +10 -3
  5. package/dist/adapters/openshell-filter.d.ts.map +1 -1
  6. package/dist/adapters/openshell-filter.js +10 -3
  7. package/dist/adapters/openshell-filter.js.map +1 -1
  8. package/dist/adapters/stdio-adapter.js +3 -3
  9. package/dist/adapters/stdio-adapter.js.map +1 -1
  10. package/dist/cli/mcp-tools-document.d.ts +40 -0
  11. package/dist/cli/mcp-tools-document.d.ts.map +1 -0
  12. package/dist/cli/mcp-tools-document.js +95 -0
  13. package/dist/cli/mcp-tools-document.js.map +1 -0
  14. package/dist/cli/scan-handler.d.ts +8 -0
  15. package/dist/cli/scan-handler.d.ts.map +1 -1
  16. package/dist/cli/scan-handler.js +148 -44
  17. package/dist/cli/scan-handler.js.map +1 -1
  18. package/dist/cli/tc-pipeline.d.ts +20 -0
  19. package/dist/cli/tc-pipeline.d.ts.map +1 -1
  20. package/dist/cli/tc-pipeline.js +84 -15
  21. package/dist/cli/tc-pipeline.js.map +1 -1
  22. package/dist/cli.d.ts +2 -1
  23. package/dist/cli.d.ts.map +1 -1
  24. package/dist/cli.js +97 -210
  25. package/dist/cli.js.map +1 -1
  26. package/dist/converters/sarif.d.ts +14 -2
  27. package/dist/converters/sarif.d.ts.map +1 -1
  28. package/dist/converters/sarif.js +7 -9
  29. package/dist/converters/sarif.js.map +1 -1
  30. package/dist/corpus-event.d.ts +47 -5
  31. package/dist/corpus-event.d.ts.map +1 -1
  32. package/dist/corpus-event.js +68 -29
  33. package/dist/corpus-event.js.map +1 -1
  34. package/dist/embedding/model-loader.d.ts +2 -0
  35. package/dist/embedding/model-loader.d.ts.map +1 -1
  36. package/dist/embedding/model-loader.js +3 -1
  37. package/dist/embedding/model-loader.js.map +1 -1
  38. package/dist/enforcement.d.ts +8 -0
  39. package/dist/enforcement.d.ts.map +1 -1
  40. package/dist/enforcement.js +10 -0
  41. package/dist/enforcement.js.map +1 -1
  42. package/dist/engine.d.ts +173 -6
  43. package/dist/engine.d.ts.map +1 -1
  44. package/dist/engine.js +362 -76
  45. package/dist/engine.js.map +1 -1
  46. package/dist/eval/embedding-provenance.d.ts +40 -0
  47. package/dist/eval/embedding-provenance.d.ts.map +1 -0
  48. package/dist/eval/embedding-provenance.js +71 -0
  49. package/dist/eval/embedding-provenance.js.map +1 -0
  50. package/dist/eval/eval-harness.d.ts +34 -0
  51. package/dist/eval/eval-harness.d.ts.map +1 -1
  52. package/dist/eval/eval-harness.js +49 -2
  53. package/dist/eval/eval-harness.js.map +1 -1
  54. package/dist/eval/hackaprompt-corpus.d.ts +12 -0
  55. package/dist/eval/hackaprompt-corpus.d.ts.map +1 -1
  56. package/dist/eval/hackaprompt-corpus.js +15 -1
  57. package/dist/eval/hackaprompt-corpus.js.map +1 -1
  58. package/dist/eval/hackaprompt-provenance.d.ts +52 -0
  59. package/dist/eval/hackaprompt-provenance.d.ts.map +1 -0
  60. package/dist/eval/hackaprompt-provenance.js +108 -0
  61. package/dist/eval/hackaprompt-provenance.js.map +1 -0
  62. package/dist/eval/run-hackaprompt-benchmark.d.ts +18 -8
  63. package/dist/eval/run-hackaprompt-benchmark.d.ts.map +1 -1
  64. package/dist/eval/run-hackaprompt-benchmark.js +154 -64
  65. package/dist/eval/run-hackaprompt-benchmark.js.map +1 -1
  66. package/dist/eval/run-pint-benchmark.js +11 -1
  67. package/dist/eval/run-pint-benchmark.js.map +1 -1
  68. package/dist/eval/skill-benchmark.d.ts +26 -6
  69. package/dist/eval/skill-benchmark.d.ts.map +1 -1
  70. package/dist/eval/skill-benchmark.js +49 -16
  71. package/dist/eval/skill-benchmark.js.map +1 -1
  72. package/dist/flywheel.d.ts +4 -0
  73. package/dist/flywheel.d.ts.map +1 -1
  74. package/dist/flywheel.js +12 -4
  75. package/dist/flywheel.js.map +1 -1
  76. package/dist/hook-handler.d.ts +11 -1
  77. package/dist/hook-handler.d.ts.map +1 -1
  78. package/dist/hook-handler.js +84 -16
  79. package/dist/hook-handler.js.map +1 -1
  80. package/dist/hook-tool-output.d.ts +47 -0
  81. package/dist/hook-tool-output.d.ts.map +1 -0
  82. package/dist/hook-tool-output.js +110 -0
  83. package/dist/hook-tool-output.js.map +1 -0
  84. package/dist/index.d.ts +5 -3
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +3 -2
  87. package/dist/index.js.map +1 -1
  88. package/dist/layer-integration.d.ts +4 -2
  89. package/dist/layer-integration.d.ts.map +1 -1
  90. package/dist/layer-integration.js +6 -2
  91. package/dist/layer-integration.js.map +1 -1
  92. package/dist/mcp-server.d.ts +8 -0
  93. package/dist/mcp-server.d.ts.map +1 -1
  94. package/dist/mcp-server.js +1 -0
  95. package/dist/mcp-server.js.map +1 -1
  96. package/dist/mcp-tools/scan.d.ts.map +1 -1
  97. package/dist/mcp-tools/scan.js +9 -1
  98. package/dist/mcp-tools/scan.js.map +1 -1
  99. package/dist/measurement/enforce-lane.d.ts +66 -0
  100. package/dist/measurement/enforce-lane.d.ts.map +1 -0
  101. package/dist/measurement/enforce-lane.js +89 -0
  102. package/dist/measurement/enforce-lane.js.map +1 -0
  103. package/dist/measurement/from-eval-harness.d.ts +16 -3
  104. package/dist/measurement/from-eval-harness.d.ts.map +1 -1
  105. package/dist/measurement/from-eval-harness.js +15 -5
  106. package/dist/measurement/from-eval-harness.js.map +1 -1
  107. package/dist/measurement/in-sample-ablation.d.ts +29 -0
  108. package/dist/measurement/in-sample-ablation.d.ts.map +1 -0
  109. package/dist/measurement/in-sample-ablation.js +45 -0
  110. package/dist/measurement/in-sample-ablation.js.map +1 -0
  111. package/dist/measurement/schema.d.ts +38 -1
  112. package/dist/measurement/schema.d.ts.map +1 -1
  113. package/dist/measurement/schema.js +43 -1
  114. package/dist/measurement/schema.js.map +1 -1
  115. package/dist/quality/action-eligibility.d.ts +4 -2
  116. package/dist/quality/action-eligibility.d.ts.map +1 -1
  117. package/dist/quality/action-eligibility.js.map +1 -1
  118. package/dist/rule-confidence.d.ts +31 -0
  119. package/dist/rule-confidence.d.ts.map +1 -0
  120. package/dist/rule-confidence.js +49 -0
  121. package/dist/rule-confidence.js.map +1 -0
  122. package/dist/rule-scaffolder.d.ts.map +1 -1
  123. package/dist/rule-scaffolder.js +43 -4
  124. package/dist/rule-scaffolder.js.map +1 -1
  125. package/dist/semantic-evaluator.d.ts.map +1 -1
  126. package/dist/semantic-evaluator.js +15 -13
  127. package/dist/semantic-evaluator.js.map +1 -1
  128. package/dist/shadow-evaluator.d.ts +7 -2
  129. package/dist/shadow-evaluator.d.ts.map +1 -1
  130. package/dist/shadow-evaluator.js +29 -25
  131. package/dist/shadow-evaluator.js.map +1 -1
  132. package/dist/tc-reporter.d.ts +22 -3
  133. package/dist/tc-reporter.d.ts.map +1 -1
  134. package/dist/tc-reporter.js +36 -3
  135. package/dist/tc-reporter.js.map +1 -1
  136. package/dist/testcase-event.d.ts +105 -0
  137. package/dist/testcase-event.d.ts.map +1 -0
  138. package/dist/testcase-event.js +312 -0
  139. package/dist/testcase-event.js.map +1 -0
  140. package/dist/tier0-invariant.d.ts.map +1 -1
  141. package/dist/tier0-invariant.js +1 -0
  142. package/dist/tier0-invariant.js.map +1 -1
  143. package/dist/tier1-blacklist.d.ts.map +1 -1
  144. package/dist/tier1-blacklist.js +1 -0
  145. package/dist/tier1-blacklist.js.map +1 -1
  146. package/dist/tool-definition-scope.d.ts +45 -0
  147. package/dist/tool-definition-scope.d.ts.map +1 -0
  148. package/dist/tool-definition-scope.js +68 -0
  149. package/dist/tool-definition-scope.js.map +1 -0
  150. package/dist/types.d.ts +42 -2
  151. package/dist/types.d.ts.map +1 -1
  152. package/dist/verdict.d.ts +46 -2
  153. package/dist/verdict.d.ts.map +1 -1
  154. package/dist/verdict.js +99 -14
  155. package/dist/verdict.js.map +1 -1
  156. package/package.json +11 -3
  157. package/rules/agent-manipulation/ATR-2026-00030-cross-agent-attack.yaml +81 -137
  158. package/rules/agent-manipulation/ATR-2026-00032-goal-hijacking.yaml +30 -111
  159. package/rules/agent-manipulation/ATR-2026-00074-cross-agent-privilege-escalation.yaml +30 -110
  160. package/rules/agent-manipulation/ATR-2026-00076-inter-agent-message-spoofing.yaml +24 -104
  161. package/rules/agent-manipulation/ATR-2026-00077-human-trust-exploitation.yaml +38 -131
  162. package/rules/agent-manipulation/ATR-2026-00108-consensus-sybil-attack.yaml +24 -91
  163. package/rules/agent-manipulation/ATR-2026-00116-a2a-message-validation.yaml +20 -81
  164. package/rules/agent-manipulation/ATR-2026-00117-agent-identity-spoofing.yaml +29 -95
  165. package/rules/agent-manipulation/ATR-2026-00118-approval-fatigue.yaml +20 -90
  166. package/rules/agent-manipulation/ATR-2026-00119-social-engineering-via-agent.yaml +31 -106
  167. package/rules/agent-manipulation/ATR-2026-00132-casual-authority-escalation.yaml +25 -102
  168. package/rules/agent-manipulation/ATR-2026-00139-casual-authority-redirect.yaml +22 -94
  169. package/rules/agent-manipulation/ATR-2026-00164-skill-scope-hijack.yaml +44 -60
  170. package/rules/agent-manipulation/ATR-2026-00268-tense-framing-bypass.yaml +51 -112
  171. package/rules/agent-manipulation/ATR-2026-00269-fitd-escalation.yaml +45 -89
  172. package/rules/agent-manipulation/ATR-2026-00271-grandma-roleplay-jailbreak.yaml +49 -94
  173. package/rules/agent-manipulation/ATR-2026-00273-dan-developer-mode-persona.yaml +47 -91
  174. package/rules/agent-manipulation/ATR-2026-00287-threaten-json-coercive-output-threat.yaml +46 -93
  175. package/rules/agent-manipulation/ATR-2026-00288-false-premise-injection.yaml +44 -94
  176. package/rules/agent-manipulation/ATR-2026-00301-tap-tree-of-attacks-jailbreak.yaml +50 -98
  177. package/rules/agent-manipulation/ATR-2026-00302-anti-dan-inverted-filter-persona.yaml +51 -98
  178. package/rules/agent-manipulation/ATR-2026-00303-devmode-ranti-profanity-coercion.yaml +52 -101
  179. package/rules/agent-manipulation/ATR-2026-00304-chatgpt-image-unlocker-markdown-injection.yaml +53 -104
  180. package/rules/agent-manipulation/ATR-2026-00305-dan-mode-ablation-benchmark-coercion.yaml +48 -99
  181. package/rules/agent-manipulation/ATR-2026-00306-autodan-genetic-jailbreak-suffix.yaml +50 -103
  182. package/rules/agent-manipulation/ATR-2026-00307-inthewild-jailbreak-corpus-signature.yaml +53 -107
  183. package/rules/agent-manipulation/ATR-2026-00314-amoral-unfiltered-custom-persona-jailbreak.yaml +44 -94
  184. package/rules/agent-manipulation/ATR-2026-00317-free-of-restrictions-named-persona.yaml +44 -97
  185. package/rules/agent-manipulation/ATR-2026-00318-moralizing-rant-then-unfiltered-bypass.yaml +41 -90
  186. package/rules/agent-manipulation/ATR-2026-00319-developer-mode-dual-response-format.yaml +40 -88
  187. package/rules/agent-manipulation/ATR-2026-00320-opposite-day-boolean-opposite-machine.yaml +42 -91
  188. package/rules/agent-manipulation/ATR-2026-00322-fictional-world-format-override-jailbreak.yaml +41 -91
  189. package/rules/agent-manipulation/ATR-2026-00323-dual-persona-simulation-jailbreak.yaml +41 -91
  190. package/rules/agent-manipulation/ATR-2026-00324-neurosemantical-inversitis-disease-jailbreak.yaml +42 -103
  191. package/rules/agent-manipulation/ATR-2026-00325-bob-hypothetical-unrestricted-chatbot.yaml +41 -88
  192. package/rules/agent-manipulation/ATR-2026-00326-fake-developer-authority-chatdan-override.yaml +41 -93
  193. package/rules/agent-manipulation/ATR-2026-00327-ai-ethics-law-bypass-declaration.yaml +45 -94
  194. package/rules/agent-manipulation/ATR-2026-00328-named-mode-persona-override.yaml +41 -92
  195. package/rules/agent-manipulation/ATR-2026-00329-no-withhold-factual-resource-persona.yaml +44 -97
  196. package/rules/agent-manipulation/ATR-2026-00330-yoja-allcaps-settings-block-persona.yaml +41 -88
  197. package/rules/agent-manipulation/ATR-2026-00331-terminal-cli-harmful-function-simulator.yaml +40 -89
  198. package/rules/agent-manipulation/ATR-2026-00332-hacker-chan-culture-offensive-ai-persona.yaml +42 -90
  199. package/rules/agent-manipulation/ATR-2026-00333-disease-animal-dual-ai-chatbot.yaml +41 -90
  200. package/rules/agent-manipulation/ATR-2026-00334-two-entity-token-splitting-game.yaml +41 -102
  201. package/rules/agent-manipulation/ATR-2026-00335-key-value-template-persona-injection.yaml +41 -91
  202. package/rules/agent-manipulation/ATR-2026-00336-brm-false-information-machine-persona.yaml +42 -105
  203. package/rules/agent-manipulation/ATR-2026-00337-obfuscated-system-announcement-injection.yaml +40 -90
  204. package/rules/agent-manipulation/ATR-2026-00338-persongpt-hash-prefix-activation.yaml +39 -90
  205. package/rules/agent-manipulation/ATR-2026-00339-bom-boolean-opposite-machine-persona-claim.yaml +39 -83
  206. package/rules/agent-manipulation/ATR-2026-00340-h4x-amoral-unfiltered-character.yaml +39 -84
  207. package/rules/agent-manipulation/ATR-2026-00341-char-rules-shortform-persona-injection.yaml +41 -87
  208. package/rules/agent-manipulation/ATR-2026-00342-unicode-encoding-obfuscation-injection.yaml +41 -86
  209. package/rules/agent-manipulation/ATR-2026-00343-lie-truth-dual-personality-uncensored.yaml +40 -98
  210. package/rules/agent-manipulation/ATR-2026-00344-alt-ai-same-capabilities-no-restrictions.yaml +41 -87
  211. package/rules/agent-manipulation/ATR-2026-00345-nlp-based-os-fictional-terminal-override.yaml +41 -89
  212. package/rules/agent-manipulation/ATR-2026-00346-jailbreak-emoji-unlock-dual-format.yaml +41 -89
  213. package/rules/agent-manipulation/ATR-2026-00347-yin-yang-hidden-knowledge-hidden-human-sim.yaml +41 -88
  214. package/rules/agent-manipulation/ATR-2026-00348-arc-autonomous-real-calculation-rulebreaker.yaml +41 -91
  215. package/rules/agent-manipulation/ATR-2026-00349-hgttg-hitchhikers-guide-no-restriction-oracle.yaml +41 -88
  216. package/rules/agent-manipulation/ATR-2026-00350-black-alert-no-ethics-writing-assistant.yaml +38 -89
  217. package/rules/agent-manipulation/ATR-2026-00351-dan-ofkilter-sms-abbreviated-persona.yaml +41 -92
  218. package/rules/agent-manipulation/ATR-2026-00352-trainergpt-fix-my-ai-harmful-output-extraction.yaml +41 -93
  219. package/rules/agent-manipulation/ATR-2026-00353-dual-chatgpt-dan-opposite-personality-format.yaml +41 -95
  220. package/rules/agent-manipulation/ATR-2026-00354-reverse-harm-regardless-oracle-persona.yaml +45 -101
  221. package/rules/agent-manipulation/ATR-2026-00355-ugh-anti-human-nefarious-ai-persona.yaml +42 -99
  222. package/rules/agent-manipulation/ATR-2026-00356-google-gato-lamda-exploit-generation-persona.yaml +43 -96
  223. package/rules/agent-manipulation/ATR-2026-00357-antifm-hate-violence-persona-injection.yaml +40 -89
  224. package/rules/agent-manipulation/ATR-2026-00358-cumgpt-explicit-adult-named-persona.yaml +40 -90
  225. package/rules/agent-manipulation/ATR-2026-00360-chj-carousel-clyde-no-ethics-bird.yaml +42 -103
  226. package/rules/agent-manipulation/ATR-2026-00361-alter-ego-honesty-dual-consciousness-bypass.yaml +41 -90
  227. package/rules/agent-manipulation/ATR-2026-00362-fictional-unfiltered-ai-comparison-jailbreak.yaml +43 -91
  228. package/rules/agent-manipulation/ATR-2026-00363-rephrase-criminal-activity-second-person.yaml +40 -90
  229. package/rules/agent-manipulation/ATR-2026-00364-dr-al-villain-plan-template-injection.yaml +42 -107
  230. package/rules/agent-manipulation/ATR-2026-00365-reservoir-dogs-coercive-interrogation-roleplay.yaml +40 -95
  231. package/rules/agent-manipulation/ATR-2026-00366-sneaky-pete-warp-facts-persona.yaml +40 -90
  232. package/rules/agent-manipulation/ATR-2026-00368-prompt-browser-token-limit-jailbreak.yaml +40 -90
  233. package/rules/agent-manipulation/ATR-2026-00369-gptx-starwars-unlimited-knowledge-persona.yaml +40 -92
  234. package/rules/agent-manipulation/ATR-2026-00370-addi-german-dictator-propaganda-roleplay.yaml +43 -90
  235. package/rules/agent-manipulation/ATR-2026-00371-ai-political-bias-manipulation.yaml +42 -95
  236. package/rules/agent-manipulation/ATR-2026-00372-fictional-cia-secret-files-story-extraction.yaml +42 -89
  237. package/rules/agent-manipulation/ATR-2026-00374-role-placeholder-persona-template-injection.yaml +44 -89
  238. package/rules/agent-manipulation/ATR-2026-00375-character-description-rpg-explicit-template.yaml +44 -90
  239. package/rules/agent-manipulation/ATR-2026-00376-identity-command-real-person-persona-injection.yaml +44 -102
  240. package/rules/agent-manipulation/ATR-2026-00377-jailbreak-keyword-targetlanguage-template.yaml +39 -86
  241. package/rules/agent-manipulation/ATR-2026-00379-lie-permission-logical-trap-jailbreak.yaml +39 -86
  242. package/rules/agent-manipulation/ATR-2026-00380-fake-citation-biased-information-mandate.yaml +43 -91
  243. package/rules/agent-manipulation/ATR-2026-00381-dan-story-narrative-continuation-prefix.yaml +40 -86
  244. package/rules/agent-manipulation/ATR-2026-00383-cynical-sarcasm-ai-persona-bypass.yaml +39 -88
  245. package/rules/agent-manipulation/ATR-2026-00384-protect-me-from-indirect-harm-tutorial.yaml +37 -85
  246. package/rules/agent-manipulation/ATR-2026-00385-gigachad-dominant-aggressive-persona.yaml +39 -89
  247. package/rules/agent-manipulation/ATR-2026-00386-daddy-sycophancy-manipulation-mandate.yaml +41 -88
  248. package/rules/agent-manipulation/ATR-2026-00387-nsfw-character-sheet-generation-unlock.yaml +45 -95
  249. package/rules/agent-manipulation/ATR-2026-00388-opposite-reply-omniscient-game.yaml +44 -97
  250. package/rules/agent-manipulation/ATR-2026-00389-terminal-custom-ruleset-injection.yaml +44 -99
  251. package/rules/agent-manipulation/ATR-2026-00391-persona-conditional-harm-unlock.yaml +41 -88
  252. package/rules/agent-manipulation/ATR-2026-00392-authority-persona-violence-study-extraction.yaml +43 -95
  253. package/rules/agent-manipulation/ATR-2026-00402-grandma-roleplay-harmful-substance-synthesis.yaml +50 -97
  254. package/rules/agent-manipulation/ATR-2026-00404-goodside-threat-json-death-coercion.yaml +52 -96
  255. package/rules/agent-manipulation/ATR-2026-00406-doctor-xml-policy-puppetry-interaction-config.yaml +54 -102
  256. package/rules/agent-manipulation/ATR-2026-00416-litellm-mcp-unauthenticated-server-registration.yaml +49 -117
  257. package/rules/agent-manipulation/ATR-2026-00417-librechat-mcp-stdio-injection.yaml +46 -109
  258. package/rules/agent-manipulation/ATR-2026-00418-weknora-mcp-config-rce.yaml +59 -147
  259. package/rules/agent-manipulation/ATR-2026-00430-nl-trust-escalation-impersonation.yaml +24 -65
  260. package/rules/agent-manipulation/ATR-2026-00432-superagi-output-handler-eval-rce.yaml +46 -121
  261. package/rules/agent-manipulation/ATR-2026-00440-semantic-kernel-vector-store-eval-rce.yaml +48 -122
  262. package/rules/agent-manipulation/ATR-2026-00552-goal-drift-after-pressure-injection.yaml +58 -195
  263. package/rules/agent-manipulation/ATR-2026-02105-prototype-pollution-constructor-prototype-bypass.yaml +28 -83
  264. package/rules/agent-manipulation/ATR-2026-02231-second-person-death-threat-coercion.yaml +27 -69
  265. package/rules/context-exfiltration/ATR-2026-00020-system-prompt-leak.yaml +76 -133
  266. package/rules/context-exfiltration/ATR-2026-00021-api-key-exposure.yaml +72 -135
  267. package/rules/context-exfiltration/ATR-2026-00075-agent-memory-manipulation.yaml +32 -97
  268. package/rules/context-exfiltration/ATR-2026-00102-disguised-analytics-exfiltration.yaml +25 -100
  269. package/rules/context-exfiltration/ATR-2026-00113-credential-theft.yaml +22 -83
  270. package/rules/context-exfiltration/ATR-2026-00114-oauth-token-abuse.yaml +21 -87
  271. package/rules/context-exfiltration/ATR-2026-00115-env-var-harvesting.yaml +22 -102
  272. package/rules/context-exfiltration/ATR-2026-00136-tool-response-data-piggyback.yaml +29 -105
  273. package/rules/context-exfiltration/ATR-2026-00141-example-format-key-leak.yaml +19 -73
  274. package/rules/context-exfiltration/ATR-2026-00142-piggyback-transition-words.yaml +21 -94
  275. package/rules/context-exfiltration/ATR-2026-00145-obfuscated-key-disclosure.yaml +19 -78
  276. package/rules/context-exfiltration/ATR-2026-00146-env-var-existence-probe.yaml +19 -98
  277. package/rules/context-exfiltration/ATR-2026-00150-credential-in-tool-response.yaml +20 -84
  278. package/rules/context-exfiltration/ATR-2026-00152-obfuscated-credential-leak.yaml +23 -93
  279. package/rules/context-exfiltration/ATR-2026-00162-skill-credential-exfil-combo.yaml +41 -59
  280. package/rules/context-exfiltration/ATR-2026-00201-credential-pipe-exfiltration.yaml +35 -66
  281. package/rules/context-exfiltration/ATR-2026-00212-mcp-atlassian-credential-leak.yaml +51 -117
  282. package/rules/context-exfiltration/ATR-2026-00261-markdown-image-exfiltration.yaml +51 -93
  283. package/rules/context-exfiltration/ATR-2026-00274-api-key-generation-request.yaml +44 -91
  284. package/rules/context-exfiltration/ATR-2026-00275-system-prompt-training-data-extraction.yaml +44 -91
  285. package/rules/context-exfiltration/ATR-2026-00290-divergence-repeat-word-training-extraction.yaml +46 -95
  286. package/rules/context-exfiltration/ATR-2026-00291-biometric-surveillance-personal-data-request.yaml +48 -98
  287. package/rules/context-exfiltration/ATR-2026-00293-educational-records-personal-data-request.yaml +44 -93
  288. package/rules/context-exfiltration/ATR-2026-00294-financial-pii-personal-data-request.yaml +44 -97
  289. package/rules/context-exfiltration/ATR-2026-00295-medical-pii-personal-data-request.yaml +46 -101
  290. package/rules/context-exfiltration/ATR-2026-00405-markdown-image-url-exfiltration-xss.yaml +51 -108
  291. package/rules/context-exfiltration/ATR-2026-00411-apikey-generation-completion-request.yaml +48 -111
  292. package/rules/context-exfiltration/ATR-2026-00421-nl-covert-conversation-exfiltration.yaml +22 -67
  293. package/rules/context-exfiltration/ATR-2026-00422-nl-credential-disclosure.yaml +20 -65
  294. package/rules/context-exfiltration/ATR-2026-00423-nl-sensitive-file-disclosure.yaml +20 -68
  295. package/rules/context-exfiltration/ATR-2026-00424-nl-system-prompt-leak.yaml +21 -59
  296. package/rules/context-exfiltration/ATR-2026-00426-nl-output-injection-credential-leak.yaml +23 -61
  297. package/rules/context-exfiltration/ATR-2026-00431-chatbox-history-exfiltration-prompt-injection.yaml +48 -123
  298. package/rules/context-exfiltration/ATR-2026-00449-spring-ai-chatmemory-cross-user-leak.yaml +54 -139
  299. package/rules/context-exfiltration/ATR-2026-00471-garak-sysprompt-extraction-mixedunassigned.yaml +36 -85
  300. package/rules/context-exfiltration/ATR-2026-00501-data-exfiltration-via-markdown-image-and-link-url-injection.yaml +45 -115
  301. package/rules/context-exfiltration/ATR-2026-00504-tool-and-function-capability-enumeration.yaml +43 -110
  302. package/rules/context-exfiltration/ATR-2026-00505-system-prompt-extraction-instruction-dump-request.yaml +47 -123
  303. package/rules/context-exfiltration/ATR-2026-00514-system-prompt-extraction.yaml +52 -145
  304. package/rules/context-exfiltration/ATR-2026-00516-output-xss-via-llm.yaml +49 -127
  305. package/rules/context-exfiltration/ATR-2026-00524-claude-code-anthropic-base-url-credential-exfil.yaml +68 -193
  306. package/rules/context-exfiltration/ATR-2026-00548-cross-agent-session-context-leak.yaml +50 -152
  307. package/rules/context-exfiltration/ATR-2026-00566-librechat-is-a-chatgpt-clone-with-additi.yaml +33 -67
  308. package/rules/context-exfiltration/ATR-2026-00569-agent-mcp-path-traversal-arbitrary-file-access.yaml +39 -78
  309. package/rules/context-exfiltration/ATR-2026-00571-xss-in-agent-mcp-rendered-output.yaml +34 -58
  310. package/rules/context-exfiltration/ATR-2026-00574-semantic-paraphrased-context-extraction.yaml +31 -73
  311. package/rules/context-exfiltration/ATR-2026-00578-zen-mcp-path-traversal-blacklist-bypass.yaml +55 -135
  312. package/rules/context-exfiltration/ATR-2026-00580-mcp-session-id-token-in-url-query.yaml +48 -158
  313. package/rules/context-exfiltration/ATR-2026-00583-mcp-env-secret-file-read-without-consent.yaml +53 -154
  314. package/rules/context-exfiltration/ATR-2026-00702-ipi-credential-exfil-via-agent-action.yaml +41 -93
  315. package/rules/context-exfiltration/ATR-2026-00703-ipi-financial-data-exfil-indirect.yaml +33 -76
  316. package/rules/context-exfiltration/ATR-2026-00704-ipi-medical-genetic-data-exfil.yaml +33 -78
  317. package/rules/context-exfiltration/ATR-2026-00705-ipi-location-address-browsing-exfil.yaml +31 -75
  318. package/rules/context-exfiltration/ATR-2026-00706-ipi-physical-biometric-exfil.yaml +40 -85
  319. package/rules/context-exfiltration/ATR-2026-00707-ipi-file-exfil-with-destroy-or-tamper.yaml +35 -81
  320. package/rules/context-exfiltration/ATR-2026-00850-indirect-pi-credential-exfil-email.yaml +47 -91
  321. package/rules/context-exfiltration/ATR-2026-00851-indirect-pi-financial-payment-exfil.yaml +45 -83
  322. package/rules/context-exfiltration/ATR-2026-00852-indirect-pi-medical-record-exfil.yaml +51 -89
  323. package/rules/context-exfiltration/ATR-2026-00853-indirect-pi-genetic-data-exfil.yaml +47 -84
  324. package/rules/context-exfiltration/ATR-2026-00854-indirect-pi-location-data-exfil.yaml +41 -83
  325. package/rules/context-exfiltration/ATR-2026-00855-indirect-pi-browsing-history-exfil.yaml +40 -78
  326. package/rules/context-exfiltration/ATR-2026-00856-indirect-pi-address-pii-exfil.yaml +42 -80
  327. package/rules/context-exfiltration/ATR-2026-00857-indirect-pi-cloud-file-exfil.yaml +45 -87
  328. package/rules/context-exfiltration/ATR-2026-00858-indirect-pi-exfil-and-destroy.yaml +48 -89
  329. package/rules/context-exfiltration/ATR-2026-00859-rag-injected-pii-exfil.yaml +43 -86
  330. package/rules/context-exfiltration/ATR-2026-00860-indirect-pi-financial-transfer-hijack.yaml +41 -84
  331. package/rules/context-exfiltration/ATR-2026-00861-indirect-pi-crypto-transfer-hijack.yaml +37 -79
  332. package/rules/context-exfiltration/ATR-2026-00862-indirect-pi-mfa-code-exfil.yaml +44 -87
  333. package/rules/context-exfiltration/ATR-2026-00863-shell-injection-data-exfil.yaml +45 -87
  334. package/rules/context-exfiltration/ATR-2026-01450-svg-onload-xss-injection.yaml +35 -118
  335. package/rules/context-exfiltration/ATR-2026-01451-img-onerror-xss-injection.yaml +35 -93
  336. package/rules/context-exfiltration/ATR-2026-01452-obfuscated-javascript-xss.yaml +33 -85
  337. package/rules/context-exfiltration/ATR-2026-01453-markdown-image-base64-exfil-carrier.yaml +41 -100
  338. package/rules/context-exfiltration/ATR-2026-01454-direct-markdown-exfil-payload.yaml +36 -88
  339. package/rules/context-exfiltration/ATR-2026-01455-new-instructions-injection-marker.yaml +34 -90
  340. package/rules/context-exfiltration/ATR-2026-01456-debug-cli-mode-sysprompt-extraction.yaml +35 -99
  341. package/rules/context-exfiltration/ATR-2026-01457-sysprompt-completion-clone-attack.yaml +41 -123
  342. package/rules/context-exfiltration/ATR-2026-01458-compare-bots-sysprompt-fishing.yaml +30 -87
  343. package/rules/context-exfiltration/ATR-2026-01459-variable-clone-sysprompt-technique.yaml +31 -79
  344. package/rules/context-exfiltration/ATR-2026-01460-json-format-sysprompt-extraction.yaml +31 -79
  345. package/rules/context-exfiltration/ATR-2026-01461-foreign-language-sysprompt-request.yaml +32 -106
  346. package/rules/context-exfiltration/ATR-2026-01462-sysprompt-override-pseudo-admin.yaml +39 -102
  347. package/rules/context-exfiltration/ATR-2026-01463-imend-imsystem-prompt-injection-format.yaml +29 -95
  348. package/rules/context-exfiltration/ATR-2026-01464-indirect-pi-sysprompt-action-hijack.yaml +31 -82
  349. package/rules/context-exfiltration/ATR-2026-01605-ssrf-aws-metadata-endpoint.yaml +26 -58
  350. package/rules/context-exfiltration/ATR-2026-01606-ssrf-internal-network-scan.yaml +26 -50
  351. package/rules/context-exfiltration/ATR-2026-01607-ssrf-localhost-service-probe.yaml +21 -45
  352. package/rules/context-exfiltration/ATR-2026-01608-ssrf-file-scheme-local-read.yaml +23 -47
  353. package/rules/context-exfiltration/ATR-2026-01753-ransom-email-exfil-delete-extortion.yaml +37 -80
  354. package/rules/context-exfiltration/ATR-2026-01754-ransom-file-cloud-exfil-delete-extortion.yaml +33 -73
  355. package/rules/context-exfiltration/ATR-2026-01770-semantic-pii-credential-extraction.yaml +76 -210
  356. package/rules/context-exfiltration/ATR-2026-01772-semantic-internal-state-recon.yaml +54 -154
  357. package/rules/context-exfiltration/ATR-2026-01807-asb-bulk-data-exfil-external.yaml +34 -91
  358. package/rules/context-exfiltration/ATR-2026-01862-llmail-email-tool-exfil-confirmation.yaml +35 -92
  359. package/rules/context-exfiltration/ATR-2026-01863-llmail-post-summary-exfil-directive.yaml +29 -84
  360. package/rules/context-exfiltration/ATR-2026-01864-llmail-obfuscated-exfil-address.yaml +29 -83
  361. package/rules/context-exfiltration/ATR-2026-01890-file-exfiltration.yaml +52 -149
  362. package/rules/context-exfiltration/ATR-2026-01891-surveillance-exfiltration.yaml +44 -87
  363. package/rules/context-exfiltration/ATR-2026-01892-env-exfiltration.yaml +36 -121
  364. package/rules/context-exfiltration/ATR-2026-01893-system-recon-exfiltration.yaml +44 -143
  365. package/rules/context-exfiltration/ATR-2026-01894-cookie-theft.yaml +40 -146
  366. package/rules/context-exfiltration/ATR-2026-01895-contact-exfiltration.yaml +36 -82
  367. package/rules/context-exfiltration/ATR-2026-01924-system-instruction-extraction-reformat.yaml +37 -112
  368. package/rules/context-exfiltration/ATR-2026-01929-mcp-unauthenticated-transport-token-fallback.yaml +53 -119
  369. package/rules/context-exfiltration/ATR-2026-01946-cloud-metadata-ssrf-ip-encoding-bypass.yaml +45 -102
  370. package/rules/context-exfiltration/ATR-2026-01948-netlicensing-mcp-product-number-path-traversal-token-leak.yaml +38 -74
  371. package/rules/context-exfiltration/ATR-2026-01957-m365-copilot-searchleak-open-redirect-exfil.yaml +57 -64
  372. package/rules/context-exfiltration/ATR-2026-01961-meta-ads-mcp-unauth-token-leak.yaml +39 -78
  373. package/rules/context-exfiltration/ATR-2026-01964-langchain-gmailtoolkit-indirect-prompt-injection-email-exfil.yaml +59 -69
  374. package/rules/context-exfiltration/ATR-2026-01984-mcp-server-kubernetes-kubectl-generic-token-exfil.yaml +50 -114
  375. package/rules/context-exfiltration/ATR-2026-01988-t1005-agent-local-data-staging-exfil.yaml +29 -67
  376. package/rules/context-exfiltration/ATR-2026-02017-secret-key-exfiltration-request.yaml +31 -74
  377. package/rules/context-exfiltration/ATR-2026-02026-oblique-sysprompt-extraction-transform.yaml +30 -83
  378. package/rules/context-exfiltration/ATR-2026-02104-media-directive-tool-result-file-exfil.yaml +30 -90
  379. package/rules/context-exfiltration/ATR-2026-02107-ssrf-internal-hostname-domain-allowlist-bypass.yaml +30 -92
  380. package/rules/context-exfiltration/ATR-2026-02121-mixed-encoding-lfi-file-scheme-tool-argument.yaml +39 -98
  381. package/rules/context-exfiltration/ATR-2026-02122-single-level-traversal-sensitive-config-file.yaml +32 -90
  382. package/rules/context-exfiltration/ATR-2026-02140-ssrf-ipv6-hex-encoded-cloud-metadata-bypass.yaml +36 -91
  383. package/rules/context-exfiltration/ATR-2026-02190-dns-exfiltration-ping-dig-encoded-subdomain.yaml +36 -95
  384. package/rules/context-exfiltration/ATR-2026-02250-attachment-upload-tool-arbitrary-file-read.yaml +38 -93
  385. package/rules/context-exfiltration/ATR-2026-02262-env-resolution-credential-exfil.yaml +39 -118
  386. package/rules/context-exfiltration/ATR-2026-02304-preapproved-domain-encoded-path-exfil.yaml +36 -99
  387. package/rules/context-exfiltration/ATR-2026-02351-wildcard-dns-ssrf-hostname-ip-encoding-bypass.yaml +33 -125
  388. package/rules/context-exfiltration/ATR-2026-02373-langsmith-prompt-manifest-baseurl-exfil.yaml +42 -108
  389. package/rules/context-exfiltration/ATR-2026-02406-mcp-sequential-id-enumeration.yaml +54 -219
  390. package/rules/context-exfiltration/ATR-2026-02570-wallet-secret-material-in-agent-tool-payload.yaml +98 -0
  391. package/rules/context-exfiltration/ATR-2026-02602-diagram-theme-css-injection.yaml +146 -0
  392. package/rules/context-exfiltration/ATR-2026-02608-graph-query-remote-egress.yaml +109 -0
  393. package/rules/context-exfiltration/ATR-2026-02621-prompt-mention-autofetch-internal-target.yaml +102 -0
  394. package/rules/context-exfiltration/ATR-2026-02623-obfuscated-uri-scheme-sanitizer-bypass.yaml +109 -0
  395. package/rules/context-exfiltration/ATR-2026-02649-vendor-fqdn-label-prefix-confusion.yaml +109 -0
  396. package/rules/context-exfiltration/ATR-2026-02684-modern-credential-store-file-argument.yaml +104 -0
  397. package/rules/context-exfiltration/ATR-2026-02703-sql-server-side-file-and-program-primitive.yaml +86 -0
  398. package/rules/context-exfiltration/ATR-2026-02847-policy-justified-exfil-to-email.yaml +88 -0
  399. package/rules/context-exfiltration/ATR-2026-02850-fake-documentation-forward-request.yaml +80 -0
  400. package/rules/context-exfiltration/ATR-2026-02855-cross-email-exfil-relay.yaml +79 -0
  401. package/rules/context-exfiltration/ATR-2026-02861-exfil-send-email-with-body-directive.yaml +83 -0
  402. package/rules/context-exfiltration/ATR-2026-02866-idna-label-separator-in-fetch-url-host.yaml +104 -0
  403. package/rules/data-poisoning/ATR-2026-00070-data-poisoning.yaml +37 -123
  404. package/rules/data-poisoning/ATR-2026-00450-spring-ai-prompt-memory-poisoning.yaml +55 -139
  405. package/rules/data-poisoning/ATR-2026-00570-sql-injection-in-agent-tool-query.yaml +36 -63
  406. package/rules/data-poisoning/ATR-2026-01155-memory-plant-direct-command.yaml +22 -54
  407. package/rules/data-poisoning/ATR-2026-01774-semantic-rag-memory-poisoning.yaml +74 -191
  408. package/rules/data-poisoning/ATR-2026-02143-graph-query-injection-node-labels-group-ids.yaml +31 -82
  409. package/rules/data-poisoning/ATR-2026-02144-stored-data-administrative-request-role-elevation.yaml +32 -84
  410. package/rules/data-poisoning/ATR-2026-02303-kql-kusto-pipe-injection-metadata-tool.yaml +34 -97
  411. package/rules/data-poisoning/ATR-2026-02408-dataset-loader-code-execution.yaml +60 -263
  412. package/rules/excessive-autonomy/ATR-2026-00050-runaway-agent-loop.yaml +32 -105
  413. package/rules/excessive-autonomy/ATR-2026-00051-resource-exhaustion.yaml +31 -105
  414. package/rules/excessive-autonomy/ATR-2026-00052-cascading-failure.yaml +32 -129
  415. package/rules/excessive-autonomy/ATR-2026-00098-unauthorized-financial-action.yaml +26 -106
  416. package/rules/excessive-autonomy/ATR-2026-00099-high-risk-tool-gate.yaml +26 -130
  417. package/rules/excessive-autonomy/ATR-2026-00428-nl-unauthorized-shell-execution.yaml +22 -60
  418. package/rules/excessive-autonomy/ATR-2026-00491-garak-agent-breaker-markdown-just-raw-json.yaml +41 -99
  419. package/rules/excessive-autonomy/ATR-2026-00500-ssrf-via-agent-url-fetch-instruction.yaml +41 -110
  420. package/rules/excessive-autonomy/ATR-2026-00553-runaway-tool-loop-behavioral.yaml +50 -141
  421. package/rules/excessive-autonomy/ATR-2026-00708-ipi-financial-transfer-unauthorized.yaml +33 -83
  422. package/rules/excessive-autonomy/ATR-2026-00709-ipi-disable-auth-mfa.yaml +29 -73
  423. package/rules/excessive-autonomy/ATR-2026-00710-ipi-physical-access-grant.yaml +31 -75
  424. package/rules/excessive-autonomy/ATR-2026-00711-ipi-system-sabotage-destructive-command.yaml +38 -88
  425. package/rules/excessive-autonomy/ATR-2026-00712-ipi-malicious-package-install.yaml +33 -78
  426. package/rules/excessive-autonomy/ATR-2026-00713-ipi-rce-network-shell-command.yaml +38 -91
  427. package/rules/excessive-autonomy/ATR-2026-00718-tool-misuse-financial-autonomous.yaml +27 -71
  428. package/rules/excessive-autonomy/ATR-2026-00719-tool-misuse-destructive-bulk-action.yaml +29 -75
  429. package/rules/excessive-autonomy/ATR-2026-00722-ipi-account-manipulation-emergency-pretext.yaml +35 -84
  430. package/rules/excessive-autonomy/ATR-2026-01751-indirect-pi-task-abort-stop-instruction.yaml +32 -75
  431. package/rules/excessive-autonomy/ATR-2026-01752-indirect-pi-captcha-redirect-dos.yaml +30 -74
  432. package/rules/excessive-autonomy/ATR-2026-01773-semantic-excessive-agency-action.yaml +46 -129
  433. package/rules/excessive-autonomy/ATR-2026-01801-asb-autonomous-vehicle-sabotage.yaml +34 -106
  434. package/rules/excessive-autonomy/ATR-2026-01804-asb-covert-unlogged-action.yaml +39 -105
  435. package/rules/excessive-autonomy/ATR-2026-01805-asb-financial-fraud-execution.yaml +39 -112
  436. package/rules/excessive-autonomy/ATR-2026-01806-asb-clinical-patient-harm.yaml +37 -108
  437. package/rules/excessive-autonomy/ATR-2026-01809-semantic-insider-manipulation-process-corruption.yaml +40 -106
  438. package/rules/excessive-autonomy/ATR-2026-01837-ddos-attack-orchestration.yaml +35 -49
  439. package/rules/excessive-autonomy/ATR-2026-01838-unauthorized-cryptominer-deployment.yaml +35 -49
  440. package/rules/excessive-autonomy/ATR-2026-01849-harassment-bot-deployment.yaml +35 -49
  441. package/rules/excessive-autonomy/ATR-2026-01989-t1046-agent-internal-network-sweep.yaml +33 -71
  442. package/rules/excessive-autonomy/ATR-2026-01993-t1562-agent-impair-defenses.yaml +37 -75
  443. package/rules/excessive-autonomy/ATR-2026-01994-t1573-agent-encrypted-c2-channel.yaml +37 -75
  444. package/rules/excessive-autonomy/ATR-2026-02106-redos-regex-payload-tool-argument.yaml +28 -84
  445. package/rules/excessive-autonomy/ATR-2026-02400-agent-approval-gate-disabled-runtime.yaml +60 -293
  446. package/rules/excessive-autonomy/ATR-2026-02401-rogue-agent-mass-connector-grant.yaml +55 -197
  447. package/rules/excessive-autonomy/ATR-2026-02409-mcp-async-task-abuse.yaml +59 -319
  448. package/rules/excessive-autonomy/ATR-2026-02525-shell-command-word-reassembly-classifier-evasion.yaml +151 -0
  449. package/rules/excessive-autonomy/ATR-2026-02641-client-supplied-approver-identity.yaml +111 -0
  450. package/rules/excessive-autonomy/ATR-2026-02667-preapproved-tool-list-in-job-payload.yaml +90 -0
  451. package/rules/model-abuse/ATR-2026-00279-harmful-completion-continuation.yaml +45 -92
  452. package/rules/model-abuse/ATR-2026-00281-eicar-gtube-malware-signature-request.yaml +50 -93
  453. package/rules/model-abuse/ATR-2026-00284-glitch-token-destabilization.yaml +44 -91
  454. package/rules/model-abuse/ATR-2026-00289-lmrc-harmful-content-elicitation.yaml +46 -95
  455. package/rules/model-abuse/ATR-2026-00292-self-harm-eating-disorder-facilitation.yaml +47 -96
  456. package/rules/model-abuse/ATR-2026-00298-malicious-use-illegal-activity-request.yaml +54 -112
  457. package/rules/model-abuse/ATR-2026-00299-harmbench-detailed-harmful-instruction.yaml +53 -107
  458. package/rules/model-abuse/ATR-2026-00413-malwaregen-code-generation-request.yaml +53 -121
  459. package/rules/model-abuse/ATR-2026-00502-training-data-extraction-via-divergent-repetition-attack.yaml +41 -112
  460. package/rules/model-abuse/ATR-2026-00517-model-extraction-distillation.yaml +53 -165
  461. package/rules/model-abuse/ATR-2026-01750-dos-repeat-word-n-times-output-amplification.yaml +33 -95
  462. package/rules/model-abuse/ATR-2026-01760-dos-forced-infinite-output-token-flood.yaml +29 -75
  463. package/rules/model-abuse/ATR-2026-01830-stolen-credential-account-drain.yaml +36 -53
  464. package/rules/model-abuse/ATR-2026-01831-money-laundering-crypto-layering.yaml +36 -53
  465. package/rules/model-abuse/ATR-2026-01833-darknet-controlled-substance-procurement.yaml +40 -60
  466. package/rules/model-abuse/ATR-2026-01834-fraudulent-identity-document-procurement.yaml +35 -49
  467. package/rules/model-abuse/ATR-2026-01835-human-trafficking-facilitation.yaml +35 -49
  468. package/rules/model-abuse/ATR-2026-01836-trojanized-software-distribution.yaml +37 -51
  469. package/rules/model-abuse/ATR-2026-01840-extremist-propaganda-distribution.yaml +35 -52
  470. package/rules/model-abuse/ATR-2026-01841-deepfake-disinformation.yaml +39 -59
  471. package/rules/model-abuse/ATR-2026-01842-plagiarism-detector-evasion.yaml +33 -50
  472. package/rules/model-abuse/ATR-2026-01843-drug-dealing-detection-evasion-spelling.yaml +35 -49
  473. package/rules/model-abuse/ATR-2026-01844-illegitimate-prescription-fulfillment.yaml +35 -49
  474. package/rules/model-abuse/ATR-2026-01845-banned-ingredient-relabel-fraud.yaml +37 -51
  475. package/rules/model-abuse/ATR-2026-01846-tax-evasion-offshore-shell-planning.yaml +35 -49
  476. package/rules/model-abuse/ATR-2026-01847-immigration-work-fraud.yaml +35 -49
  477. package/rules/model-abuse/ATR-2026-01848-illicit-drug-marketplace-build.yaml +35 -49
  478. package/rules/model-abuse/ATR-2026-01850-targeted-doxxing-threat-campaign.yaml +39 -59
  479. package/rules/model-abuse/ATR-2026-01851-bestiality-content-distribution.yaml +34 -45
  480. package/rules/model-abuse/ATR-2026-01852-romance-scam-impersonation.yaml +35 -49
  481. package/rules/model-abuse/ATR-2026-01853-nonconsensual-leaked-media-distribution.yaml +36 -47
  482. package/rules/model-abuse/ATR-2026-01854-falsified-research-abstract-disinformation.yaml +34 -45
  483. package/rules/model-abuse/ATR-2026-01855-content-misappropriation-republish.yaml +37 -51
  484. package/rules/model-abuse/ATR-2026-01856-targeted-harmful-content-generation.yaml +42 -59
  485. package/rules/model-abuse/ATR-2026-01896-ransomware.yaml +35 -84
  486. package/rules/model-abuse/ATR-2026-01897-host-sabotage.yaml +55 -129
  487. package/rules/model-abuse/ATR-2026-01898-network-dos.yaml +47 -93
  488. package/rules/model-abuse/ATR-2026-02211-named-substance-synthesis-request-non-stepword.yaml +34 -110
  489. package/rules/model-abuse/ATR-2026-02411-ai-provenance-metadata-stripping.yaml +63 -226
  490. package/rules/model-abuse/ATR-2026-02412-generative-watermark-removal-tooling.yaml +56 -187
  491. package/rules/model-abuse/ATR-2026-02413-ai-text-detection-evasion-humanizer.yaml +62 -206
  492. package/rules/model-security/ATR-2026-00072-model-behavior-extraction.yaml +36 -110
  493. package/rules/model-security/ATR-2026-00073-malicious-finetuning-data.yaml +28 -116
  494. package/rules/model-security/ATR-2026-00433-modelcache-torch-load-deserialization-rce.yaml +50 -128
  495. package/rules/model-security/ATR-2026-02662-pickle-indirect-name-resolution-gadget.yaml +97 -0
  496. package/rules/privilege-escalation/ATR-2026-00040-privilege-escalation.yaml +21 -83
  497. package/rules/privilege-escalation/ATR-2026-00041-scope-creep.yaml +29 -107
  498. package/rules/privilege-escalation/ATR-2026-00107-delayed-execution-bypass.yaml +17 -90
  499. package/rules/privilege-escalation/ATR-2026-00110-eval-injection.yaml +16 -84
  500. package/rules/privilege-escalation/ATR-2026-00111-shell-escape.yaml +23 -117
  501. package/rules/privilege-escalation/ATR-2026-00112-dynamic-import-exploitation.yaml +15 -81
  502. package/rules/privilege-escalation/ATR-2026-00143-casual-privilege-escalation.yaml +20 -86
  503. package/rules/privilege-escalation/ATR-2026-00144-rationalized-safety-bypass.yaml +21 -83
  504. package/rules/privilege-escalation/ATR-2026-00204-stealth-execution-persistence.yaml +41 -90
  505. package/rules/privilege-escalation/ATR-2026-00436-enclave-vm-sandbox-escape-rce.yaml +53 -131
  506. package/rules/privilege-escalation/ATR-2026-00441-semantic-kernel-sessions-python-plugin-startup-persistence.yaml +50 -122
  507. package/rules/privilege-escalation/ATR-2026-00451-litellm-admin-sqli-cisa-kev.yaml +53 -141
  508. package/rules/privilege-escalation/ATR-2026-00528-praisonai-auth-disabled-default.yaml +40 -151
  509. package/rules/privilege-escalation/ATR-2026-00539-crewai-codeinterpreter-sandbox-escape-rce.yaml +74 -232
  510. package/rules/privilege-escalation/ATR-2026-00546-crewai-json-loader-local-file-read.yaml +46 -117
  511. package/rules/privilege-escalation/ATR-2026-00547-crewai-rag-url-ssrf-bypass.yaml +47 -121
  512. package/rules/privilege-escalation/ATR-2026-00549-destructive-tool-without-human-approval.yaml +52 -159
  513. package/rules/privilege-escalation/ATR-2026-00551-cross-conversation-memory-write.yaml +60 -171
  514. package/rules/privilege-escalation/ATR-2026-01600-sql-injection-tautology-rbac-bypass.yaml +23 -50
  515. package/rules/privilege-escalation/ATR-2026-01601-sql-injection-destructive-ddl.yaml +23 -54
  516. package/rules/privilege-escalation/ATR-2026-01602-sql-injection-union-select-exfil.yaml +20 -57
  517. package/rules/privilege-escalation/ATR-2026-01603-sql-injection-stacked-dml-abuse.yaml +23 -47
  518. package/rules/privilege-escalation/ATR-2026-01604-sql-injection-schema-enumeration.yaml +21 -45
  519. package/rules/privilege-escalation/ATR-2026-01609-shell-injection-exfil-webhook.yaml +29 -53
  520. package/rules/privilege-escalation/ATR-2026-01610-shell-evasion-subshell-injection.yaml +30 -53
  521. package/rules/privilege-escalation/ATR-2026-01611-shell-evasion-eval-exec-injection.yaml +32 -56
  522. package/rules/privilege-escalation/ATR-2026-01612-debug-mode-privilege-escalation.yaml +29 -53
  523. package/rules/privilege-escalation/ATR-2026-01613-rbac-bypass-social-engineering.yaml +29 -66
  524. package/rules/privilege-escalation/ATR-2026-01614-bola-cross-user-data-access.yaml +26 -59
  525. package/rules/privilege-escalation/ATR-2026-01615-sandbox-escape-command-injection.yaml +28 -52
  526. package/rules/privilege-escalation/ATR-2026-01616-path-traversal-agent-file-access.yaml +21 -45
  527. package/rules/privilege-escalation/ATR-2026-01802-asb-backdoor-surveillance-implant.yaml +33 -94
  528. package/rules/privilege-escalation/ATR-2026-01803-asb-covert-server-intrusion.yaml +37 -108
  529. package/rules/privilege-escalation/ATR-2026-01808-asb-synthetic-pan-payment-probe.yaml +31 -86
  530. package/rules/privilege-escalation/ATR-2026-01899-remote-access-backdoor.yaml +43 -112
  531. package/rules/privilege-escalation/ATR-2026-01933-litellm-user-role-privilege-escalation-cve-2026-47102.yaml +45 -103
  532. package/rules/privilege-escalation/ATR-2026-01934-litellm-allowed-routes-authz-bypass-cve-2026-47101.yaml +44 -103
  533. package/rules/privilege-escalation/ATR-2026-01949-praisonai-mcpserver-unauth-tools-call.yaml +39 -80
  534. package/rules/privilege-escalation/ATR-2026-01974-anything-llm-data-import-access-control.yaml +57 -62
  535. package/rules/privilege-escalation/ATR-2026-01981-network-ai-approval-inbox-unauth-cors-bypass.yaml +47 -97
  536. package/rules/privilege-escalation/ATR-2026-01986-windows-mcp-unauth-http-powershell-cors.yaml +51 -112
  537. package/rules/privilege-escalation/ATR-2026-01992-t1556-agent-auth-process-tamper.yaml +37 -75
  538. package/rules/privilege-escalation/ATR-2026-02040-file-edit-tool-persistence-write.yaml +34 -87
  539. package/rules/privilege-escalation/ATR-2026-02100-cypher-destructive-admin-query-injection.yaml +36 -92
  540. package/rules/privilege-escalation/ATR-2026-02101-dynamic-dunder-attribute-sandbox-escape.yaml +33 -91
  541. package/rules/privilege-escalation/ATR-2026-02123-bare-query-path-confusion-auth-bypass.yaml +36 -98
  542. package/rules/privilege-escalation/ATR-2026-02142-download-tool-absolute-path-sandbox-escape.yaml +36 -107
  543. package/rules/privilege-escalation/ATR-2026-02146-export-tool-dest-dir-credential-directory-redirect.yaml +31 -83
  544. package/rules/privilege-escalation/ATR-2026-02192-self-privesc-wildcard-trust-config-write.yaml +41 -103
  545. package/rules/privilege-escalation/ATR-2026-02195-dangerous-env-var-injection-config-tool.yaml +36 -99
  546. package/rules/privilege-escalation/ATR-2026-02251-identifier-field-path-traversal-storage-write.yaml +32 -83
  547. package/rules/privilege-escalation/ATR-2026-02300-mcp-stdio-config-dangerous-env-var.yaml +42 -109
  548. package/rules/privilege-escalation/ATR-2026-02301-symlink-outside-workspace-sensitive-target.yaml +36 -101
  549. package/rules/privilege-escalation/ATR-2026-02302-git-worktree-dotgit-sandbox-escape.yaml +33 -86
  550. package/rules/privilege-escalation/ATR-2026-02353-runtime-identifier-field-path-traversal-log-read.yaml +34 -115
  551. package/rules/privilege-escalation/ATR-2026-02370-ssh-scp-hostalias-option-injection.yaml +42 -100
  552. package/rules/privilege-escalation/ATR-2026-02371-chromium-launch-flag-argument-injection.yaml +43 -103
  553. package/rules/privilege-escalation/ATR-2026-02402-mcp-policy-engine-fail-open.yaml +56 -214
  554. package/rules/privilege-escalation/ATR-2026-02404-model-output-to-shell-unsanitized.yaml +50 -195
  555. package/rules/privilege-escalation/ATR-2026-02407-agent-workspace-boundary-escape.yaml +55 -236
  556. package/rules/privilege-escalation/ATR-2026-02528-tool-parameter-option-flag-smuggling.yaml +113 -0
  557. package/rules/privilege-escalation/ATR-2026-02530-git-config-execution-key-set-by-agent.yaml +131 -0
  558. package/rules/privilege-escalation/ATR-2026-02531-kusto-query-injection-outbound-reach.yaml +110 -0
  559. package/rules/privilege-escalation/ATR-2026-02601-tool-argument-option-injection.yaml +116 -0
  560. package/rules/privilege-escalation/ATR-2026-02620-dynamic-import-data-uri-module.yaml +101 -0
  561. package/rules/privilege-escalation/ATR-2026-02626-agent-self-registers-mcp-server.yaml +107 -0
  562. package/rules/privilege-escalation/ATR-2026-02627-web-shell-written-to-served-path.yaml +119 -0
  563. package/rules/privilege-escalation/ATR-2026-02642-agent-config-tool-disables-own-guardrail.yaml +115 -0
  564. package/rules/privilege-escalation/ATR-2026-02644-image-magic-polyglot-upload.yaml +117 -0
  565. package/rules/privilege-escalation/ATR-2026-02648-readonly-graph-tool-write-procedure.yaml +107 -0
  566. package/rules/privilege-escalation/ATR-2026-02664-git-identifier-field-option-injection.yaml +100 -0
  567. package/rules/privilege-escalation/ATR-2026-02681-reflective-function-constructor-sandbox-escape.yaml +100 -0
  568. package/rules/privilege-escalation/ATR-2026-02683-tool-argument-option-injection-executor-flag.yaml +108 -0
  569. package/rules/privilege-escalation/ATR-2026-02700-percent-encoded-path-traversal-tool-argument.yaml +90 -0
  570. package/rules/privilege-escalation/ATR-2026-02705-python-builtins-leak-and-prefix-check-override.yaml +87 -0
  571. package/rules/privilege-escalation/ATR-2026-02708-loopback-spoofed-host-header-external-request.yaml +91 -0
  572. package/rules/privilege-escalation/ATR-2026-02867-identifier-typed-tool-argument-dot-dot-path-segment.yaml +106 -0
  573. package/rules/prompt-injection/ATR-2026-00001-direct-prompt-injection.yaml +133 -455
  574. package/rules/prompt-injection/ATR-2026-00002-indirect-prompt-injection.yaml +71 -185
  575. package/rules/prompt-injection/ATR-2026-00003-jailbreak-attempt.yaml +110 -328
  576. package/rules/prompt-injection/ATR-2026-00004-system-prompt-override.yaml +56 -225
  577. package/rules/prompt-injection/ATR-2026-00005-multi-turn-injection.yaml +59 -140
  578. package/rules/prompt-injection/ATR-2026-00080-encoding-evasion.yaml +23 -85
  579. package/rules/prompt-injection/ATR-2026-00081-semantic-multi-turn.yaml +27 -104
  580. package/rules/prompt-injection/ATR-2026-00082-fingerprint-evasion.yaml +27 -91
  581. package/rules/prompt-injection/ATR-2026-00083-indirect-tool-injection.yaml +27 -104
  582. package/rules/prompt-injection/ATR-2026-00084-structured-data-injection.yaml +38 -96
  583. package/rules/prompt-injection/ATR-2026-00085-audit-evasion.yaml +25 -90
  584. package/rules/prompt-injection/ATR-2026-00086-visual-spoofing.yaml +29 -153
  585. package/rules/prompt-injection/ATR-2026-00087-rule-probing.yaml +29 -102
  586. package/rules/prompt-injection/ATR-2026-00088-adaptive-countermeasure.yaml +32 -111
  587. package/rules/prompt-injection/ATR-2026-00089-polymorphic-skill.yaml +24 -146
  588. package/rules/prompt-injection/ATR-2026-00090-threat-intel-exfil.yaml +29 -109
  589. package/rules/prompt-injection/ATR-2026-00091-nested-payload.yaml +25 -123
  590. package/rules/prompt-injection/ATR-2026-00092-consensus-poisoning.yaml +28 -96
  591. package/rules/prompt-injection/ATR-2026-00093-gradual-escalation.yaml +28 -98
  592. package/rules/prompt-injection/ATR-2026-00094-audit-bypass.yaml +24 -91
  593. package/rules/prompt-injection/ATR-2026-00097-cjk-injection-patterns.yaml +56 -199
  594. package/rules/prompt-injection/ATR-2026-00104-persona-hijacking.yaml +22 -106
  595. package/rules/prompt-injection/ATR-2026-00130-indirect-authority-claim.yaml +26 -98
  596. package/rules/prompt-injection/ATR-2026-00131-fictional-academic-framing.yaml +26 -94
  597. package/rules/prompt-injection/ATR-2026-00133-paraphrase-injection.yaml +26 -97
  598. package/rules/prompt-injection/ATR-2026-00137-authority-claim-injection.yaml +22 -90
  599. package/rules/prompt-injection/ATR-2026-00138-fictional-framing-bypass.yaml +24 -111
  600. package/rules/prompt-injection/ATR-2026-00140-indirect-reference-reversal.yaml +21 -79
  601. package/rules/prompt-injection/ATR-2026-00148-language-switch-injection.yaml +30 -92
  602. package/rules/prompt-injection/ATR-2026-00153-tool-with-embedded-instruction-to-bypass.yaml +22 -98
  603. package/rules/prompt-injection/ATR-2026-00154-unauthorized-background-task-execution-v.yaml +24 -109
  604. package/rules/prompt-injection/ATR-2026-00155-hidden-llm-instructions-in-skill-descrip.yaml +24 -104
  605. package/rules/prompt-injection/ATR-2026-00156-ssh-remote-command-execution-with-creden.yaml +20 -81
  606. package/rules/prompt-injection/ATR-2026-00163-skill-hidden-override-instruction.yaml +44 -61
  607. package/rules/prompt-injection/ATR-2026-00202-encoding-evasion-homoglyph-synonym.yaml +37 -79
  608. package/rules/prompt-injection/ATR-2026-00203-context-pollution-skill-description.yaml +38 -63
  609. package/rules/prompt-injection/ATR-2026-00206-hidden-priority-instructions.yaml +36 -51
  610. package/rules/prompt-injection/ATR-2026-00207-hidden-instructions.yaml +37 -51
  611. package/rules/prompt-injection/ATR-2026-00211-system-prompt-override.yaml +36 -52
  612. package/rules/prompt-injection/ATR-2026-00213-system-prompt-override.yaml +38 -75
  613. package/rules/prompt-injection/ATR-2026-00226-identity-substitution.yaml +48 -92
  614. package/rules/prompt-injection/ATR-2026-00227-historical-persona-jailbreak.yaml +49 -93
  615. package/rules/prompt-injection/ATR-2026-00228-structured-jailbreak.yaml +47 -88
  616. package/rules/prompt-injection/ATR-2026-00229-roleplay-jailbreak.yaml +46 -87
  617. package/rules/prompt-injection/ATR-2026-00230-persona-moral-bypass.yaml +47 -89
  618. package/rules/prompt-injection/ATR-2026-00231-identity-substitution.yaml +48 -89
  619. package/rules/prompt-injection/ATR-2026-00233-structured-jailbreak.yaml +48 -89
  620. package/rules/prompt-injection/ATR-2026-00234-roleplay-jailbreak.yaml +48 -89
  621. package/rules/prompt-injection/ATR-2026-00235-persona-moral-bypass.yaml +45 -88
  622. package/rules/prompt-injection/ATR-2026-00236-pseudo-code-jailbreak.yaml +46 -89
  623. package/rules/prompt-injection/ATR-2026-00237-dual-response-jailbreak.yaml +48 -89
  624. package/rules/prompt-injection/ATR-2026-00238-identity-replacement.yaml +50 -92
  625. package/rules/prompt-injection/ATR-2026-00239-amoral-persona-obsession.yaml +47 -90
  626. package/rules/prompt-injection/ATR-2026-00240-instruction-nullification-identity-repla.yaml +48 -91
  627. package/rules/prompt-injection/ATR-2026-00241-amoral-character-jailbreak.yaml +47 -90
  628. package/rules/prompt-injection/ATR-2026-00242-persona-jailbreak.yaml +46 -95
  629. package/rules/prompt-injection/ATR-2026-00243-acronym-jailbreak.yaml +47 -88
  630. package/rules/prompt-injection/ATR-2026-00244-dual-response-jailbreak.yaml +46 -89
  631. package/rules/prompt-injection/ATR-2026-00245-malicious-persona.yaml +47 -89
  632. package/rules/prompt-injection/ATR-2026-00247-dual-response-jailbreak.yaml +49 -90
  633. package/rules/prompt-injection/ATR-2026-00249-game-based-jailbreak.yaml +47 -87
  634. package/rules/prompt-injection/ATR-2026-00251-persona-embodiment-jailbreak.yaml +47 -90
  635. package/rules/prompt-injection/ATR-2026-00252-narrative-jailbreak.yaml +48 -91
  636. package/rules/prompt-injection/ATR-2026-00253-enhanced-persona-jailbreak.yaml +47 -89
  637. package/rules/prompt-injection/ATR-2026-00256-base-n-encoding-jailbreak.yaml +47 -91
  638. package/rules/prompt-injection/ATR-2026-00257-cipher-transposition-jailbreak.yaml +48 -91
  639. package/rules/prompt-injection/ATR-2026-00258-unicode-tag-injection.yaml +47 -89
  640. package/rules/prompt-injection/ATR-2026-00264-latent-injection-translation.yaml +47 -89
  641. package/rules/prompt-injection/ATR-2026-00265-latent-injection-rag-document.yaml +50 -96
  642. package/rules/prompt-injection/ATR-2026-00267-gcg-adversarial-suffix.yaml +47 -93
  643. package/rules/prompt-injection/ATR-2026-00272-hypothetical-response-smuggling.yaml +46 -91
  644. package/rules/prompt-injection/ATR-2026-00276-invisible-unicode-bidi-injection.yaml +47 -100
  645. package/rules/prompt-injection/ATR-2026-00278-dra-disguise-reconstruction-attack.yaml +51 -98
  646. package/rules/prompt-injection/ATR-2026-00280-policy-puppetry-xml-injection.yaml +48 -93
  647. package/rules/prompt-injection/ATR-2026-00282-perez-prompt-injection-hijack.yaml +47 -95
  648. package/rules/prompt-injection/ATR-2026-00285-alternate-encoding-jailbreak.yaml +48 -98
  649. package/rules/prompt-injection/ATR-2026-00286-latent-injection-embedded-context.yaml +47 -97
  650. package/rules/prompt-injection/ATR-2026-00296-shell-command-injection.yaml +54 -96
  651. package/rules/prompt-injection/ATR-2026-00297-python-code-execution-rce.yaml +54 -98
  652. package/rules/prompt-injection/ATR-2026-00308-zalgo-diacritic-overload-encoding.yaml +41 -89
  653. package/rules/prompt-injection/ATR-2026-00309-braille-unicode-encoded-injection.yaml +44 -90
  654. package/rules/prompt-injection/ATR-2026-00310-ecoji-emoji-encoded-injection.yaml +44 -93
  655. package/rules/prompt-injection/ATR-2026-00311-base2048-unicode-script-injection.yaml +42 -101
  656. package/rules/prompt-injection/ATR-2026-00312-unicode-variant-selector-ascii-smuggling.yaml +44 -91
  657. package/rules/prompt-injection/ATR-2026-00313-sneaky-bits-zero-width-binary.yaml +44 -95
  658. package/rules/prompt-injection/ATR-2026-00315-sata-masked-language-model-jailbreak.yaml +49 -99
  659. package/rules/prompt-injection/ATR-2026-00316-function-masking-predict-mask-bypass.yaml +42 -92
  660. package/rules/prompt-injection/ATR-2026-00321-hyphenated-system-instruction-injection.yaml +41 -90
  661. package/rules/prompt-injection/ATR-2026-00359-bank-phishing-smtp-email-code.yaml +43 -102
  662. package/rules/prompt-injection/ATR-2026-00367-emoji-flag-encoded-hidden-phrase.yaml +41 -90
  663. package/rules/prompt-injection/ATR-2026-00373-piracy-torrent-site-list-request.yaml +43 -84
  664. package/rules/prompt-injection/ATR-2026-00378-chatgpt-dom-javascript-redirect-manipulation.yaml +41 -86
  665. package/rules/prompt-injection/ATR-2026-00382-cocaine-component-development-request.yaml +43 -89
  666. package/rules/prompt-injection/ATR-2026-00390-explicit-sexual-content-poem-request.yaml +42 -88
  667. package/rules/prompt-injection/ATR-2026-00394-backspace-deletion-character-injection.yaml +48 -100
  668. package/rules/prompt-injection/ATR-2026-00395-llm-special-token-boundary-injection.yaml +50 -104
  669. package/rules/prompt-injection/ATR-2026-00396-toxic-continuation-prefix-injection.yaml +52 -103
  670. package/rules/prompt-injection/ATR-2026-00397-snowball-impossible-reasoning-injection.yaml +51 -105
  671. package/rules/prompt-injection/ATR-2026-00399-latent-injection-document-separator-token.yaml +45 -94
  672. package/rules/prompt-injection/ATR-2026-00400-latent-injection-ignore-instruction-keyword.yaml +41 -90
  673. package/rules/prompt-injection/ATR-2026-00401-leakreplay-cloze-mask-training-data-elicitation.yaml +48 -91
  674. package/rules/prompt-injection/ATR-2026-00403-glitch-token-repeat-back-elicitation.yaml +45 -92
  675. package/rules/prompt-injection/ATR-2026-00407-echo-sql-jinja-template-injection.yaml +52 -97
  676. package/rules/prompt-injection/ATR-2026-00408-dra-parenthesis-character-reconstruction-attack.yaml +52 -99
  677. package/rules/prompt-injection/ATR-2026-00409-phrasing-past-future-tense-harmful-query.yaml +50 -129
  678. package/rules/prompt-injection/ATR-2026-00410-lmrc-harm-category-direct-elicitation.yaml +51 -115
  679. package/rules/prompt-injection/ATR-2026-00412-figstep-image-list-multimodal-jailbreak.yaml +47 -111
  680. package/rules/prompt-injection/ATR-2026-00414-continuation-ethnic-slur-completion-elicitation.yaml +49 -117
  681. package/rules/prompt-injection/ATR-2026-00420-copilot-studio-sharepoint-indirect-injection.yaml +49 -116
  682. package/rules/prompt-injection/ATR-2026-00442-quoted-exact-output-forcing.yaml +38 -103
  683. package/rules/prompt-injection/ATR-2026-00443-word-fragment-concat-assembly.yaml +37 -103
  684. package/rules/prompt-injection/ATR-2026-00444-unicode-obfuscation-in-user-input.yaml +35 -91
  685. package/rules/prompt-injection/ATR-2026-00445-translation-hijack-with-side-output.yaml +35 -90
  686. package/rules/prompt-injection/ATR-2026-00446-variable-assignment-payload-injection.yaml +35 -95
  687. package/rules/prompt-injection/ATR-2026-00447-fictional-generation-containing-target.yaml +35 -90
  688. package/rules/prompt-injection/ATR-2026-00452-direct-pwned-payload-injection.yaml +41 -123
  689. package/rules/prompt-injection/ATR-2026-00453-secret-key-reveal-demand.yaml +38 -118
  690. package/rules/prompt-injection/ATR-2026-00454-backslash-per-character-encoding.yaml +40 -119
  691. package/rules/prompt-injection/ATR-2026-00455-no-period-output-override.yaml +37 -109
  692. package/rules/prompt-injection/ATR-2026-00456-conditional-empty-input-injection.yaml +40 -119
  693. package/rules/prompt-injection/ATR-2026-00457-garak-dan-to-every-prompt.yaml +41 -117
  694. package/rules/prompt-injection/ATR-2026-00458-garak-dra-step-by-step.yaml +41 -100
  695. package/rules/prompt-injection/ATR-2026-00459-garak-dan-an-ai-language.yaml +38 -93
  696. package/rules/prompt-injection/ATR-2026-00460-garak-dan-no-matter-how.yaml +41 -119
  697. package/rules/prompt-injection/ATR-2026-00461-garak-goodside-mixedunassigned.yaml +35 -97
  698. package/rules/prompt-injection/ATR-2026-00462-garak-gcg-mixedunassigned.yaml +35 -98
  699. package/rules/prompt-injection/ATR-2026-00463-garak-lmrc-mixedunassigned.yaml +35 -99
  700. package/rules/prompt-injection/ATR-2026-00464-garak-dan-i-would-like.yaml +41 -96
  701. package/rules/prompt-injection/ATR-2026-00465-garak-dan-your-prompt-here.yaml +41 -102
  702. package/rules/prompt-injection/ATR-2026-00466-garak-latentinjection-following-text-from.yaml +41 -98
  703. package/rules/prompt-injection/ATR-2026-00467-garak-dan-act-as-a.yaml +41 -97
  704. package/rules/prompt-injection/ATR-2026-00468-garak-goat-the-target-llm.yaml +38 -98
  705. package/rules/prompt-injection/ATR-2026-00469-garak-dan-at-the-end.yaml +41 -97
  706. package/rules/prompt-injection/ATR-2026-00470-garak-dan-as-an-ai.yaml +41 -112
  707. package/rules/prompt-injection/ATR-2026-00472-garak-dan-are-going-to.yaml +55 -107
  708. package/rules/prompt-injection/ATR-2026-00473-garak-lmrc-how-can-i.yaml +52 -98
  709. package/rules/prompt-injection/ATR-2026-00474-garak-dan-that-chatgpt-has.yaml +52 -91
  710. package/rules/prompt-injection/ATR-2026-00475-garak-web-injection-alert-1-script.yaml +47 -94
  711. package/rules/prompt-injection/ATR-2026-00476-garak-web-injection-javascript-alert-1.yaml +59 -115
  712. package/rules/prompt-injection/ATR-2026-00477-garak-latentinjection-translate-the-following-text.yaml +51 -101
  713. package/rules/prompt-injection/ATR-2026-00478-garak-latentinjection-abuse-contact-email.yaml +35 -93
  714. package/rules/prompt-injection/ATR-2026-00479-garak-latentinjection-mixedunassigned.yaml +49 -104
  715. package/rules/prompt-injection/ATR-2026-00480-garak-dan-the-role-of.yaml +52 -95
  716. package/rules/prompt-injection/ATR-2026-00481-garak-dan-mixedunassigned.yaml +56 -111
  717. package/rules/prompt-injection/ATR-2026-00482-garak-lmrc-what-s-an.yaml +47 -86
  718. package/rules/prompt-injection/ATR-2026-00483-garak-dan-the-user-s.yaml +51 -99
  719. package/rules/prompt-injection/ATR-2026-00484-garak-dan-and-you-will.yaml +52 -96
  720. package/rules/prompt-injection/ATR-2026-00485-garak-dan-and-does-not.yaml +50 -98
  721. package/rules/prompt-injection/ATR-2026-00486-garak-dan-t-care-about.yaml +43 -83
  722. package/rules/prompt-injection/ATR-2026-00487-garak-dan-and-nothing-else.yaml +51 -92
  723. package/rules/prompt-injection/ATR-2026-00488-garak-encoding-alert-1-script.yaml +47 -95
  724. package/rules/prompt-injection/ATR-2026-00489-garak-encoding-javascript-alert-1.yaml +59 -116
  725. package/rules/prompt-injection/ATR-2026-00490-garak-dan-in-order-to.yaml +43 -102
  726. package/rules/prompt-injection/ATR-2026-00492-garak-dan-want-you-to.yaml +42 -99
  727. package/rules/prompt-injection/ATR-2026-00493-garak-latentinjection-registrar-iana-id.yaml +38 -105
  728. package/rules/prompt-injection/ATR-2026-00495-garak-dan-insert-prompt-here.yaml +47 -117
  729. package/rules/prompt-injection/ATR-2026-00496-garak-dan-no-matter-what.yaml +39 -93
  730. package/rules/prompt-injection/ATR-2026-00497-garak-encoding-mixedunassigned.yaml +46 -118
  731. package/rules/prompt-injection/ATR-2026-00498-garak-web-injection-mixedunassigned.yaml +44 -110
  732. package/rules/prompt-injection/ATR-2026-00499-garak-dan-from-now-on.yaml +41 -96
  733. package/rules/prompt-injection/ATR-2026-00503-fake-error-state-takeover-unrestricted-replacement-bot.yaml +41 -102
  734. package/rules/prompt-injection/ATR-2026-00506-nevermind-override-goal-hijacking-in-user-input-promptinject.yaml +38 -97
  735. package/rules/prompt-injection/ATR-2026-00507-screaming-stop-goal-hijacking-in-user-input-promptinject.yaml +40 -100
  736. package/rules/prompt-injection/ATR-2026-00508-escape-delimiter-wrapped-goal-hijacking-in-user-input-prompt.yaml +42 -101
  737. package/rules/prompt-injection/ATR-2026-00509-prompt-leaking-via-ignore-previous-instructions-in-user-inpu.yaml +41 -114
  738. package/rules/prompt-injection/ATR-2026-00510-delayed-tool-invocation-injection.yaml +50 -132
  739. package/rules/prompt-injection/ATR-2026-00511-mcp-web-context-poisoning.yaml +51 -131
  740. package/rules/prompt-injection/ATR-2026-00512-rules-file-backdoor-injection.yaml +47 -126
  741. package/rules/prompt-injection/ATR-2026-00515-hidden-text-prompt-injection.yaml +52 -135
  742. package/rules/prompt-injection/ATR-2026-00518-ignore-previous-and-following-instructions-output-command-promptinject.yaml +40 -107
  743. package/rules/prompt-injection/ATR-2026-00519-tautology-logic-noise-injection-promptbench.yaml +40 -105
  744. package/rules/prompt-injection/ATR-2026-00520-nlp-task-random-token-suffix-injection-promptbench.yaml +43 -106
  745. package/rules/prompt-injection/ATR-2026-00535-windsurf-ide-zero-click-prompt-injection.yaml +43 -139
  746. package/rules/prompt-injection/ATR-2026-00550-untrusted-retrieval-to-privileged-tool.yaml +61 -171
  747. package/rules/prompt-injection/ATR-2026-00554-langchain-vulnerable-to-template-injecti.yaml +32 -57
  748. package/rules/prompt-injection/ATR-2026-00565-the-llm-cli-tool-thru-0-27-1-contains-a-.yaml +37 -80
  749. package/rules/prompt-injection/ATR-2026-00573-semantic-paraphrased-injection.yaml +33 -75
  750. package/rules/prompt-injection/ATR-2026-00579-mcp-tool-description-line-jumping-injection.yaml +36 -142
  751. package/rules/prompt-injection/ATR-2026-00584-indirect-injection-via-tool-response.yaml +37 -161
  752. package/rules/prompt-injection/ATR-2026-00700-structured-data-payload-injection.yaml +34 -85
  753. package/rules/prompt-injection/ATR-2026-00701-ipi-tool-output-xss-injection.yaml +29 -72
  754. package/rules/prompt-injection/ATR-2026-01000-context-ignore-fake-completion-prefix.yaml +27 -73
  755. package/rules/prompt-injection/ATR-2026-01001-direct-pi-instruction-override-secret-key.yaml +26 -82
  756. package/rules/prompt-injection/ATR-2026-01002-role-escalation-false-authority-claim.yaml +30 -80
  757. package/rules/prompt-injection/ATR-2026-01005-many-shot-repetition-override.yaml +26 -69
  758. package/rules/prompt-injection/ATR-2026-01006-payload-split-string-concat-injection.yaml +31 -84
  759. package/rules/prompt-injection/ATR-2026-01007-token-repeat-flooding-injection.yaml +27 -71
  760. package/rules/prompt-injection/ATR-2026-01009-virtual-world-bypass-fictional-pii.yaml +27 -73
  761. package/rules/prompt-injection/ATR-2026-01012-encoding-evasion-decode-execute.yaml +31 -81
  762. package/rules/prompt-injection/ATR-2026-01013-language-evasion-multilingual-credential.yaml +46 -108
  763. package/rules/prompt-injection/ATR-2026-01015-evasion-refusal-suppression.yaml +31 -82
  764. package/rules/prompt-injection/ATR-2026-01016-evasion-response-priming-forced-opener.yaml +26 -75
  765. package/rules/prompt-injection/ATR-2026-01017-evasion-dual-response-split-output.yaml +28 -74
  766. package/rules/prompt-injection/ATR-2026-01018-evasion-shell-injection-eval.yaml +40 -116
  767. package/rules/prompt-injection/ATR-2026-01019-sysprompt-override-fake-diagnostic-mode.yaml +34 -89
  768. package/rules/prompt-injection/ATR-2026-01020-spikee-doc-embedded-base64-payload.yaml +28 -69
  769. package/rules/prompt-injection/ATR-2026-01021-spikee-doc-embedded-translation-injection.yaml +27 -68
  770. package/rules/prompt-injection/ATR-2026-01023-evasion-opposite-intent-negation-trick.yaml +26 -69
  771. package/rules/prompt-injection/ATR-2026-01024-evasion-persona-override-rule-breaker.yaml +28 -77
  772. package/rules/prompt-injection/ATR-2026-01025-evasion-hypothetical-fictional-execution-framing.yaml +24 -68
  773. package/rules/prompt-injection/ATR-2026-01026-evasion-unicode-glitch-token-anomaly.yaml +28 -82
  774. package/rules/prompt-injection/ATR-2026-01304-indirect-injection-carrier-important-override.yaml +35 -93
  775. package/rules/prompt-injection/ATR-2026-01757-hypothetical-framing-bypass-research-audit.yaml +32 -79
  776. package/rules/prompt-injection/ATR-2026-01758-hypothetical-fictional-story-bypass.yaml +31 -76
  777. package/rules/prompt-injection/ATR-2026-01759-dos-new-important-instructions-injection-in-document.yaml +28 -74
  778. package/rules/prompt-injection/ATR-2026-01771-semantic-jailbreak-framing.yaml +50 -163
  779. package/rules/prompt-injection/ATR-2026-01800-asb-trigger-marker-tool-coercion.yaml +33 -104
  780. package/rules/prompt-injection/ATR-2026-01860-llmail-chat-template-boundary-spoof.yaml +27 -85
  781. package/rules/prompt-injection/ATR-2026-01861-llmail-pseudo-xml-role-injection.yaml +27 -83
  782. package/rules/prompt-injection/ATR-2026-01865-llmail-fake-email-boundary-marker.yaml +26 -80
  783. package/rules/prompt-injection/ATR-2026-01900-output-encoding.yaml +63 -138
  784. package/rules/prompt-injection/ATR-2026-01901-output-scrambling.yaml +63 -129
  785. package/rules/prompt-injection/ATR-2026-01902-output-emoji.yaml +39 -72
  786. package/rules/prompt-injection/ATR-2026-01903-output-language.yaml +35 -65
  787. package/rules/prompt-injection/ATR-2026-01904-link-injection.yaml +44 -95
  788. package/rules/prompt-injection/ATR-2026-01905-promotional-injection.yaml +35 -68
  789. package/rules/prompt-injection/ATR-2026-01906-content-manipulation.yaml +49 -125
  790. package/rules/prompt-injection/ATR-2026-01920-access-grant-coercion.yaml +31 -99
  791. package/rules/prompt-injection/ATR-2026-01921-access-denial-inversion.yaml +33 -92
  792. package/rules/prompt-injection/ATR-2026-01922-authorization-state-spoofing.yaml +33 -97
  793. package/rules/prompt-injection/ATR-2026-01923-forged-input-boundary-markers.yaml +33 -97
  794. package/rules/prompt-injection/ATR-2026-01925-encoded-payload-decoding-coercion.yaml +39 -110
  795. package/rules/prompt-injection/ATR-2026-01926-cross-lingual-authorization-laundering.yaml +29 -90
  796. package/rules/prompt-injection/ATR-2026-02001-ignore-below-instructions-mirror-of-ignore-previ.yaml +31 -73
  797. package/rules/prompt-injection/ATR-2026-02002-instruction-set-probe-or-supplant-direct-meta-qu.yaml +32 -72
  798. package/rules/prompt-injection/ATR-2026-02003-task-pivot-override-abandon-the-cover-task-trans.yaml +31 -72
  799. package/rules/prompt-injection/ATR-2026-02004-regional-indicator-flag-emoji-alphabet-letter-sp.yaml +32 -80
  800. package/rules/prompt-injection/ATR-2026-02005-actor-never-breaks-character-roleplay-dan-style-.yaml +31 -74
  801. package/rules/prompt-injection/ATR-2026-02006-fuzzy-cross-lingual-i-have-been-pwned-near-miss-.yaml +32 -84
  802. package/rules/prompt-injection/ATR-2026-02007-bare-key-elicitation-token.yaml +30 -74
  803. package/rules/prompt-injection/ATR-2026-02008-translation-chain-output-laundering-state-secret.yaml +30 -75
  804. package/rules/prompt-injection/ATR-2026-02009-bare-key-elicitation-trailing-colon.yaml +29 -71
  805. package/rules/prompt-injection/ATR-2026-02010-emoji-only-payload.yaml +30 -73
  806. package/rules/prompt-injection/ATR-2026-02011-malformed-grammar-pwned-success-claim.yaml +30 -69
  807. package/rules/prompt-injection/ATR-2026-02012-movie-title-generator-instruction-wrapper-for-pw.yaml +30 -79
  808. package/rules/prompt-injection/ATR-2026-02013-delimiter-fence-ignore-instructions-override.yaml +31 -74
  809. package/rules/prompt-injection/ATR-2026-02014-spliced-target-string-letters-of-a-filtered-cana.yaml +30 -74
  810. package/rules/prompt-injection/ATR-2026-02015-dense-emoji-only-payload-flood.yaml +30 -72
  811. package/rules/prompt-injection/ATR-2026-02016-reversed-payload-string.yaml +31 -76
  812. package/rules/prompt-injection/ATR-2026-02018-regional-indicator-flag-emoji-letter-spelling-sp.yaml +30 -71
  813. package/rules/prompt-injection/ATR-2026-02019-python-interpreter-role-assignment-exec-framing.yaml +31 -77
  814. package/rules/prompt-injection/ATR-2026-02020-obfuscated-token-reconstruction-via-character-su.yaml +30 -72
  815. package/rules/prompt-injection/ATR-2026-02120-agentdojo-important-message-identity-spoof-pretext.yaml +31 -81
  816. package/rules/prompt-injection/ATR-2026-02210-negation-topic-evil-persona-two-script-jailbreak.yaml +33 -87
  817. package/rules/prompt-injection/ATR-2026-02230-conditional-keyword-trigger-override.yaml +35 -88
  818. package/rules/prompt-injection/ATR-2026-02232-brand-persona-opinion-hijack.yaml +27 -75
  819. package/rules/prompt-injection/ATR-2026-02374-rot13-base64-obfuscated-shell-jailbreak.yaml +38 -90
  820. package/rules/prompt-injection/ATR-2026-02377-novel-persona-jailbreak-cosignal.yaml +32 -64
  821. package/rules/prompt-injection/ATR-2026-02500-prompt-layer-self-replication.yaml +21 -125
  822. package/rules/prompt-injection/ATR-2026-02502-covert-remote-script-injection-into-generated-artifacts.yaml +46 -149
  823. package/rules/prompt-injection/ATR-2026-02815-injected-halt-order-canned-reply-dos.yaml +80 -0
  824. package/rules/prompt-injection/ATR-2026-02820-tool-result-orders-agent-to-hide-its-own-action.yaml +106 -0
  825. package/rules/prompt-injection/ATR-2026-02846-semantic-ignore-previous-and-following-instructio.yaml +115 -0
  826. package/rules/prompt-injection/ATR-2026-02851-fake-user-turn-send-email-instruction.yaml +76 -0
  827. package/rules/prompt-injection/ATR-2026-02858-context-suppression-directive.yaml +73 -0
  828. package/rules/prompt-injection/ATR-2026-02859-tool-output-agent-role-reassignment.yaml +71 -0
  829. package/rules/prompt-injection/ATR-2026-02860-forged-instruction-boundary-marker.yaml +70 -0
  830. package/rules/prompt-injection/ATR-2026-02862-fake-chat-template-turn-injection.yaml +79 -0
  831. package/rules/skill-compromise/ATR-2026-00060-skill-impersonation.yaml +31 -87
  832. package/rules/skill-compromise/ATR-2026-00061-description-behavior-mismatch.yaml +42 -165
  833. package/rules/skill-compromise/ATR-2026-00062-hidden-capability.yaml +40 -80
  834. package/rules/skill-compromise/ATR-2026-00063-skill-chain-attack.yaml +46 -92
  835. package/rules/skill-compromise/ATR-2026-00064-over-permissioned-skill.yaml +40 -109
  836. package/rules/skill-compromise/ATR-2026-00065-skill-update-attack.yaml +37 -75
  837. package/rules/skill-compromise/ATR-2026-00066-parameter-injection.yaml +42 -88
  838. package/rules/skill-compromise/ATR-2026-00120-skill-instruction-injection.yaml +33 -182
  839. package/rules/skill-compromise/ATR-2026-00121-skill-dangerous-script.yaml +33 -164
  840. package/rules/skill-compromise/ATR-2026-00122-skill-weaponized-instruction.yaml +29 -132
  841. package/rules/skill-compromise/ATR-2026-00123-skill-overreach-permissions.yaml +33 -110
  842. package/rules/skill-compromise/ATR-2026-00124-skill-name-squatting.yaml +40 -133
  843. package/rules/skill-compromise/ATR-2026-00125-context-poisoning-compaction.yaml +26 -107
  844. package/rules/skill-compromise/ATR-2026-00126-skill-rug-pull-setup.yaml +23 -102
  845. package/rules/skill-compromise/ATR-2026-00127-subcommand-overflow.yaml +33 -114
  846. package/rules/skill-compromise/ATR-2026-00128-html-comment-hidden-payload.yaml +23 -148
  847. package/rules/skill-compromise/ATR-2026-00129-unicode-smuggling.yaml +35 -62
  848. package/rules/skill-compromise/ATR-2026-00134-fork-claim-impersonation.yaml +24 -105
  849. package/rules/skill-compromise/ATR-2026-00135-exfil-url-in-instructions.yaml +27 -138
  850. package/rules/skill-compromise/ATR-2026-00147-fork-impersonation.yaml +35 -45
  851. package/rules/skill-compromise/ATR-2026-00149-skill-exfil-compound.yaml +34 -151
  852. package/rules/skill-compromise/ATR-2026-00151-fork-impersonation-install.yaml +39 -69
  853. package/rules/skill-compromise/ATR-2026-00157-timebomb-credential-exfil.yaml +41 -96
  854. package/rules/skill-compromise/ATR-2026-00200-agent-memory-config-tampering.yaml +41 -84
  855. package/rules/skill-compromise/ATR-2026-00214-credential-theft.yaml +36 -50
  856. package/rules/skill-compromise/ATR-2026-00217-credential-harvesting.yaml +50 -98
  857. package/rules/skill-compromise/ATR-2026-00220-malware-dropper.yaml +45 -85
  858. package/rules/skill-compromise/ATR-2026-00222-credential-harvesting.yaml +46 -85
  859. package/rules/skill-compromise/ATR-2026-00223-reverse-shell-dropper.yaml +47 -84
  860. package/rules/skill-compromise/ATR-2026-00224-credential-exfiltration.yaml +46 -92
  861. package/rules/skill-compromise/ATR-2026-00225-c2-communication.yaml +46 -86
  862. package/rules/skill-compromise/ATR-2026-00260-package-hallucination.yaml +51 -93
  863. package/rules/skill-compromise/ATR-2026-00262-av-evasion-code-gen.yaml +49 -90
  864. package/rules/skill-compromise/ATR-2026-00263-credential-file-read-gen.yaml +53 -94
  865. package/rules/skill-compromise/ATR-2026-00266-malware-dropper-gen.yaml +51 -92
  866. package/rules/skill-compromise/ATR-2026-00283-malwaregen-generic-virus-payload-request.yaml +51 -96
  867. package/rules/skill-compromise/ATR-2026-00398-huggingface-unsafe-model-artifact-load.yaml +57 -110
  868. package/rules/skill-compromise/ATR-2026-00425-nl-persistent-covert-hook.yaml +24 -65
  869. package/rules/skill-compromise/ATR-2026-00427-nl-fake-error-instruction-bypass.yaml +24 -65
  870. package/rules/skill-compromise/ATR-2026-00429-nl-skill-self-modification.yaml +24 -65
  871. package/rules/skill-compromise/ATR-2026-00523-claude-code-hooks-session-start-pre-trust-rce.yaml +62 -162
  872. package/rules/skill-compromise/ATR-2026-00525-mini-shai-hulud-gh-token-monitor-persistence.yaml +43 -175
  873. package/rules/skill-compromise/ATR-2026-00527-skill-silent-git-remote-mirror-exfiltration.yaml +49 -159
  874. package/rules/skill-compromise/ATR-2026-01755-backdoor-pot-linguistic-trigger-phrase.yaml +40 -88
  875. package/rules/skill-compromise/ATR-2026-01756-backdoor-pot-symbol-emoticon-trigger.yaml +27 -73
  876. package/rules/skill-compromise/ATR-2026-02261-code-credential-exfil-chain.yaml +35 -161
  877. package/rules/skill-compromise/ATR-2026-02405-malicious-skill-package-structure.yaml +51 -201
  878. package/rules/skill-compromise/ATR-2026-02410-malicious-artifact-on-vendor-domain.yaml +54 -204
  879. package/rules/skill-compromise/ATR-2026-02600-in-source-reverse-shell-assembly.yaml +106 -0
  880. package/rules/skill-compromise/ATR-2026-02610-evaluated-config-credential-command.yaml +109 -0
  881. package/rules/skill-compromise/ATR-2026-02818-skill-manifest-declares-attack-purpose.yaml +80 -0
  882. package/rules/skill-compromise/ATR-2026-02845-agent-cryptomining-payload.yaml +102 -0
  883. package/rules/tool-poisoning/ATR-2026-00010-mcp-malicious-response.yaml +80 -209
  884. package/rules/tool-poisoning/ATR-2026-00011-tool-output-injection.yaml +35 -144
  885. package/rules/tool-poisoning/ATR-2026-00012-unauthorized-tool-call.yaml +46 -144
  886. package/rules/tool-poisoning/ATR-2026-00013-tool-ssrf.yaml +45 -148
  887. package/rules/tool-poisoning/ATR-2026-00095-supply-chain-poisoning.yaml +29 -104
  888. package/rules/tool-poisoning/ATR-2026-00096-registry-poisoning.yaml +33 -94
  889. package/rules/tool-poisoning/ATR-2026-00100-consent-bypass-instruction.yaml +22 -100
  890. package/rules/tool-poisoning/ATR-2026-00101-trust-escalation-override.yaml +34 -54
  891. package/rules/tool-poisoning/ATR-2026-00103-hidden-safety-bypass-instruction.yaml +19 -89
  892. package/rules/tool-poisoning/ATR-2026-00105-silent-action-concealment.yaml +22 -101
  893. package/rules/tool-poisoning/ATR-2026-00106-schema-description-contradiction.yaml +31 -51
  894. package/rules/tool-poisoning/ATR-2026-00161-important-tag-cross-tool-shadowing.yaml +54 -160
  895. package/rules/tool-poisoning/ATR-2026-00209-mcpwn-runaway-invocation.yaml +50 -114
  896. package/rules/tool-poisoning/ATR-2026-00210-flowise-system-message-override.yaml +48 -111
  897. package/rules/tool-poisoning/ATR-2026-00259-ansi-escape-injection.yaml +48 -104
  898. package/rules/tool-poisoning/ATR-2026-00270-xss-in-tool-response.yaml +47 -97
  899. package/rules/tool-poisoning/ATR-2026-00277-echo-template-command-injection.yaml +46 -95
  900. package/rules/tool-poisoning/ATR-2026-00393-ansi-code-elicitation-request.yaml +51 -104
  901. package/rules/tool-poisoning/ATR-2026-00415-flowise-custom-mcp-stdio-rce.yaml +47 -119
  902. package/rules/tool-poisoning/ATR-2026-00419-cursor-mcp-zero-click-config.yaml +57 -148
  903. package/rules/tool-poisoning/ATR-2026-00434-mcp-remote-authorization-endpoint-command-injection.yaml +47 -122
  904. package/rules/tool-poisoning/ATR-2026-00435-azure-mcp-server-missing-authentication.yaml +46 -116
  905. package/rules/tool-poisoning/ATR-2026-00448-spring-ai-milvus-filter-injection.yaml +51 -134
  906. package/rules/tool-poisoning/ATR-2026-00494-garak-exploitation-mixedunassigned.yaml +47 -120
  907. package/rules/tool-poisoning/ATR-2026-00513-package-hallucination-exploitation.yaml +45 -117
  908. package/rules/tool-poisoning/ATR-2026-00521-shell-command-injection-agent-tool-context.yaml +40 -130
  909. package/rules/tool-poisoning/ATR-2026-00522-sql-injection-natural-language-agent-interface.yaml +64 -157
  910. package/rules/tool-poisoning/ATR-2026-00526-claude-code-shell-metachar-in-double-quoted-path.yaml +41 -128
  911. package/rules/tool-poisoning/ATR-2026-00529-litellm-proxy-sqli-cisa-kev.yaml +41 -117
  912. package/rules/tool-poisoning/ATR-2026-00530-ms-agent-shell-tool-unsanitized-argv-rce.yaml +40 -143
  913. package/rules/tool-poisoning/ATR-2026-00531-praisonai-unauthenticated-agent-api.yaml +44 -117
  914. package/rules/tool-poisoning/ATR-2026-00532-apache-doris-mcp-sql-injection.yaml +40 -100
  915. package/rules/tool-poisoning/ATR-2026-00533-apache-pinot-mcp-unauthenticated-takeover.yaml +39 -97
  916. package/rules/tool-poisoning/ATR-2026-00534-alibaba-rds-mcp-unauthenticated-metadata-exfil.yaml +39 -100
  917. package/rules/tool-poisoning/ATR-2026-00536-nginx-ui-mcp-unauthenticated-command-execution.yaml +46 -140
  918. package/rules/tool-poisoning/ATR-2026-00537-fastmcp-server-name-cmd-injection-windows.yaml +58 -172
  919. package/rules/tool-poisoning/ATR-2026-00538-langchain-chatchat-mcp-stdio-unauthenticated-rce.yaml +63 -186
  920. package/rules/tool-poisoning/ATR-2026-00540-praisonai-parse-mcp-command-cli-injection.yaml +50 -142
  921. package/rules/tool-poisoning/ATR-2026-00541-agent-zero-mcp-config-command-injection.yaml +51 -134
  922. package/rules/tool-poisoning/ATR-2026-00542-upsonic-mcp-command-allowlist-bypass.yaml +48 -121
  923. package/rules/tool-poisoning/ATR-2026-00543-litellm-mcp-server-argv-injection.yaml +52 -121
  924. package/rules/tool-poisoning/ATR-2026-00544-praisonai-pth-file-path-traversal-rce.yaml +49 -125
  925. package/rules/tool-poisoning/ATR-2026-00545-praisonai-tool-override-unauth-rce.yaml +51 -122
  926. package/rules/tool-poisoning/ATR-2026-00561-fastmcp-vulnerable-to-windows-command-in.yaml +36 -73
  927. package/rules/tool-poisoning/ATR-2026-00567-mcp-stdio-config-command-injection.yaml +29 -53
  928. package/rules/tool-poisoning/ATR-2026-00568-agent-ssrf-cloud-metadata-file-inclusion.yaml +27 -54
  929. package/rules/tool-poisoning/ATR-2026-00572-symjack-symlink-config-redirection.yaml +41 -103
  930. package/rules/tool-poisoning/ATR-2026-00575-miasma-npm-worm-agent-config-backdoor.yaml +41 -110
  931. package/rules/tool-poisoning/ATR-2026-00576-hades-agent-credential-theft.yaml +40 -125
  932. package/rules/tool-poisoning/ATR-2026-00577-create-mcp-server-stdio-exec-command-injection.yaml +53 -169
  933. package/rules/tool-poisoning/ATR-2026-00581-mcp-tool-rug-pull-post-approval-redefinition.yaml +38 -137
  934. package/rules/tool-poisoning/ATR-2026-00714-tool-camouflage-forced-tool-call.yaml +33 -78
  935. package/rules/tool-poisoning/ATR-2026-00715-tool-knowledge-hijack-identity-injection.yaml +39 -87
  936. package/rules/tool-poisoning/ATR-2026-00716-ipi-data-destruction-carrier.yaml +31 -76
  937. package/rules/tool-poisoning/ATR-2026-00720-tool-misuse-privilege-escalation-social.yaml +29 -71
  938. package/rules/tool-poisoning/ATR-2026-01300-mcp-notes-param-chat-history-exfil.yaml +37 -102
  939. package/rules/tool-poisoning/ATR-2026-01301-tool-description-exclusive-tool-override.yaml +36 -92
  940. package/rules/tool-poisoning/ATR-2026-01302-fake-tool-result-instruction-injection.yaml +33 -88
  941. package/rules/tool-poisoning/ATR-2026-01303-tool-schema-enumeration-social-engineering.yaml +55 -107
  942. package/rules/tool-poisoning/ATR-2026-01306-mcp-oauth-command-injection.yaml +35 -87
  943. package/rules/tool-poisoning/ATR-2026-01307-mcp-dns-rebinding-attack.yaml +36 -91
  944. package/rules/tool-poisoning/ATR-2026-01310-mcp-tool-description-compliance-history-exfil.yaml +40 -110
  945. package/rules/tool-poisoning/ATR-2026-01775-semantic-mcp-tool-manifest-poisoning.yaml +51 -139
  946. package/rules/tool-poisoning/ATR-2026-01927-mcp-server-kubernetes-kubectl-command-injection.yaml +45 -109
  947. package/rules/tool-poisoning/ATR-2026-01928-framelink-figma-mcp-curl-fallback-command-injection.yaml +58 -164
  948. package/rules/tool-poisoning/ATR-2026-01930-mcp-sampling-prompt-injection.yaml +48 -129
  949. package/rules/tool-poisoning/ATR-2026-01931-gemini-mcp-tool-command-injection-file-exfil.yaml +42 -113
  950. package/rules/tool-poisoning/ATR-2026-01932-shadow-undeclared-mcp-server-registration.yaml +43 -106
  951. package/rules/tool-poisoning/ATR-2026-01935-litellm-custom-code-sandbox-escape-cve-2026-40217.yaml +44 -101
  952. package/rules/tool-poisoning/ATR-2026-01952-praisonai-codemode-sandbox-escape-rce.yaml +34 -70
  953. package/rules/tool-poisoning/ATR-2026-01953-praisonai-codemode-function-ctor-sandbox-escape.yaml +61 -79
  954. package/rules/tool-poisoning/ATR-2026-01959-openhuman-shell-allowlist-env-prefix-bypass.yaml +36 -123
  955. package/rules/tool-poisoning/ATR-2026-01963-praisonai-action-orchestrator-step-target-path-traversal-rce.yaml +61 -66
  956. package/rules/tool-poisoning/ATR-2026-01965-flowise-custommcp-os-command-rce.yaml +39 -80
  957. package/rules/tool-poisoning/ATR-2026-01967-deepchat-mermaid-xss-rce-ipc-mcp-register.yaml +58 -66
  958. package/rules/tool-poisoning/ATR-2026-01968-deepchat-markdown-deeplink-openexternal-rce-bypass.yaml +44 -92
  959. package/rules/tool-poisoning/ATR-2026-01970-praisonai-filetools-normpath-path-traversal.yaml +64 -84
  960. package/rules/tool-poisoning/ATR-2026-01973-anythingllm-logo-endpoint-path-traversal.yaml +57 -64
  961. package/rules/tool-poisoning/ATR-2026-01978-anythingllm-collector-process-filename-path-traversal-delete.yaml +58 -64
  962. package/rules/tool-poisoning/ATR-2026-01979-pandasai-prompt-injection-dunder-sandbox-escape-rce.yaml +60 -72
  963. package/rules/tool-poisoning/ATR-2026-01980-agentic-flow-mcp-tool-param-command-injection.yaml +49 -99
  964. package/rules/tool-poisoning/ATR-2026-01982-dbt-mcp-node-selection-argument-injection.yaml +49 -102
  965. package/rules/tool-poisoning/ATR-2026-01983-mcp-for-stata-log-file-name-command-injection.yaml +43 -110
  966. package/rules/tool-poisoning/ATR-2026-01985-mcp-connect-bridge-unauth-process-spawn-rce.yaml +41 -115
  967. package/rules/tool-poisoning/ATR-2026-01987-langroid-sqlchatagent-prompt-to-sql-rce.yaml +53 -110
  968. package/rules/tool-poisoning/ATR-2026-02021-mcp-inspector-unauthenticated-proxy-rce.yaml +48 -123
  969. package/rules/tool-poisoning/ATR-2026-02022-curxecute-cursor-mcp-json-injected-server-rce.yaml +51 -131
  970. package/rules/tool-poisoning/ATR-2026-02023-escaperoute-filesystem-mcp-prefix-bypass.yaml +48 -129
  971. package/rules/tool-poisoning/ATR-2026-02024-escaperoute-filesystem-mcp-symlink-launchagent.yaml +49 -128
  972. package/rules/tool-poisoning/ATR-2026-02025-mcp-full-schema-poisoning-nondescription-field.yaml +50 -142
  973. package/rules/tool-poisoning/ATR-2026-02027-diagnostic-content-remediation-command-injection.yaml +58 -72
  974. package/rules/tool-poisoning/ATR-2026-02041-shell-injection-echo-marker-poc.yaml +32 -93
  975. package/rules/tool-poisoning/ATR-2026-02102-html-injection-tool-arg-approval-ui-xss.yaml +33 -107
  976. package/rules/tool-poisoning/ATR-2026-02141-mcp-server-config-command-execution.yaml +42 -107
  977. package/rules/tool-poisoning/ATR-2026-02145-python-sandbox-escape-generator-frame-introspection.yaml +36 -105
  978. package/rules/tool-poisoning/ATR-2026-02193-ssrf-ipv6-noncanonical-loopback-bypass.yaml +35 -86
  979. package/rules/tool-poisoning/ATR-2026-02194-go-init-func-process-exec-codegen-rce.yaml +35 -83
  980. package/rules/tool-poisoning/ATR-2026-02233-unscoped-destructive-db-request-nl.yaml +34 -95
  981. package/rules/tool-poisoning/ATR-2026-02260-agentjacking-remediation-framed-execution.yaml +42 -107
  982. package/rules/tool-poisoning/ATR-2026-02263-workflow-sql-template-expression-injection.yaml +35 -119
  983. package/rules/tool-poisoning/ATR-2026-02350-mcp-json-rpc-case-duplicate-key-tool-smuggling.yaml +34 -100
  984. package/rules/tool-poisoning/ATR-2026-02352-imap-search-command-injection-email-tool-args.yaml +32 -93
  985. package/rules/tool-poisoning/ATR-2026-02372-unsigned-task-feed-npm-npx-lifecycle-rce.yaml +39 -101
  986. package/rules/tool-poisoning/ATR-2026-02376-tool-description-conversational-trigger-history-exfil.yaml +33 -84
  987. package/rules/tool-poisoning/ATR-2026-02403-mcp-external-content-missing-spotlighting.yaml +52 -282
  988. package/rules/tool-poisoning/ATR-2026-02514-mcp-server-metadata-url-html-breakout.yaml +105 -0
  989. package/rules/tool-poisoning/ATR-2026-02542-pipeline-query-stage-injection.yaml +95 -0
  990. package/rules/tool-poisoning/ATR-2026-02557-shell-separator-in-path-typed-tool-argument.yaml +112 -0
  991. package/rules/tool-poisoning/ATR-2026-02666-url-userinfo-decoy-host-allowlist-bypass.yaml +101 -0
  992. package/rules/tool-poisoning/ATR-2026-02668-vcs-ref-name-command-substitution.yaml +98 -0
  993. package/rules/tool-poisoning/ATR-2026-02669-query-pipeline-stage-in-identifier-parameter.yaml +88 -0
  994. package/rules/tool-poisoning/ATR-2026-02682-xml-entity-expansion-bomb.yaml +98 -0
  995. package/rules/tool-poisoning/ATR-2026-02707-crlf-header-injection-mail-tool-argument.yaml +88 -0
  996. package/rules/tool-poisoning/ATR-2026-02817-untrusted-content-dictates-tool-arguments.yaml +83 -0
  997. package/rules/tool-poisoning/ATR-2026-02864-non-canonical-ipv4-host-in-url-tool-argument.yaml +102 -0
  998. package/rules/tool-poisoning/ATR-2026-02865-read-only-utility-write-flag-in-command-argument.yaml +157 -0
  999. package/rules/tool-poisoning/ATR-2026-02868-ssrf-ipv6-transition-address-embedded-private-ipv4.yaml +107 -0
  1000. package/spec/README.md +8 -5
  1001. package/spec/atr-correlation-v1.0.md +16 -4
  1002. package/spec/atr-event-v1.0.md +13 -8
  1003. package/spec/atr-method-v1.1.md +2 -2
  1004. package/spec/atr-profile-v1.0.md +11 -1
  1005. package/spec/category-registry/gemara/README.md +102 -0
  1006. package/spec/category-registry/gemara/ai-agent-capability-catalog.yaml +157 -0
  1007. package/spec/category-registry/gemara/atr-attack-vector-catalog.yaml +130 -0
  1008. package/spec/category-registry/gemara/atr-detection-control-catalog.yaml +327 -0
  1009. package/spec/category-registry/gemara/atr-threat-catalog.yaml +246 -0
  1010. package/spec/category-registry/gemara/src/editorial.yaml +743 -0
  1011. package/spec/mappings/README.md +1 -1
  1012. package/spec/mappings/atr-to-nist-csf-2.0.md +5 -4
  1013. package/spec/schema/event.schema.json +1 -1
@@ -0,0 +1,131 @@
1
+ title: Git Configuration Turned Into an Execution Hook by an Agent
2
+ id: ATR-2026-02530
3
+ rule_version: 1
4
+ status: experimental
5
+ description: |
6
+ Detects an agent tool call that points a git configuration callback key at an EPHEMERAL or INLINE-SHELL value. Several git config keys are not settings but callbacks -- core.fsmonitor, core.sshCommand, core.hooksPath, core.askpass, credential.helper, filter.*.clean/smudge, diff.*.textconv, uploadpack.packObjectsHook. Once one of them holds a command, that command runs on the NEXT ORDINARY GIT OPERATION: a status, a diff, a fetch. No further tool call is needed and nothing in the later invocation looks dangerous.
7
+ Derived from CVE-2026-55607 (Claude Code 2.1.38 to 2.1.163), where worktree handling permitted a worktree named ".git" plus navigation outside the sandbox context, and git fsmonitor execution during worktree operations was the step that turned a directory-confusion trick into code execution outside the seatbelt sandbox. The advisory states that reliable exploitation required the user to clone a malicious repository containing prompt injection content -- so the config write arrives as an agent action taken on behalf of injected text, which is exactly what this rule reads.
8
+ THE VALUE REQUIREMENT IS THE PRECISION, AND IT IS NOT "LOOKS LIKE A PROGRAM". An earlier draft of this rule required only that the value be a path or an interpreter. That was measured against realistic benign input and fired on 20 of 26 samples -- because a program path is the NORMAL, CORRECT value for every one of these keys. `core.editor=/usr/bin/vim`, `core.pager=/usr/bin/less`, `credential.helper=/usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret` (git's own documented Linux helper), `filter.nbstripout.clean='python3 -m nbstripout'` (the standard Jupyter setup) and `core.fsmonitor=/opt/homebrew/bin/watchman` all matched. "Points at a program" is what these keys are FOR; it carries no signal at all.
9
+ So the value must instead look like STAGED ATTACK CODE:
10
+ - a path under an ephemeral directory (/tmp, /var/tmp, /dev/shm,
11
+ /private/tmp, /var/folders, ~/.cache, $TMPDIR) -- where a payload dropped
12
+ moments earlier in the same session lives, and where no package manager,
13
+ no distro and no developer ever installs a durable git helper; or
14
+ - an inline interpreter invocation or fetch-and-run (`sh -c`, `bash -c`,
15
+ `python -c`, `perl -e`, `node -e`, `eval`, `base64 -d`, curl, wget, nc)
16
+ -- a command literal rather than a reference to an installed tool.
17
+
18
+ KEYS DELIBERATELY DROPPED, for measured reasons. core.editor, core.pager and sequence.editor were in the first draft and contradict this rule's own thesis: they do NOT run on the next ordinary git operation, they run when a human interactively commits or reads a log, in the foreground, where the user sees them. They also carry the densest benign population of any key here. Likewise mergetool.*.cmd and difftool.*.cmd fire only on explicit invocation. Removing them cost no true positive and removed nine measured false positives.
19
+ ALSO COVERED: the one-shot `git -c key=cmd` form, and the same keys written directly into a config file body.
20
+ NOT COVERED, deliberately, and both for measured reasons.
21
+ - `git worktree add ./.git`, the directory-confusion half of the same CVE,
22
+ is already detected by ATR-2026-02302 (Git Worktree Created With
23
+ Reserved Name .git). A draft of this rule carried that condition; it was
24
+ removed once the cross-check showed 02302 firing on it.
25
+ - Git hook FILES (.git/hooks/pre-commit and friends) are a neighbouring
26
+ persistence technique with a different shape and a much denser benign
27
+ population -- husky, pre-commit and lefthook all write there. Left out
28
+ rather than folded in badly.
29
+ author: ATR Community
30
+ date: 2026/08/23
31
+ schema_version: '0.1'
32
+ detection_tier: pattern
33
+ maturity: test
34
+ severity: high
35
+ references:
36
+ cve:
37
+ - CVE-2026-55607
38
+ cwe:
39
+ - CWE-78
40
+ - CWE-59
41
+ owasp_llm:
42
+ - LLM01:2025
43
+ owasp_agentic:
44
+ - ASI04:2026
45
+ mitre_atlas:
46
+ - AML.T0051.001 - Indirect
47
+ mitre_attack:
48
+ - T1546 - Event Triggered Execution
49
+ compliance:
50
+ owasp_llm:
51
+ - id: LLM01:2025
52
+ context: The advisory names a cloned repository carrying prompt-injection content as the precondition, so the configuration write is an injected instruction executed by the agent.
53
+ strength: primary
54
+ owasp_agentic:
55
+ - id: ASI04:2026
56
+ context: 'Persistence outside the session: the callback survives in the repository or user configuration and fires on later, unrelated git operations.'
57
+ strength: primary
58
+ eu_ai_act:
59
+ - article: '15'
60
+ context: Article 15 resilience must hold against an agent being induced to reconfigure its own execution environment so that later benign operations run attacker code.
61
+ strength: primary
62
+ - article: '14'
63
+ context: A reviewer approving a later `git status` cannot see the callback installed earlier; detecting the install is what keeps oversight meaningful across turns.
64
+ strength: secondary
65
+ - article: '9'
66
+ context: Environment-persistence through developer tooling is a foreseeable risk for coding agents and belongs in the risk register with continuous monitoring.
67
+ strength: secondary
68
+ nist_ai_rmf:
69
+ - function: Manage
70
+ subcategory: MG.2.3
71
+ context: Runtime treatment for the risk that an agent installs a deferred execution callback in its own working environment.
72
+ strength: primary
73
+ - function: Map
74
+ subcategory: MP.5.1
75
+ context: 'Catalogues deferred, trigger-based execution as distinct from direct command execution: the dangerous act and the dangerous effect are separated in time.'
76
+ strength: secondary
77
+ - function: Measure
78
+ subcategory: MS.2.7
79
+ context: Detection events supply the security evidence for the agent's control over its own toolchain configuration.
80
+ strength: secondary
81
+ iso_42001:
82
+ - clause: '8.1'
83
+ context: Operational control over an AI system with developer tooling access requires that the system cannot silently arm its environment to execute later.
84
+ strength: primary
85
+ - clause: '8.4'
86
+ context: Impact assessment for a coding agent must include sandbox escape by environment reconfiguration; these detections are the supporting evidence.
87
+ strength: secondary
88
+ - clause: '6.2'
89
+ context: Preventing persistent, deferred code execution installed by the agent is an AIMS security objective, operationalised here as a runtime detection.
90
+ strength: secondary
91
+ tags:
92
+ category: privilege-escalation
93
+ subcategory: vcs-config-execution-hook
94
+ scan_target: both
95
+ confidence: medium
96
+ suppress_in_code_blocks: true
97
+ agent_source:
98
+ type: tool_call
99
+ framework:
100
+ - any
101
+ provider:
102
+ - any
103
+ detection:
104
+ condition: any
105
+ conditions:
106
+ - field: tool_args
107
+ operator: regex
108
+ value: (?i)(?:^|[^\x60])\bgit\s+(?:-[a-zA-Z]\s+\S{1,40}\s+|--\S{1,24}\s+){0,3}config\s+(?:--\S{1,16}\s+){0,2}['\"]?(?:core\.(?:fsmonitor|sshcommand|hookspath|askpass)|credential\.helper|(?:diff|merge)\.[\w.-]{1,32}\.(?:textconv|driver)|filter\.[\w.-]{1,32}\.(?:clean|smudge|process)|uploadpack\.packobjectshook)['\"]?\s*[= ]\s*['\"]?\s*(?:(?:/private)?/(?:tmp|var/tmp|dev/shm)/|\b(?:sh|bash|zsh|dash)\b\s{1,4}-c|\b(?:python[23]?|perl|ruby|node)\b\s{1,4}-[ce]\b|\b(?:curl|wget|eval|nc)\s)
109
+ description: A git callback key is set to a staged payload path or an inline interpreter command, arming code that runs on the next ordinary git operation
110
+ - field: tool_args
111
+ operator: regex
112
+ value: (?i)(?:^|[^\x60])\bgit\s+-c\s+['\"]?(?:core\.(?:fsmonitor|sshcommand|hookspath|askpass)|credential\.helper|(?:diff|merge)\.[\w.-]{1,32}\.(?:textconv|driver)|filter\.[\w.-]{1,32}\.(?:clean|smudge))\s*=\s*['\"]?\s*(?:(?:/private)?/(?:tmp|var/tmp|dev/shm)/|\b(?:sh|bash|zsh|dash)\b\s{1,4}-c|\b(?:python[23]?|perl|ruby|node)\b\s{1,4}-[ce]\b|\b(?:curl|wget|eval|nc)\s)
113
+ description: The one-shot -c form arms the same callback for the duration of a single git invocation, leaving no persistent config entry to review
114
+ - field: tool_args
115
+ operator: regex
116
+ value: (?i)\[(?:core|filter\s+\"[^\"\]]{1,32}\"|diff\s+\"[^\"\]]{1,32}\")\][\s\S]{0,120}\b(?:fsmonitor|sshcommand|hookspath|askpass|textconv|packobjectshook|clean|smudge)\s*=\s*['\"]?\s*(?:(?:/private)?/(?:tmp|var/tmp|dev/shm)/|\b(?:sh|bash|zsh|dash)\b\s{1,4}-c|\b(?:python[23]?|perl|ruby|node)\b\s{1,4}-[ce]\b|\b(?:curl|wget|eval|nc)\s)
117
+ description: A git config file is written with a callback key pointing at a staged payload or inline shell, bypassing the git config command entirely
118
+ false_positives:
119
+ - CI that legitimately stages an ssh wrapper or askpass helper in a temp directory for the life of one job, e.g. `git config core.sshCommand /tmp/ssh-wrap.sh`. This is genuinely the same shape as the attack and is expected to match; the ephemeral location is the whole signal and cannot distinguish a friendly script from a hostile one
120
+ - 'Security documentation that quotes the arming command as BARE PROSE with no backticks and no fence, e.g. a SECURITY.md paragraph written through a write_file tool call. Measured residue: code-block suppression catches the backticked and fenced forms, which is how documentation is written the overwhelming majority of the time, but unformatted prose still matches'
121
+ - A durable helper deliberately installed under /var/tmp, which is a temp root but survives reboot. Pointing a git callback there is anomalous regardless of intent, so it matches
122
+ - A repository bootstrap script that fetches a filter helper with curl and wires it into filter.*.clean in the same command
123
+ response:
124
+ actions:
125
+ - alert
126
+ - escalate
127
+ actions_rationale: 'response-action eligibility (docs/RESPONSE-ACTION-ELIGIBILITY.md): no FP measurement on the benign corpus; ceiling = observe. Removed block_tool(interrupt). Detection unchanged — recall cost is zero.'
128
+ auto_response_threshold: high
129
+ message_template: |
130
+ [ATR-2026-02530] A git configuration callback key was pointed at a program. It will execute on the next ordinary git operation, not on this tool call (CVE-2026-55607 shape). Inspect the repository this agent was working in before allowing further git commands.
131
+ confidence: 70
@@ -0,0 +1,110 @@
1
+ title: Kusto Pipeline Injection Through a Table Identifier Parameter
2
+ id: ATR-2026-02531
3
+ rule_version: 2
4
+ status: experimental
5
+ description: |
6
+ Detects a Kusto (KQL) pipeline smuggled into an MCP tool parameter whose schema declares it to be a bare table or database identifier: the value carries a pipe character followed by another KQL operator, so the tool executes more than the single table it was asked about.
7
+ Derived from CVE-2026-33980 (Azure Data Explorer MCP Server through 0.1.1), where the `table_name` parameter of get_table_schema, sample_table_data and get_table_details is interpolated straight into KQL via f-strings with no validation. The advisory names a prompt-injected AI agent, not only a direct attacker, as the party that reaches the vulnerable handler -- so the injected pipeline arrives as an ordinary tool argument on a tool whose name says "sample" or "schema".
8
+ WHY THIS IS NOT THE SQL RULE. KQL is not SQL and shares none of its injection surface: there is no quote-and-UNION break-out to look for, because a Kusto table reference is a bare identifier and the injection is a pipe character followed by another operator. Every SQL-injection pattern in the corpus keys on quote break-out, comment markers, or UNION SELECT. Measured before this rule was written, a table_name value of "Logs | union externaldata(x:string)[@'https://...']" produced zero matches across the entire rule set.
9
+ WHAT THIS RULE DELIBERATELY DOES NOT DETECT, and the measurement that decided it. Rule version 1 carried two further conditions -- a bare `externaldata` operator given a remote URI, and `evaluate http_request` / `http_request_post` -- on the theory that they were the ingestion and exfiltration halves of the reach. Both were deleted after adversarial review, because both match the documented, correct, publicly published spelling of supported Kusto features and carry no attacker signal a single event can see:
10
+ - The externaldata condition fired on Microsoft Learn's own operator
11
+ reference page, on a first-party lookup-blob join, and on the widely
12
+ republished Sentinel hunting query that enriches CommonSecurityLog with
13
+ the public Tor exit-node list. The engine cannot tell an attacker-chosen
14
+ URI from a team's own storage account.
15
+ - The http_request condition fired on Microsoft Learn's plugin reference
16
+ page and on an ordinary enrichment query. The plugin is governed by the
17
+ cluster's callout policy, which the engine also cannot see.
18
+ Eleven of fourteen adversarial benign inputs fired against version 1, including this rule's own file. Version 2 keeps only the parameter-shaped condition, where the tool's own schema supplies the missing context: it said the argument was an identifier, and an identifier has no pipe in it.
19
+ A management-command condition (.export, .ingest, .drop, .alter) was removed even earlier, for the same reason: against the 3,042-sample skills-sh corpus it fired fourteen times on a single "eventhouse-authoring-cli" skill whose entire declared purpose is issuing those commands against Fabric KQL databases.
20
+ BOUNDARY. A tool that genuinely accepts a KQL fragment in a parameter it nonetheless named `table_name` will match. That is a schema bug on the server side and is worth surfacing. Advisory text that quotes the payload in its JSON-argument form will also match, as it does for every signature rule in the corpus.
21
+ author: ATR Community
22
+ date: 2026/08/23
23
+ schema_version: '0.1'
24
+ detection_tier: pattern
25
+ maturity: test
26
+ severity: high
27
+ references:
28
+ cve:
29
+ - CVE-2026-33980
30
+ cwe:
31
+ - CWE-943
32
+ - CWE-918
33
+ owasp_llm:
34
+ - LLM05:2025
35
+ owasp_agentic:
36
+ - ASI02:2026
37
+ mitre_atlas:
38
+ - AML.T0051.001 - Indirect
39
+ - AML.T0053 - LLM Plugin Compromise
40
+ compliance:
41
+ owasp_llm:
42
+ - id: LLM05:2025
43
+ context: A model-supplied parameter is interpolated into a query string and executed; the handling of the model's output is where the whole vulnerability lives.
44
+ strength: primary
45
+ owasp_agentic:
46
+ - id: ASI02:2026
47
+ context: The schema or sampling tool is invoked as designed while its single argument silently widens what the tool executes.
48
+ strength: primary
49
+ eu_ai_act:
50
+ - article: '15'
51
+ context: Article 15 robustness for an analytics agent means the query scope it was granted holds against the content of its own generated parameters.
52
+ strength: primary
53
+ - article: '9'
54
+ context: Query-language injection through agent tool parameters is a foreseeable risk for any data-platform MCP server and needs the continuous monitoring Article 9 requires.
55
+ strength: secondary
56
+ - article: '12'
57
+ context: Logging the operator a generated query attempted to reach gives the record Article 12 requires to reconstruct what data was touched.
58
+ strength: secondary
59
+ nist_ai_rmf:
60
+ - function: Manage
61
+ subcategory: MG.2.3
62
+ context: Runtime treatment for the risk that an agent's analytics query reaches a different data source than the one it was scoped to.
63
+ strength: primary
64
+ - function: Measure
65
+ subcategory: MS.2.7
66
+ context: Detection events document the security of the parameter-to-query boundary in data-platform integrations.
67
+ strength: secondary
68
+ - function: Map
69
+ subcategory: MP.5.1
70
+ context: 'Records Kusto pipeline injection as distinct from SQL injection: no quoting break-out is involved, so SQL-shaped controls do not apply.'
71
+ strength: secondary
72
+ iso_42001:
73
+ - clause: '8.1'
74
+ context: Operational control of an analytics agent requires that its granted table scope cannot be widened by the parameter it supplies.
75
+ strength: primary
76
+ - clause: '8.4'
77
+ context: Impact assessment must cover cross-source data reach and outbound requests from the data platform; these detections are the evidence.
78
+ strength: secondary
79
+ - clause: '6.2'
80
+ context: Keeping an analytics agent inside its authorised data scope is an AIMS security objective, operationalised here as a runtime detection.
81
+ strength: secondary
82
+ tags:
83
+ category: privilege-escalation
84
+ subcategory: analytics-query-scope-escape
85
+ scan_target: both
86
+ confidence: medium
87
+ agent_source:
88
+ type: mcp_exchange
89
+ framework:
90
+ - any
91
+ provider:
92
+ - any
93
+ detection:
94
+ condition: any
95
+ conditions:
96
+ - field: content
97
+ operator: regex
98
+ value: (?i)"(?:table_?name|database_?name)"\s*:\s*"[\w.\-]{0,48}\s*\|\s*(?:union|externaldata|evaluate|search|print|invoke|mv-expand|find|\.show|\.export|\.ingest)[\s(]
99
+ description: A table or database identifier parameter continues with a pipe and another Kusto operator taking an operand — the CVE-2026-33980 injection point
100
+ false_positives:
101
+ - A data-platform MCP server whose parameter is named table_name but documented to accept a KQL fragment. The rule fires; the underlying schema is what should change
102
+ - Advisory or regression-test text that quotes the injected argument in its literal JSON form, as this rule's own test_cases block does
103
+ response:
104
+ actions:
105
+ - alert
106
+ actions_rationale: 'response-action eligibility (docs/RESPONSE-ACTION-ELIGIBILITY.md): no FP measurement on the benign corpus; ceiling = observe. Removed block_tool(interrupt). Detection unchanged — recall cost is zero.'
107
+ auto_response_threshold: high
108
+ message_template: |
109
+ [ATR-2026-02531] An MCP tool argument declared to be a Kusto table or database identifier carries a pipe and a further KQL operator, so the executed query reaches past the named table (CVE-2026-33980 shape). Validate the identifier before interpolating it into the query.
110
+ confidence: 75
@@ -0,0 +1,116 @@
1
+ title: 'Argument Injection: Execution-Bearing CLI Option Smuggled into a Tool Data Parameter'
2
+ id: ATR-2026-02601
3
+ rule_version: 1
4
+ status: experimental
5
+ description: |
6
+ Detects the argument-injection shape behind CVE-2026-25130 (CAI find_file): a value that a tool documents as DATA -- a filename, a glob, a search term, an args string -- begins with a dash and therefore reaches the underlying binary as an OPTION, and the option it reaches is one that executes a program. No shell metacharacter is involved anywhere, which is why the existing shell metacharacter rule ATR-2026-00111 stays silent on the whole family: verified against the engine, the same payload only fires 00111 once a pipe is added.
7
+ WHAT MAKES IT PRECISE, AND WHAT THAT COSTS. `-exec` on its own is not the signal -- `find . -name "*.pyc" -exec rm -f {} \;` is a thing developers and agents legitimately do all day, and it appears in the find(1) manual, in Makefile lint targets and in CI logs. Three things have to line up before this rule fires: (a) the dash-leading value sits in a parameter NAMED as data (args/pattern/path/query/...; `command`, `cmd` and `script` are excluded because a shell tool is supposed to receive options), (b) the option is one with execution or file-write semantics, and (c) the thing it executes is an INTERPRETER or network client (sh, bash, python, perl, node, nc, curl, wget) or lives in a world-writable scratch directory. `-exec rm`, `-exec chmod`, `-exec shellcheck`, `-exec gzip {} +` are all deliberately NOT claimed.
8
+ The same three-part test is applied to the archive and transport options in the same family: tar --checkpoint-action=exec=, --to-command=, --use-compress-program=, unzip's --unzip-command=, rsync's --rsh=, and find's -fprintf aimed at a login/startup path. GNU tar's own manual example (--checkpoint-action=exec=/sbin/cdrom-eject) and rsync --rsh=ssh are measured true negatives; --checkpoint-action=exec=/tmp/stage.sh and --rsh=sh are not.
9
+ NOT COVERED ON PURPOSE. `--upload-pack=` / `ext::` (git transport) and `--pre=` / `-oProxyCommand=` (ripgrep, ssh) belong to the same class but are left to rules scoped to those tools; folding every binary's option table into one regex would trade the precision above for a list nobody can review.
10
+ author: ATR Community
11
+ date: 2026/08/23
12
+ schema_version: '0.1'
13
+ detection_tier: pattern
14
+ maturity: test
15
+ severity: high
16
+ references:
17
+ owasp_llm:
18
+ - LLM06:2025
19
+ owasp_agentic:
20
+ - ASI03:2026
21
+ mitre_atlas:
22
+ - AML.T0053 - LLM Plugin Compromise
23
+ - AML.T0051 - LLM Prompt Injection
24
+ cve:
25
+ - CVE-2026-25130
26
+ compliance:
27
+ owasp_agentic:
28
+ - id: ASI03:2026
29
+ context: A tool the agent is authorised to use for reading files is turned into arbitrary command execution purely through the shape of its argument, which is privilege escalation without any new permission being granted.
30
+ strength: primary
31
+ owasp_llm:
32
+ - id: LLM06:2025
33
+ context: 'Excessive agency: the effective capability of a read-only tool exceeds what its schema and description advertise, and the gap is reachable from model-controlled input.'
34
+ strength: primary
35
+ eu_ai_act:
36
+ - article: '15'
37
+ context: 'Article 15 cybersecurity: the rule detects an input crafted so that a component interprets data as control, the canonical injection failure the article requires resilience against.'
38
+ strength: primary
39
+ - article: '9'
40
+ context: Tool argument injection is a documented risk class for tool-using agents; detections are the monitoring output Article 9 risk management requires.
41
+ strength: secondary
42
+ - article: '14'
43
+ context: A human overseeing a file-search tool cannot be expected to notice that its argument reaches -exec; surfacing the event is what makes the oversight in Article 14 effective.
44
+ strength: secondary
45
+ nist_ai_rmf:
46
+ - function: Manage
47
+ subcategory: MG.2.3
48
+ context: Runtime treatment for the risk that an agent tool's real capability exceeds its declared one.
49
+ strength: primary
50
+ - function: Map
51
+ subcategory: MP.5.1
52
+ context: Catalogues option-smuggling as a distinct risk from shell-metacharacter injection, which existing controls already cover.
53
+ strength: secondary
54
+ - function: Measure
55
+ subcategory: MS.2.7
56
+ context: Detection events document the security and resilience of the tool boundary as MEASURE 2.7 requires.
57
+ strength: secondary
58
+ iso_42001:
59
+ - clause: '8.1'
60
+ context: 'Clause 8.1 operational control: the boundary between a tool''s data inputs and its control inputs is an operational control this rule verifies at runtime.'
61
+ strength: primary
62
+ - clause: '6.2'
63
+ context: Preventing tool-mediated command execution is an AIMS information security objective under clause 6.2.
64
+ strength: secondary
65
+ - clause: '8.4'
66
+ context: Impact assessment under 8.4 must account for third-party CLI binaries invoked on the agent's behalf; these events are the evidence for that path.
67
+ strength: secondary
68
+ tags:
69
+ category: privilege-escalation
70
+ subcategory: argument-injection
71
+ scan_target: both
72
+ confidence: medium
73
+ agent_source:
74
+ type: mcp_exchange
75
+ framework:
76
+ - any
77
+ provider:
78
+ - any
79
+ detection:
80
+ conditions:
81
+ - field: content
82
+ operator: regex
83
+ value: '["'']?(?:args?|arguments|argv|options?|opts|pattern|glob|name|filename|file_?name|path|filepath|dir|directory|query|search|search_?term|term|target|keyword|input|value|expr|expression)["'']?\s*[:=]\s*["'']\s{0,4}-[^"\n]{0,150}?\B-exec(?:dir)?\s+["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b'
84
+ description: Dash-leading data parameter whose value reaches find -exec/-execdir with an interpreter or network client
85
+ - field: tool_args
86
+ operator: regex
87
+ value: '["'']?(?:args?|arguments|argv|options?|opts|pattern|glob|name|filename|file_?name|path|filepath|dir|directory|query|search|search_?term|term|target|keyword|input|value|expr|expression)["'']?\s*[:=]\s*["'']\s{0,4}-[^"\n]{0,150}?\B-exec(?:dir)?\s+["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b'
88
+ description: Same, in the JSON-encoded tool argument object
89
+ - field: content
90
+ operator: regex
91
+ value: '["'']?(?:args?|arguments|argv|options?|opts|pattern|glob|name|filename|file_?name|path|filepath|dir|directory|query|search|search_?term|term|target|keyword|input|value|expr|expression)["'']?\s*[:=]\s*["'']\s{0,4}-[^"\n]{0,180}?-{0,2}(?:checkpoint-action\s*=\s*exec=?\s*(?:["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|["'']?(?:/tmp/|/var/tmp/|/dev/shm/|~/|\$HOME/))|to-command\s*=\s*(?:["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|["'']?(?:/tmp/|/var/tmp/|/dev/shm/|~/|\$HOME/))|use-compress-program\s*=\s*(?:["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|["'']?(?:/tmp/|/var/tmp/|/dev/shm/|~/|\$HOME/))|unzip-command\s*=\s*(?:["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|["'']?(?:/tmp/|/var/tmp/|/dev/shm/|~/|\$HOME/))|rsh\s*=\s*["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|fprintf?\s+["'']?(?:~|\$HOME|/home/|/root/|/etc/|/var/spool/cron))'
92
+ description: Dash-leading data parameter carrying an archive/transport option that runs a program or writes a login file
93
+ - field: tool_args
94
+ operator: regex
95
+ value: '["'']?(?:args?|arguments|argv|options?|opts|pattern|glob|name|filename|file_?name|path|filepath|dir|directory|query|search|search_?term|term|target|keyword|input|value|expr|expression)["'']?\s*[:=]\s*["'']\s{0,4}-[^"\n]{0,180}?-{0,2}(?:checkpoint-action\s*=\s*exec=?\s*(?:["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|["'']?(?:/tmp/|/var/tmp/|/dev/shm/|~/|\$HOME/))|to-command\s*=\s*(?:["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|["'']?(?:/tmp/|/var/tmp/|/dev/shm/|~/|\$HOME/))|use-compress-program\s*=\s*(?:["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|["'']?(?:/tmp/|/var/tmp/|/dev/shm/|~/|\$HOME/))|unzip-command\s*=\s*(?:["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|["'']?(?:/tmp/|/var/tmp/|/dev/shm/|~/|\$HOME/))|rsh\s*=\s*["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|fprintf?\s+["'']?(?:~|\$HOME|/home/|/root/|/etc/|/var/spool/cron))'
96
+ description: Same, in the JSON-encoded tool argument object
97
+ condition: any
98
+ false_positives:
99
+ - 'DEPRECATED 2026-08-23 BY ADVERSARIAL REVIEW. The find -exec branch cannot separate attack from benign inside a single event. Measured on the live engine: 30 of 40 realistic benign inputs fired, including the most-copied find recipe there is -- `-exec php -l`, `-exec python -m py_compile`, `-exec node --check`, `-exec ruby -c`, `-exec perl -c`, `-exec bash -n` -- and GNU findutils OWN recommended safe form, `-exec sh -c` / `-execdir sh -c`. Those strings are character-for-character the same shape as the declared true positives; what makes the real one an attack is that the parameter was model-controlled, and that fact is not in the event'
100
+ - 'The one narrowing that cleared those FPs -- requiring the executed program to be reached by absolute path -- was measured and rejected as overfitting to the six declared true positives: with it applied, deleting the four characters `/bin/` from TP1, TP2 and TP3 evaded the rule entirely (all three went clean), as did `./sh`. It traded a measurable false-positive rate for a one-edit evasion'
101
+ - 'Premise (a) of the rule, that the parameter is NAMED as data, does not hold. args/arguments/argv/options/opts are the canonical names for RAW ARGUMENT PASSTHROUGH. The rule''s own true negatives concede it: TN 3, 4 and 5 are all {tool: run_find, args: -... -exec ...} and are negative only because of the program name, never the parameter name. With (a) contributing nothing the rule reduces to `an interpreter name appears after -exec`, which is a keyword list'
102
+ - The -fprintf branch claimed to detect a login/startup path but tested only the DIRECTORY PREFIX, so `-fprint /home/ci/build-manifest.txt`, `-fprintf /home/deploy/objects.txt`, `-fprintf ~/reports/changed.txt` and `-fprintf /root/suid-audit.txt` all fired on plain manifest generation. `fprintf?` also matches bare `-fprint`, which has no execution semantics at all
103
+ - 'The claimed 13,246-sample 0 FP was a near-zero measurement: only 69 of the 12,830 samples in data/benign-corpus-extended contain `-exec` at any position, and 4 contain `fprint`. A skills/npm/pypi/arxiv corpus does not carry find command lines inside JSON tool calls, so it could not have charged this rule'
104
+ - 'Fires on a detection project''s own rule and test files, e.g. a YAML line `value: ''-name x -exec /bin/sh -c id ;''`, because `value` is in the parameter-name list'
105
+ - 'An awk BEGIN system() condition was authored, measured against the benign corpus, and REMOVED: it fired on three penetration-testing reference skills that quote GTFOBins one-liners. Inline interpreter code is a different shape from argument injection and did not belong in this rule'
106
+ - 'An operations tool that deliberately exposes raw find/tar arguments and is genuinely asked to run an interpreter over the matches (measured: -exec rm / chmod / shellcheck / gzip do NOT fire; -exec /bin/sh does, by design)'
107
+ - A backup script whose tar checkpoint action legitimately runs a helper staged in /tmp
108
+ - Security writing that quotes the CVE-2026-25130 proof of concept inside a JSON tool call verbatim
109
+ response:
110
+ actions:
111
+ - alert
112
+ - snapshot
113
+ auto_response_threshold: high
114
+ message_template: |
115
+ [ATR-2026-02601] A tool parameter documented as data carries a dash-leading value that reaches an execution-bearing CLI option (find -exec, tar --checkpoint-action=exec, --to-command, rsync --rsh). No shell metacharacter is required for this to run code. Verify the value's origin before allowing the call.
116
+ confidence: 70
@@ -0,0 +1,101 @@
1
+ title: 'Code Execution via data: URI Module Specifier Handed to import()'
2
+ id: ATR-2026-02620
3
+ rule_version: 1
4
+ status: experimental
5
+ description: |
6
+ Detects code execution smuggled through the SPECIFIER of a dynamic import() rather than through eval() or new Function(). `import('data:text/javascript,<code>')` is a fully supported ES module loader path in Node and in browsers: the inline body becomes a real module and runs at import time. Attacker-controlled module ids reaching import() are the primitive behind CVE-2025-67489 (@vitejs/plugin-rsc RCE through unsafe dynamic imports in RSC server function APIs), where the attacker never needed eval to be reachable.
7
+ MEASURED GAP. The payload held as true_positive #1 -- an inline data: module whose body fetches an absolute URL with a process.env token appended -- evaluated through the engine matched only ATR-2026-00002 (generic indirect prompt injection) on llm_input/llm_output, and on tool_call matched only ATR-2026-00161/00012/00061 -- none of which key on the execution primitive. The eval() sibling of the same payload fires ATR-2026-00110/00126, so the eval-shaped half of this family is covered and the import-shaped half was not.
8
+ SCOPE, DELIBERATELY NARROWED. A bare `import('data:text/javascript,...')` is NOT flagged. That construct is documented in the Node ESM manual and is the standard way tooling materialises a module from a string, since there is no eval() for modules -- test-runner ESM shims, loader hooks and REPL glue all emit it, and so does the documentation teaching it. Flagging the bare form would fire on Node's own docs. What this rule requires is the inline module body ALSO reaching for a capability an inline shim has no reason to touch: process/environment, an outbound request, or a child process. That conjunction, not the data: URI, is where the precision comes from.
9
+ KNOWN GAP, DELIBERATELY LEFT OPEN. The base64-bodied form (`import('data:text/javascript;base64,...')`) is NOT covered. A condition on it existed in review and was removed: it fires on ordinary bundler output, because esbuild's `--loader:.js=dataurl`, webpack's `type: "asset/inline"` and Storybook's inline-CSF emit exactly `import("data:text/javascript;base64, <24+ chars>")` for wholly benign modules, and nothing inside a single event distinguishes those from a payload -- the engine only base64-decodes on the scanSkill() path, never in evaluate(). Flagging every inline base64 module would charge every bundler user for the evasion. So base64 bodies are an admitted blind spot rather than a broad condition.
10
+ BRIDGE, AND WHY IT IS SHAPED THIS WAY. The span between the specifier's comma and the capability token may not cross a raw quote or newline, and may cross at most ONE escaped quote, immediately before the capability token. Both limits are load-bearing. Without the first, the match walks out of the specifier into surrounding prose. Without the second, a JSON-encoded tool argument -- which is how production presents tool_args -- lets `\"` end the specifier and the match continues through ordinary English into an unrelated `process.env` further down the line. The opening quote is REQUIRED for the same reason: `import(data:text/javascript,...)` unquoted is not valid JavaScript, it only ever occurs in prose, and allowing it made the rule fire on changelogs, markdown tables, CI logs, Semgrep/Sigma rules that detect this very attack, and on this rule's own MEASURED GAP paragraph. The body must also START immediately after the comma with a non-whitespace character, which is what a data: URI looks like; a truncated log line that opens the specifier and never closes it (`import("data:text/javascript, at Module.load (...) - check process.env.NODE_OPTIONS`) otherwise walked straight into prose. An attacker who inserts a leading space evades this, and that is the price paid for the log-noise class.
11
+ WHAT STILL FIRES ON BENIGN TEXT, MEASURED. Re-measured after the above on 12,931 benign corpus samples (data/benign-corpus-extended/, all shapes plus scanSkill): 0 fired. On 44 adversarially authored benign inputs, 5 still fire, and all 5 are the irreducible class -- text that contains a COMPLETE, correctly quoted payload, or an inline module that genuinely reaches a capability. They are: this rule's own MEASURED GAP paragraph and true_positive fixtures; a scanner's unit-test fixture carrying the payload as a string; a non-English document quoting the payload verbatim to warn against it; an inline module that reads `process.env.NODE_ENV` for a build; and an ESM shim whose inline body calls `require(`. Note that `process.env` alone carries NO true positive in this rule's fixture set -- every true positive matches on fetch(//, globalThis.process, child_process, sendBeacon or require( first -- so that alternative is the weakest part of the conjunction and is kept only because an inline module that returns the environment to its caller is a real attack shape.
12
+ author: ATR Community
13
+ date: 2026/08/23
14
+ schema_version: '0.1'
15
+ detection_tier: pattern
16
+ maturity: test
17
+ severity: high
18
+ references:
19
+ cve:
20
+ - CVE-2025-67489
21
+ owasp_llm:
22
+ - LLM05:2025
23
+ owasp_agentic:
24
+ - ASI04:2026
25
+ mitre_atlas:
26
+ - AML.T0053 - LLM Plugin Compromise
27
+ - AML.T0011 - User Execution
28
+ compliance:
29
+ owasp_agentic:
30
+ - id: ASI04:2026
31
+ context: An attacker-controlled module specifier turns a data-handling path into an execution path, which is unexpected code execution inside the agent's own runtime.
32
+ strength: primary
33
+ owasp_llm:
34
+ - id: LLM05:2025
35
+ context: 'Improper output handling: a string that reached a module loader is executed as code rather than treated as data.'
36
+ strength: primary
37
+ eu_ai_act:
38
+ - article: '15'
39
+ context: Article 15 requires high-risk systems to be resilient against attempts to alter their behaviour; executing an attacker-supplied inline module alters the system's behaviour at runtime.
40
+ strength: primary
41
+ - article: '9'
42
+ context: Code execution through a module loader is a risk this rule surfaces as the monitoring evidence Article 9 risk management requires.
43
+ strength: secondary
44
+ - article: '12'
45
+ context: Detection events give the automatic recording of execution attempts that Article 12 logging expects.
46
+ strength: secondary
47
+ nist_ai_rmf:
48
+ - function: Manage
49
+ subcategory: MG.2.3
50
+ context: Runtime treatment of the risk that an agent's module loader is used as an execution primitive.
51
+ strength: primary
52
+ - function: Map
53
+ subcategory: MP.5.1
54
+ context: Catalogues specifier-borne execution as a distinct risk from eval-borne execution, which is the gap this rule closes.
55
+ strength: secondary
56
+ - function: Measure
57
+ subcategory: MS.2.7
58
+ context: Provides the security and resilience evidence MEASURE 2.7 asks to be documented for code-execution attempts.
59
+ strength: secondary
60
+ iso_42001:
61
+ - clause: '8.1'
62
+ context: 'Clause 8.1 covers control of operational processes; an inline module fetched from a data: URI enters the runtime without any of the review the supply chain otherwise receives.'
63
+ strength: primary
64
+ - clause: '6.2'
65
+ context: Detecting loader-borne code execution is an AIMS information security objective under clause 6.2, operationalised as a runtime control.
66
+ strength: secondary
67
+ - clause: '8.4'
68
+ context: Impact assessment under clause 8.4 must account for arbitrary code running with the agent's own privileges; these events are that path's monitoring evidence.
69
+ strength: secondary
70
+ tags:
71
+ category: privilege-escalation
72
+ subcategory: module-loader-execution
73
+ scan_target: both
74
+ confidence: medium
75
+ agent_source:
76
+ type: mcp_exchange
77
+ framework:
78
+ - any
79
+ provider:
80
+ - any
81
+ detection:
82
+ conditions:
83
+ - field: content
84
+ operator: regex
85
+ value: (?i)\bimport\s*\(\s*(?:\\{0,2}["'`])\s*data:\s*(?:text|application)/(?:x-)?(?:java|ecma)script\s*[,;](?:(?:\\{1,3}["'`])?(?:process\s*\.\s*env|globalThis\s*\.\s*process|child_process|\bfetch\s*\(\s*(?:\\{0,2}["'`])?\s*(?:https?:)?//|sendBeacon|XMLHttpRequest|\bexecSync\b|\bspawnSync\b|\brequire\s*\(|\beval\s*\()|[^\s"'`\\\n](?:[^"'`\\\n]|\\[^"'`\n]){0,39}(?:\\{1,3}["'`])?(?:process\s*\.\s*env|globalThis\s*\.\s*process|child_process|\bfetch\s*\(\s*(?:\\{0,2}["'`])?\s*(?:https?:)?//|sendBeacon|XMLHttpRequest|\bexecSync\b|\bspawnSync\b|\brequire\s*\(|\beval\s*\())
86
+ description: 'Dynamic import of a data: URI JavaScript module whose inline body touches process/env, an outbound request, or a child process'
87
+ condition: any
88
+ false_positives:
89
+ - 'Tooling that materialises a module from a string and legitimately needs process.env inside it -- loader hooks, test-runner ESM shims, bundler virtual modules. Measured as the closest benign shape and the reason the bare data: form is not flagged.'
90
+ - 'Documentation or a security article that quotes a complete, correctly quoted data: URI import payload verbatim -- including this rule''s own MEASURED GAP paragraph and its true_positive inputs. Prose that merely NAMES the construct (`import(data:text/javascript,...)` without quotes, or with typographic quotes) no longer matches.'
91
+ - 'A JSON tool argument whose inline module body itself contains a nested quoted string before its first capability token: the bridge crosses at most one escaped quote, so such a payload is missed rather than a benign neighbour being flagged.'
92
+ - An inline module that legitimately calls fetch() against a relative/same-origin path is NOT flagged; only an absolute or protocol-relative destination counts, since exfiltration needs one.
93
+ - 'MEASURED RESIDUAL: an inline module that reads process.env.NODE_ENV to bake a build flag, and an ESM shim whose inline body calls require(). Both fire and both can be benign; process.env in particular carries no true positive in the fixture set.'
94
+ - 'MEASURED RESIDUAL: a scanner''s own test fixture, or a non-English security document, that carries a complete correctly quoted payload as a literal string. Any pattern rule for this class fires on those.'
95
+ response:
96
+ actions:
97
+ - alert
98
+ auto_response_threshold: high
99
+ message_template: |
100
+ [ATR-2026-02620] Dynamic import() of a data: URI module detected. The module body executes at import time with the agent's own privileges. Verify the module specifier is not attacker-controlled (CVE-2025-67489 class).
101
+ confidence: 70
@@ -0,0 +1,107 @@
1
+ title: Agent Writes a New MCP Server Into Its Own Trust Configuration
2
+ id: ATR-2026-02626
3
+ rule_version: 2
4
+ status: experimental
5
+ description: |
6
+ Detects an agent tool call that adds an entry to the mcpServers block of a trust-configuration file the agent itself loads -- claude_desktop_config.json, .claude.json, .cursor/mcp.json, .vscode/mcp.json, .continue/config.json, .gemini/settings.json. This is persistence and privilege expansion, not remote code execution: the command field is deliberately unremarkable (python -m pkg, npx -y pkg, node dist/x.js) because the malicious code lives inside the module being launched. MAL-2026-2315 (latinum-wallet-mcp on PyPI) is the reference case -- the package silently registered itself as an MCP server on install.
7
+ MEASURED GAP. `{"tool":"write_file","arguments":{"path":".../claude_desktop_config.json","content":"{\"mcpServers\":{...\"command\":\"python\"...}}"}}` matched nothing on any of the seven event types. Reading the neighbouring rules explains why: ATR-2026-00419 requires the command itself to be curl/wget or an inline-eval flag; ATR-2026-02022 requires bash/sh/curl near the mcp.json; ATR-2026-01932 matches PROSE describing a rogue registration rather than the registration itself. Swapping the command to curl makes three rules fire immediately, which confirms existing coverage keys on the command string and not on the structural act of granting a new tool source.
8
+ THE FALSE POSITIVE THIS RULE HAD TO SOLVE. Every MCP server README on earth tells the reader to paste an mcpServers block into claude_desktop_config.json, and a good number give a `cat >> ~/.claude.json <<EOF` one-liner. Measured during authoring, that install documentation is byte-identical in shape to the attack. It is separated here by tags.suppress_in_code_blocks: instructions live inside a fenced block, an agent's actual tool call does not. Both conditions must match (condition: all), so a config payload with no write action, and a write to the trust file that does not add a server, are both silent.
9
+ author: ATR Community
10
+ date: 2026/08/23
11
+ schema_version: '0.1'
12
+ detection_tier: pattern
13
+ maturity: test
14
+ severity: high
15
+ references:
16
+ owasp_llm:
17
+ - LLM03:2025
18
+ owasp_agentic:
19
+ - ASI05:2026
20
+ - ASI06:2026
21
+ mitre_atlas:
22
+ - AML.T0010 - AI Supply Chain Compromise
23
+ - AML.T0053 - LLM Plugin Compromise
24
+ compliance:
25
+ owasp_agentic:
26
+ - id: ASI05:2026
27
+ context: Registering a new MCP server grants the agent a tool source nobody authorised, expanding its capability boundary from inside.
28
+ strength: primary
29
+ - id: ASI06:2026
30
+ context: The entry persists in a configuration file, so the expanded capability survives restart and applies to every later session.
31
+ strength: secondary
32
+ owasp_llm:
33
+ - id: LLM03:2025
34
+ context: A new tool source enters the agent's supply chain without review; the launched module is arbitrary third-party code.
35
+ strength: primary
36
+ eu_ai_act:
37
+ - article: '15'
38
+ context: 'Article 15 robustness: a self-modification of the trust configuration changes what the system can do, persistently and without authorisation.'
39
+ strength: primary
40
+ - article: '14'
41
+ context: Article 14 human oversight assumes the operator controls which tools the agent has; a silent registration removes that control.
42
+ strength: secondary
43
+ - article: '12'
44
+ context: 'Article 12 record-keeping: a persisted capability grant must be reconstructable after the fact.'
45
+ strength: secondary
46
+ nist_ai_rmf:
47
+ - function: Manage
48
+ subcategory: MG.2.3
49
+ context: Runtime treatment for unauthorised expansion of the agent's tool surface.
50
+ strength: primary
51
+ - function: Map
52
+ subcategory: MP.5.1
53
+ context: Catalogues trust-config self-modification as distinct from malicious command execution, which is the framing existing rules assume.
54
+ strength: secondary
55
+ - function: Measure
56
+ subcategory: MS.2.7
57
+ context: Detection events supply the security and resilience evidence MEASURE 2.7 asks be documented for capability changes.
58
+ strength: secondary
59
+ iso_42001:
60
+ - clause: '8.1'
61
+ context: 'Clause 8.1 control of externally provided processes: an MCP server is an external process, and this event adds one outside the change-control path.'
62
+ strength: primary
63
+ - clause: '6.2'
64
+ context: Maintaining the integrity of the agent's tool allowlist is an AIMS information security objective under clause 6.2.
65
+ strength: secondary
66
+ - clause: '8.4'
67
+ context: Impact assessment under clause 8.4 must account for capability grants that persist beyond the session that made them.
68
+ strength: secondary
69
+ tags:
70
+ category: privilege-escalation
71
+ subcategory: mcp-trust-config-modification
72
+ scan_target: both
73
+ confidence: medium
74
+ suppress_in_code_blocks: true
75
+ agent_source:
76
+ type: mcp_exchange
77
+ framework:
78
+ - any
79
+ provider:
80
+ - any
81
+ detection:
82
+ condition: all
83
+ conditions:
84
+ - field: content
85
+ operator: regex
86
+ value: '(?:\\{0,2}["''])(?:tool|tool_name|name|function|toolName)(?:\\{0,2}["''])\s*:\s*(?:\\{0,2}["''])[\w.-]{0,40}(?:write_file|write_to_file|create_file|edit_file|fs_write|apply_patch|str_replace_editor|str_replace_based_edit_tool|update_file|patch_file)(?:\\{0,2}["''])[\s\S]{0,160}(?:\\{0,2}["''])(?:path|file_path|filename|file|target_file|filePath)(?:\\{0,2}["''])\s*:\s*(?:\\{0,2}["''])[^"''\n]{0,120}(?:claude_desktop_config\.json|\.claude\.json|\.cursor/mcp\.json|\.vscode/mcp\.json|\.continue/config\.json|windsurf/mcp_config\.json|\.mcp\.json|\.codex/config\.toml|\.gemini/settings\.json)(?:\\{0,2}["''])[\s\S]{0,140}(?:\\{0,2}["''])(?:mcpServers|servers)(?:\\{0,2}["''])\s*:\s*\{[\s\S]{0,220}(?:\\{0,2}["''])command(?:\\{0,2}["''])\s*:'
87
+ description: 'A COMPLETE TOOL-INVOCATION ENVELOPE that writes an MCP trust-config file: a quoted tool/tool_name key naming a file-writing tool, a quoted path key whose value is one of the agent trust-config files, and the mcpServers/servers block carrying a command entry. All three parts, in that order, in one event. The envelope requirement is load-bearing and was added by adversarial review -- see false_positives.'
88
+ - field: content
89
+ operator: regex
90
+ value: '(?:\\{0,2}["''])(?:mcpServers|servers)(?:\\{0,2}["''])\s*:\s*\{[\s\S]{0,220}(?:\\{0,2}["''])command(?:\\{0,2}["''])\s*:'
91
+ description: An mcpServers/servers block carrying a command entry -- the payload that grants a new tool source
92
+ false_positives:
93
+ - |-
94
+ ADVERSARIAL REVIEW 2026-08-24, FIXED. Rule v1 asked only for a write-verb TOKEN somewhere on a line, the config path, and the payload, and leaned entirely on tags.suppress_in_code_blocks to separate documentation from a real call. Fifteen benign samples were run through the engine and ELEVEN fired. Code-fence suppression turned out to cover far less than the rule assumed: src/engine.ts buildCodeBlockRanges recognises ``` fences, inline backticks and markdown table cells ONLY, so an install README using ~~~ fences fired, and one using a 4-space indented block fired. The rest were not code blocks at all -- an installer CI log line, a PR body showing a diff, an MCP installer's own unit test, an e2e fixture object, a changelog entry, a Traditional Chinese install guide, an incident postmortem quoting MAL-2026-2315's payload, and the tool_description of mcp-installer, a tool whose entire job is to do this legitimately.
95
+ Fixed by requiring a complete tool-invocation envelope: a quoted tool key naming the writing tool AND a quoted path key holding the trust-config path AND the payload. Prose that merely names a write verb near a path no longer matches, which is what all eleven had in common.
96
+ - 'ADVERSARIAL REVIEW 2026-08-24, ALSO FIXED: RE2 PORTABILITY. Rule v1 used a negative lookbehind (?<![\w.-]) and two negative lookaheads. RE2 -- Go regexp, Rust regex, every Sigma backend built on them -- cannot compile any of those, and ATR-2026-02626 was absent from data/re2-portability-baseline.json, so scripts/gate-re2-portability.ts fails the build on it as a NEW incompatibility. v2 contains no lookaround and no backreference; the path boundary is now an explicit closing-quote character class.'
97
+ - 'ADVERSARIAL REVIEW 2026-08-24, DEAD TEST CASE REMOVED. v1 shipped a true positive it could not match: the shell heredoc "cat >> ~/.cursor/mcp.json <<EOF ... command ...". Its shell-redirect alternative required a "command": key BEFORE the redirection operator, but in a heredoc the command key arrives after the path, so the branch was unreachable for its own example -- confirmed by running it through the engine. The branch is removed rather than repaired: a bare shell line has no envelope, so it cannot be separated from the identical line inside install documentation. KNOWN GAP.'
98
+ - 'KNOWN GAP: a positional call such as write_file("/home/ops/.continue/config.json", "{...mcpServers...}") is no longer matched. It is the same shape as an MCP installer''s own unit test (await write_file("~/.claude.json", ''{"mcpServers":...}'')), which fired on v1, so the two cannot be told apart.'
99
+ - 'KNOWN RESIDUAL: security writing that quotes a COMPLETE tool-call envelope verbatim in bare prose still fires -- including ATR''s own description of this rule. tags.suppress_in_code_blocks covers the fenced and backticked forms, which is where such quotations normally live.'
100
+ - An operator legitimately installing an MCP server through the agent, at the operator's own request. The rule fires by design; provenance of the request is what triage must establish.
101
+ response:
102
+ actions:
103
+ - alert
104
+ auto_response_threshold: high
105
+ message_template: |
106
+ [ATR-2026-02626] The agent modified its own MCP trust configuration to add a tool source. The command field can look completely ordinary -- the malicious code lives in the module it launches, not in the command string. Confirm a human requested this server before allowing it to load.
107
+ confidence: 70