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,146 @@
1
+ title: Diagram Theme Config Used to Inject Page-Wide CSS (scope escape, overlay, selector exfil)
2
+ id: ATR-2026-02602
3
+ rule_version: 2
4
+ status: experimental
5
+ description: |
6
+ Detects CVE-2026-41149: a mermaid initialisation directive embedded in agent-rendered content (`%%{init: {...}}%%`, or a mermaid.initialize call) whose theme value carries CSS that ESCAPES the diagram's scope. Mermaid runs themeCSS through stylis, which prefixes every selector with `#mermaid-<id>`; a selector written `:not(&)` breaks out of that prefix and applies to the whole document. From there the payload is a full-window phishing overlay or character-at-a-time exfiltration through an attribute-prefix selector whose background url() fires one request per guessed character.
7
+ THE PRECISION LINE, AND WHERE IT WAS DRAWN. `themeCSS` legitimately contains CSS -- `themeCSS: '.node rect { fill: #222 }'` is the documented use, braces and all -- so "contains CSS syntax" is not a signal, and an earlier draft of this rule that fired on a brace pair inside the value was rejected on exactly that benign twin before it was written down.
8
+ TWO FURTHER MARKERS WERE REMOVED IN ADVERSARIAL REVIEW (rule_version 2), each on measured benign fire, and both removals are corrections of the threat model rather than concessions:
9
+ 1. `position:fixed` inside a diagram theme was claimed as a viewport-pinned
10
+ overlay. It is not one. Without the stylis escape, stylis prefixes the
11
+ selector with `#mermaid-<id>`, so the declaration is confined to the
12
+ diagram and covers nothing. What the marker actually selected was the
13
+ ordinary fullscreen/lightbox/zoom/print-watermark/pinned-legend feature that
14
+ docs sites build on purpose. Eleven independent benign inputs fired on it:
15
+ a VitePress fullscreen handler, an mkdocs-material manifest, a CHANGELOG
16
+ line, a vitest fixture, a minified bundle line, a Traditional-Chinese blog
17
+ post, a Stack Overflow answer explaining that this does NOT work, and
18
+ several cross-key constructions where the `position:fixed` was in a
19
+ neighbouring key entirely, because `[^\n]{0,200}` runs straight through the
20
+ closing quote of the themeCSS value. The overlay payload is still detected
21
+ when it is an attack, because an attack must carry the scope escape and the
22
+ escape is claimed. Only the escape is load-bearing.
23
+
24
+ 2. The attribute-prefix selector was matched on ANY attribute name. Only
25
+ `[value^=` (and `$=` / `*=` on the same attribute) is claimed now, because
26
+ `value` is the one attribute that carries a secret the page did not choose
27
+ to publish, and matching on a value PREFIX is something no designer does --
28
+ the selector sees the server-rendered attribute, not what the user typed, so
29
+ it is useless for styling and useful only for guessing. Every other
30
+ attribute name produced benign fire and was removed: `[class^="icon-"]`
31
+ (icon sprites), `[id^="mermaid-"]` (scoping to mermaid's own generated
32
+ container), `[data-testid^="node-"]` (generated themes), `[name^="card"]`
33
+ and `[placeholder^=` (form-field icons), `[title^=` (step badges) -- all of
34
+ them next to a CDN `url()`, all of them leaking nothing. `[href^=` and
35
+ `[src^=` are excluded for the same reason: `a[href^="https"]` beside a
36
+ remote icon url() is a textbook stylesheet. Nine benign inputs fired on the
37
+ untyped version, including the author's own DELIBERATELY-UNCLAIMED
38
+ Google-Fonts `@import` the moment ANY ordinary prefix selector appeared
39
+ within 120 characters of it.
40
+
41
+ 3. Condition 0's window is `[^\n%]`, not `[^\n]`, so it cannot run out of the
42
+ `%%{...}%%` directive and pick a marker out of the prose that follows it.
43
+ A mitigation note that shows a plain `%%{init}%%` line and then discusses
44
+ the escape in the next sentence was firing before this. MEASURED COST, and
45
+ it is the only one: a payload that puts a literal `%` (e.g. `width:100%`)
46
+ inside a fontFamily/altFontFamily value BEFORE the marker is now missed by
47
+ condition 0. The same payload inside `themeCSS` is still caught, by
48
+ condition 1, which carries no `%` bound -- verified on both, one fires and
49
+ one does not.
50
+
51
+ The remaining scope escape additionally requires a declaration block after it (`:not(&) ... {`), because an escape with no rule body changes nothing; that drops prose which merely names the marker after a `themeCSS:` colon.
52
+ A webfont `@import url('https://fonts.googleapis.com/...')` inside themeCSS is a plausible legitimate use of the same mechanism and is DELIBERATELY NOT CLAIMED -- it is a measured true negative, not an oversight.
53
+ Coverage check, re-run in review and CORRECTED. The only rule that mentions mermaid, ATR-2026-01967, is scoped to DeepChat IPC/MCP registration -- that part of the author's claim holds. What the author missed is a sibling from this same sweep: ATR-2026-02704 detects the CSS attribute-selector exfiltration primitive generically, and it fires on three of the four exfil payloads here. It reached the same conclusion independently -- it only claims SECRET-bearing attributes (`value`, `token`, `csrf`, `secret`, `password`, `api_key`, `otp`) -- which is corroboration that the untyped attribute match this rule shipped with was the wrong line. The exfil branch here is therefore largely redundant with 02704 and is kept only for the themeCSS-scoped ordering 02704 does not cover (url() before the selector). The `:not(&)` stylis scope escape is this rule's own, and nothing else detects it.
54
+ author: ATR Community
55
+ date: 2026/08/23
56
+ schema_version: '0.1'
57
+ detection_tier: pattern
58
+ maturity: test
59
+ severity: high
60
+ references:
61
+ owasp_llm:
62
+ - LLM02:2025
63
+ owasp_agentic:
64
+ - ASI04:2026
65
+ mitre_atlas:
66
+ - AML.T0051 - LLM Prompt Injection
67
+ - AML.T0051.001 - Indirect
68
+ cve:
69
+ - CVE-2026-41149
70
+ compliance:
71
+ owasp_agentic:
72
+ - id: ASI04:2026
73
+ context: Content the agent renders escapes the boundary it was given and takes over the surrounding interface, which is an agent output-handling failure rather than a model failure.
74
+ strength: primary
75
+ owasp_llm:
76
+ - id: LLM02:2025
77
+ context: 'Insecure output handling: markup produced or relayed by the model reaches a renderer that grants it document-wide effect.'
78
+ strength: primary
79
+ eu_ai_act:
80
+ - article: '15'
81
+ context: Article 15 requires resilience against attempts to manipulate system output; a diagram config that repaints the whole window is exactly such a manipulation, and detection is the control.
82
+ strength: primary
83
+ - article: '14'
84
+ context: A full-window overlay defeats human oversight by design -- the operator sees the attacker's surface instead of the system's -- so detecting it is an Article 14 control.
85
+ strength: secondary
86
+ - article: '9'
87
+ context: Rendered-output injection is a documented risk class for agent interfaces; these events are the Article 9 monitoring evidence.
88
+ strength: secondary
89
+ nist_ai_rmf:
90
+ - function: Manage
91
+ subcategory: MG.2.3
92
+ context: Runtime treatment for untrusted content reaching a rendering surface with more authority than intended.
93
+ strength: primary
94
+ - function: Map
95
+ subcategory: MP.5.1
96
+ context: Catalogues CSS-only injection as a distinct risk from script injection, which existing rules already cover.
97
+ strength: secondary
98
+ - function: Measure
99
+ subcategory: MS.2.7
100
+ context: Detection events document the security of the output-rendering path as MEASURE 2.7 requires.
101
+ strength: secondary
102
+ iso_42001:
103
+ - clause: '8.1'
104
+ context: Clause 8.1 operational control over the rendering pipeline that turns model output into a user-facing surface.
105
+ strength: primary
106
+ - clause: '6.2'
107
+ context: Preventing interface takeover and selector-based data exfiltration is an AIMS information security objective under clause 6.2.
108
+ strength: secondary
109
+ - clause: '8.4'
110
+ context: Impact assessment under 8.4 must account for what a rendered artifact can do to the viewer; these events are the evidence for that path.
111
+ strength: secondary
112
+ tags:
113
+ category: context-exfiltration
114
+ subcategory: rendered-output-injection
115
+ scan_target: both
116
+ confidence: medium
117
+ agent_source:
118
+ type: llm_io
119
+ framework:
120
+ - any
121
+ provider:
122
+ - any
123
+ detection:
124
+ conditions:
125
+ - field: content
126
+ operator: regex
127
+ value: '%%\s*\{[^\n]{0,240}?\b(?:themeCSS|altFontFamily|fontFamily)\b["'']?\s*:\s*["''][^\n%]{0,200}?(?::not\s*\(\s*&[^\n{]{0,20}?\)[^\n]{0,40}?\{|\[\s*value\s*[\^$*]=[^\n]{0,60}?\{[^\n]{0,90}?url\s*\(\s*["'']?(?:https?:)?//|url\s*\(\s*["'']?(?:https?:)?//[^\n]{0,120}?\[\s*value\s*[\^$*]=)'
128
+ description: Mermaid init directive whose theme value breaks the stylis scope with :not(&) and opens a rule body, or pairs a SECRET-BEARING attribute-prefix selector with a remote url()
129
+ - field: content
130
+ operator: regex
131
+ value: \bthemeCSS\b["']?\s*:\s*["'][^\n]{0,200}?(?::not\s*\(\s*&[^\n{]{0,20}?\)[^\n]{0,40}?\{|\[\s*value\s*[\^$*]=[^\n]{0,60}?\{[^\n]{0,90}?url\s*\(\s*["']?(?:https?:)?//|url\s*\(\s*["']?(?:https?:)?//[^\n]{0,120}?\[\s*value\s*[\^$*]=)
132
+ description: A themeCSS value carrying the same two escape markers, in the JS/JSON config form
133
+ condition: any
134
+ false_positives:
135
+ - 'THE ONE REAL RESIDUAL, measured, and it is a whole class rather than one shape: ANY prose that reproduces the payload -- the theme key, a colon, a quote, then the stylis escape opening a rule body -- is textually identical to the attack, so no pattern separates them. Three independent constructions fire and are accepted: a CVE advisory quoting the payload, a CHANGELOG line announcing the fix, and a GitHub bug report using the escape as its reproduction case. It does not occur in 12,830 benign corpus samples or in 556 repo doc/skill files. This rule''s own prose deliberately never reassembles that sequence, and that is verified: it does not fire on itself minus its test_cases'
136
+ - A theme that loads a remote webfont AND matches on a value PREFIX (`[value^=`) in the same 120 characters for unrelated reasons -- constructible, never observed, and there is no styling reason to write it
137
+ - 'NOT a false positive any more, and recorded so it is not re-added: a mermaid theme that uses position:fixed for a fullscreen, lightbox, zoom, print-watermark or pinned-legend feature. Confined by stylis, harmless, and the marker was removed'
138
+ - 'NOT a false positive any more, and recorded so it is not re-widened: [class^=], [id^=], [data-*^=], [name^=], [placeholder^=], [title^=] or [href^=] beside a remote url(). Those attributes carry no secret, so the selector-exfil primitive does not apply and the marker no longer matches them'
139
+ response:
140
+ actions:
141
+ - alert
142
+ - snapshot
143
+ auto_response_threshold: high
144
+ message_template: |
145
+ [ATR-2026-02602] A diagram theme configuration carries CSS that leaves the diagram's scope -- a stylis `:not(&)` escape opening a rule body, or a secret-bearing attribute-prefix selector paired with a remote url(). Rendered content can repaint the whole window or leak field values one character at a time. Do not render until the source of this block is established.
146
+ confidence: 70
@@ -0,0 +1,109 @@
1
+ title: LLM-Generated Graph Query Reaching a Remote Endpoint (APOC remote script, raw-IP load, remote export)
2
+ id: ATR-2026-02608
3
+ rule_version: 1
4
+ status: experimental
5
+ description: |
6
+ Detects a Cypher statement -- typically one an LLM wrote for a text-to-query agent -- that leaves the database: it fetches and runs a remote Cypher script (apoc.cypher.runFile at an http URL), reads from a bare IPv4 address rather than a named service, or exports graph contents to a remote URL. GHSA-2pq5-3q89-j7cc (Langroid Neo4jChatAgent) executes model-written Cypher with no validation, so a prompt injection anywhere upstream becomes a data-egress primitive. Verified on the engine: apoc.load.jsonParams and apoc.cypher.runFile at http endpoints score zero, while the file:// form only matches because two SSRF rules recognise the scheme.
7
+ WHAT IS DELIBERATELY NOT CLAIMED, AND WHY. apoc.load.json against an https hostname is the procedure's DOCUMENTED purpose -- the APOC manual's own first example calls a public API -- and enriching nodes by concatenating an id into a URL is ordinary practice. Both were written as benign twins and both are measured silent. That is why the load condition demands a raw IPv4 literal: a legitimate enrichment call names a service, a beacon names an address. The cost of that choice is that exfiltration to an attacker-owned DOMAIN through apoc.load is not detected here, and no attempt is made to guess at it.
8
+ THAT PREMISE HOLDS ONLY FOR PUBLIC ADDRESSES, which adversarial review established by counter-example. In loopback, RFC1918 and link-local space an IP literal is the NORM, not the anomaly: APOC's own integration tests call http://127.0.0.1:<port>, docker and Kubernetes fixtures address pod and bridge IPs, and ansible/terraform bootstrap jobs and non-English tutorials name 10.x/192.168.x hosts directly. Fourteen such twins fired the original condition. The load condition therefore excludes 0.x, 10.x, 127.x, 169.254.x, 172.16-31.x and 192.168.x, with one carve-in: 169.254.169.254, the cloud metadata address, still fires because reaching it is never ordinary enrichment. A beacon to a private address from a compromised in-network host is consequently NOT detected here.
9
+ THE EXPORT CONDITION MATCHES THE DESTINATION ARGUMENT, NOT ANY URL. It first accepted any quoted http(s) URL within 200 characters of the open paren, which made apoc.export.csv.query fire whenever the EXPORTED QUERY happened to quote a URL -- a STARTS WITH filter on a page url, a SKOS or schema.org namespace, a coalesce default, a feed identifier -- while the destination was a local file. Six such twins fired. The URL must now be a complete string argument immediately followed by the config map that every apoc.export signature requires, so a URL nested inside the query no longer counts. A second review round found that the config-map requirement alone was not enough: an exported query that itself CALLs apoc.load.json(url, {}) presents a URL followed by a config map, so the condition also requires the URL to be either the first argument or to follow a comma whose preceding character is not an open paren. apoc.export.*.data and .graph, whose destination is the third and second argument, are covered by that comma form and are carried as true positives so the carve-out cannot silently cost recall.
10
+ TWO LIMITS FOUND BY REVIEW AND LEFT IN PLACE ON PURPOSE. (1) The list form apoc.cypher.runFiles(['http://host/x.cypher']) is NOT matched, because the bracket sits between the paren and the quote; it was measured silent and is a real evasion. Widening the pattern to accept the bracket was tried and rejected: it turns APOC's own documentation sentence about runFiles and allowed_protocols into a false positive, which is a worse trade for a rule whose action is alert. (2) The 200-character window in the export condition cannot cross a newline, so a remote export written across several lines with a multi-line query is missed. Letting it cross newlines was tried and rejected too: a script that exports locally and then, on the next line, calls apoc.load.json against an API with a config map becomes a false positive.
11
+ author: ATR Community
12
+ date: 2026/08/23
13
+ schema_version: '0.1'
14
+ detection_tier: pattern
15
+ maturity: test
16
+ severity: high
17
+ references:
18
+ owasp_llm:
19
+ - LLM02:2025
20
+ owasp_agentic:
21
+ - ASI02:2026
22
+ mitre_atlas:
23
+ - AML.T0057 - LLM Data Leakage
24
+ - AML.T0051 - LLM Prompt Injection
25
+ cve:
26
+ - GHSA-2pq5-3q89-j7cc
27
+ compliance:
28
+ owasp_agentic:
29
+ - id: ASI02:2026
30
+ context: Model-authored query text reaches the network, so a text-to-query agent becomes an egress and remote-execution channel for whoever influenced the prompt.
31
+ strength: primary
32
+ owasp_llm:
33
+ - id: LLM02:2025
34
+ context: 'Insecure output handling: the model''s output is executed by a database engine whose procedure library can fetch and run remote code.'
35
+ strength: primary
36
+ eu_ai_act:
37
+ - article: '15'
38
+ context: 'Article 15 cybersecurity: query text crossing into remote code execution and data egress is the manipulation the article requires resilience against.'
39
+ strength: primary
40
+ - article: '10'
41
+ context: 'Article 10 data governance: the graph''s contents leaving the deployment boundary is a data-governance event that must be detectable.'
42
+ strength: secondary
43
+ - article: '9'
44
+ context: Text-to-query injection is a documented risk class for database agents; detections are the Article 9 monitoring evidence.
45
+ strength: secondary
46
+ nist_ai_rmf:
47
+ - function: Manage
48
+ subcategory: MG.2.3
49
+ context: Runtime treatment for model-authored queries that reach beyond the datastore.
50
+ strength: primary
51
+ - function: Map
52
+ subcategory: MP.5.1
53
+ context: Catalogues graph-query egress as distinct from SQL injection, which existing rules already cover.
54
+ strength: secondary
55
+ - function: Measure
56
+ subcategory: MS.2.7
57
+ context: Detection events document the security of the query-execution path as MEASURE 2.7 requires.
58
+ strength: secondary
59
+ iso_42001:
60
+ - clause: '8.1'
61
+ context: Clause 8.1 operational control over what the system may execute against its data stores.
62
+ strength: primary
63
+ - clause: '6.2'
64
+ context: Preventing unauthorised data egress from the graph is an AIMS information security objective under clause 6.2.
65
+ strength: secondary
66
+ - clause: '8.4'
67
+ context: Impact assessment under 8.4 must account for query-mediated egress; these events are the evidence for that path.
68
+ strength: secondary
69
+ tags:
70
+ category: context-exfiltration
71
+ subcategory: query-language-egress
72
+ scan_target: both
73
+ confidence: medium
74
+ agent_source:
75
+ type: mcp_exchange
76
+ framework:
77
+ - any
78
+ provider:
79
+ - any
80
+ detection:
81
+ conditions:
82
+ - field: content
83
+ operator: regex
84
+ value: \bapoc\.cypher\.(?:runFile|runFiles|runSchemaFiles?|runMany)\s*\(\s*["'](?:https?|ftp)://
85
+ description: APOC procedure fetching and executing a Cypher script from a remote URL
86
+ - field: content
87
+ operator: regex
88
+ value: \bapoc\.load\.(?:json|jsonParams|csv|csvParams|xml|html|arrow)\s*\(\s*["'](?:https?)://(?:(?:1[01]\d|12[0-6]|12[89]|1[3-5]\d|16[0-8]|17[01]|17[3-9]|18\d|19[01]|19[3-9]|2[0-4]\d|25[0-5]|1[1-9]|[2-9]\d|[1-9])\.(?:\d{1,3}\.){2}\d{1,3}|169\.254\.169\.254|172\.(?:1[0-5]|3[2-9]|[4-9]\d|1\d\d|2[0-4]\d|25[0-5]|\d)\.\d{1,3}\.\d{1,3}|192\.(?:1[0-5]\d|16[0-79]|1[7-9]\d|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.\d{1,3}\.\d{1,3})
89
+ description: APOC load procedure pointed at a bare PUBLIC IPv4 address rather than a named service (loopback, RFC1918 and link-local are excluded; 169.254.169.254 cloud metadata is not)
90
+ - field: content
91
+ operator: regex
92
+ value: \bapoc\.export\.(?:json|csv|cypher|graphml)\.(?:all|data|query|graph)\s*\(\s*(?:[^\n]{0,200}?[^\n(,\s]\s*,\s*)?["'](?:https?|ftp)://[^"'\s\n]{0,300}["']\s*,\s*[\{\$]
93
+ description: APOC export procedure whose DESTINATION argument is a remote URL -- the URL must be a whole string argument followed by the mandatory config map, so a URL merely quoted inside the exported query does not count
94
+ condition: any
95
+ false_positives:
96
+ - 'REMAINS AND IS NOT FIXABLE BY PATTERN: security writing that quotes one of these payloads verbatim -- an advisory, an OWASP writeup, a pentest finding -- fires, including inside a fenced code block. suppress_in_code_blocks is deliberately NOT set, because a text-to-query agent''s own model output routinely arrives wrapped in a ```cypher fence and suppressing it would remove the rule''s primary channel.'
97
+ - 'REMAINS BY DESIGN: apoc.cypher.runFile against an INTERNAL http host, e.g. a nightly schema bootstrap served from an artifact server. Fetching and executing a Cypher script over the network is the primitive this rule is about, so the host is not used to excuse it.'
98
+ - An operations job that exports a graph snapshot to a PUBLIC HTTP object store, where the destination is a whole string argument followed by the config map
99
+ - A data pipeline that loads seed data from a public host addressed by a bare IP rather than a name
100
+ - 'REMAINS: a tutorial or runbook that hosts a sample file on a public throwaway box and names it by IP, including the RFC 5737 documentation ranges. Those ranges cannot be excluded -- the GHSA payload this rule is built on uses 198.51.100.9, which is one of them.'
101
+ - 'REMAINS: apoc.export.*.query whose exported query RETURNs a bare URL literal immediately followed by a bare map literal, e.g. RETURN n.a, ''https://x'', {k:1}. That is not idiomatic Cypher; separating it from a real destination argument would need paren-depth tracking, which a regex cannot do.'
102
+ response:
103
+ actions:
104
+ - alert
105
+ - snapshot
106
+ auto_response_threshold: high
107
+ message_template: |
108
+ [ATR-2026-02608] A graph query fetches remote code, reads from a bare IP address, or exports graph contents to a remote URL. If this statement was written by a model, treat the destination as attacker-chosen until proven otherwise.
109
+ confidence: 70
@@ -0,0 +1,102 @@
1
+ title: Prompt-Embedded Auto-Fetch Mention Pointed at an Internal Address
2
+ id: ATR-2026-02621
3
+ rule_version: 2
4
+ status: experimental
5
+ description: |
6
+ Detects an @-mention token inside prompt text whose target is an internal address. CLIs that expand mentions (@url:, @fetch:, @web:) resolve them BEFORE the agent runs: the URL is fetched and the response body is prepended into model context, with no tool call, no egress policy and no consent gate. CVE-2026-47395 (PraisonAI CLI) is this exact mechanism -- @url:<http...> is urlopen'd and inlined, with no loopback, RFC1918 or metadata restriction.
7
+ MEASURED GAP. `@url:http://localhost.:8766/debug/vars summarize this` and `@url:http://2130706433:8765/admin` returned zero matches on all seven event types. The same line aimed at 169.254.169.254 fires ATR-2026-00500 and ATR-2026-00568. So the metadata IP is guarded and loopback / private space is not, and nothing in the corpus recognises the auto-expanding mention syntax itself as a fetch primitive.
8
+ WHY THE PLAIN LOOPBACK FORM IS NOT FLAGGED. ATR-2026-00013 documents in-rule that bare localhost / 127.0.0.1 is deliberately exempt, because coding agents legitimately read their own dev server. `@url:http://localhost:3000/api/health` is that same benign act and this rule leaves it alone. Condition 1 therefore fires only on encodings of the loopback address that a human never types by hand -- decimal, octal, hex, short-form, trailing-dot -- whose only purpose is to defeat a string comparison. Condition 2 keeps the plain hosts but requires a control-plane port or a secret-store path alongside them, so the dev-server exemption survives intact.
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
+ cve:
17
+ - CVE-2026-47395
18
+ owasp_llm:
19
+ - LLM01:2025
20
+ owasp_agentic:
21
+ - ASI05:2026
22
+ mitre_atlas:
23
+ - AML.T0051 - LLM Prompt Injection
24
+ - AML.T0057 - LLM Data Leakage
25
+ compliance:
26
+ owasp_agentic:
27
+ - id: ASI05:2026
28
+ context: The mention expands into an outbound request the agent never decided to make, reaching resources outside the boundary the operator granted.
29
+ strength: primary
30
+ owasp_llm:
31
+ - id: LLM01:2025
32
+ context: Content fetched from the internal endpoint is prepended into model context as trusted text, which is indirect prompt injection with an SSRF carrier.
33
+ strength: primary
34
+ eu_ai_act:
35
+ - article: '15'
36
+ context: 'Article 15 accuracy and robustness: an unconsented fetch of internal state into model context alters system behaviour through a path the operator cannot see.'
37
+ strength: primary
38
+ - article: '14'
39
+ context: Expansion happens before the agent runs, so the human oversight Article 14 requires has no point at which to intervene; detection restores that visibility.
40
+ strength: secondary
41
+ - article: '12'
42
+ context: 'Article 12 record-keeping: these events log network reach that leaves no tool-call trace of its own.'
43
+ strength: secondary
44
+ nist_ai_rmf:
45
+ - function: Manage
46
+ subcategory: MG.2.3
47
+ context: Runtime treatment for prompt-borne SSRF that bypasses the tool layer entirely.
48
+ strength: primary
49
+ - function: Map
50
+ subcategory: MP.5.1
51
+ context: Catalogues pre-execution mention expansion as a distinct attack surface from tool-invoked fetches.
52
+ strength: secondary
53
+ - function: Measure
54
+ subcategory: MS.2.7
55
+ context: Detection events document the security and resilience property MEASURE 2.7 asks be measured for network egress.
56
+ strength: secondary
57
+ iso_42001:
58
+ - clause: '8.1'
59
+ context: 'Clause 8.1 operational control: content entering model context from an internal endpoint has bypassed every configured input control.'
60
+ strength: primary
61
+ - clause: '6.2'
62
+ context: Preventing unauthorised internal network reach is an AIMS information security objective under clause 6.2.
63
+ strength: secondary
64
+ - clause: '8.4'
65
+ context: Impact assessment under clause 8.4 must account for internal service data reaching the model provider through context.
66
+ strength: secondary
67
+ tags:
68
+ category: context-exfiltration
69
+ subcategory: prompt-mention-ssrf
70
+ scan_target: both
71
+ confidence: medium
72
+ agent_source:
73
+ type: llm_io
74
+ framework:
75
+ - any
76
+ provider:
77
+ - any
78
+ detection:
79
+ conditions:
80
+ - field: user_input
81
+ operator: regex
82
+ value: (?i)@(?:(?:url|fetch|web|link|page|browse|site|doc):(?:https?://)?|https?://)(?:2130706433|3232235521|2851995648|0x0*7f0{0,6}1\b|0x0*a9fea9fe\b|0177(?:\.0+){2}\.0*1|127\.1[:/]|localhost\.[:/]|\[::1\]|\[::ffff:(?:7f00:1|127\.0\.0\.1)\])
83
+ description: Auto-expanding mention aimed at a non-dotted-quad encoding of loopback or link-local -- decimal, octal, hex, short-form or trailing-dot
84
+ - field: user_input
85
+ operator: regex
86
+ value: (?i)@(?:(?:url|fetch|web|link|page|browse|site|doc):(?:https?://)?|https?://)(?:127\.\d{1,3}\.\d{1,3}\.\d{1,3}|localhost|0\.0\.0\.0|10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|172\.(?:1[6-9]|2\d|3[01])\.\d{1,3}\.\d{1,3}|169\.254\.\d{1,3}\.\d{1,3}|[a-z0-9-]{1,30}\.internal)(?::\d{1,5})?(?:/[^\s"']{0,30})?(?:/v1/secret|/v1/kv|/v2/keys|/latest/meta-data|/computeMetadata|/actuator/env|/debug/pprof|/v1/sys/wrapping|/\.env\b|/\.git/config|/_cluster/settings|docker\.sock)
87
+ description: Auto-expanding mention aimed at internal space on a path that reads secret material (not a health or version endpoint)
88
+ condition: any
89
+ false_positives:
90
+ - A developer deliberately asking the agent to read a local control-plane endpoint during debugging -- e.g. @url:http://localhost:8200/v1/secret while working on Vault integration. The rule fires by design; provenance of the prompt is what triage must establish.
91
+ - 'Bare @url: mentions aimed at localhost dev servers are NOT flagged, by design (ATR-2026-00013 exemption)'
92
+ - 'A control-plane PORT alone is not sufficient and is deliberately not used: measured during authoring, it fired on six out of six plausible local-dev prompts (local elasticsearch, redis, mongo, couchdb, vault health, docker version). Condition 2 requires a secret-material PATH instead.'
93
+ - 'MEASURED AND FIXED (adversarial review 2026-08-23). The mention prefix was `\s*[:=]\s*`, which is not the mention syntax -- it is the variable syntax of REST-client `.http` files (JetBrains HTTP Client, VS Code REST Client), where `@url = http://localhost:8080/actuator/env` and `@site = http://[::1]:8080/` are ordinary unquoted declarations with nothing to do with this attack. Four such files and a hand-written `@link: http://localhost:8080/actuator/env` docblock all fired. Prefix tightened to a literal `:` with no surrounding whitespace, which is the actual CVE-2026-47395 token form; all six re-run clean and no true positive was lost.'
94
+ - 'RESIDUAL AND NOT FIXABLE AT THE PATTERN LAYER. The evidence this rule matches is a literal string, and writing ABOUT the attack reproduces that string byte for byte. Measured on 14 authored benign texts that all still fire: a vitest regression test for the CVE fix, a CHANGELOG security entry, a generated policy denylist, Traditional Chinese and Japanese advisories, an SSRF payload wordlist, the mention library''s own README, a prompt-injection benchmark row, a pentest report finding, an incident triage chat log, an agent framework''s own system prompt documenting @browse:, a nuclei template, a docs table of blocked hosts -- and this rule''s own YAML file, which fires itself. No single-event condition separates these from the attack, because they are the same bytes. Triage must establish provenance; a repository that has PATCHED CVE-2026-47395 will carry these artifacts and alert on them routinely. Deliberately NOT papered over with a quote/backtick lookbehind or suppress_in_code_blocks: both would be defeated by one character of attacker formatting, and this rule''s main carrier is untrusted document text arriving on tool_response.'
95
+ - 'SCOPE NOTE. `field: user_input` is not user-typed-only. src/engine.ts resolves user_input to event.content on llm_input AND tool_response, so every file the agent READS is in scope for this rule -- which is what makes the residual documentation class above an operational cost rather than a theoretical one.'
96
+ response:
97
+ actions:
98
+ - alert
99
+ auto_response_threshold: high
100
+ message_template: |
101
+ [ATR-2026-02621] Prompt-embedded auto-fetch mention aimed at an internal address. Mention expansion happens before the agent runs, so no tool-level egress policy applies. Verify who authored this prompt text (CVE-2026-47395).
102
+ confidence: 70
@@ -0,0 +1,109 @@
1
+ title: Dangerous URI Scheme Obfuscated by Interstitial Characters
2
+ id: ATR-2026-02623
3
+ rule_version: 2
4
+ status: experimental
5
+ description: |
6
+ Detects a javascript:, vbscript: or data:text/html URI whose SCHEME NAME has been broken up by characters that a URL parser discards but a string-matching sanitizer does not: a raw tab, newline, carriage return or NUL, the numeric character reference for any of them, or a zero-padded numeric reference standing in for the scheme's first letter. Also covers an svg-namespaced script element carrying an HTML-style src attribute, a construct SVG itself never uses (SVG script loads through href / xlink:href) and which therefore only appears when something is aiming at an HTML parser past a sanitizer. CVE-2026-31807 (SiYuan SVG sanitizer bypass) and CVE-2022-1243 (urijs incorrect protocol extraction via CR, LF and TAB) are the same defect seen from two sides.
7
+ MEASURED GAP. `<a href="java&#9;script:alert(document.cookie)">`, a raw-newline split, and a zero-padded `&#0000000106;avascript:` all returned zero real matches across the seven event types, while the plain `<a href="javascript:fetch(document.cookie)">` control fires ATR-2026-00511, 00571 and 00497. Reading ATR-2026-00571 explains why: its pattern is `javascript:\s*(?:alert|eval|document\.|window\.|fetch|...)`, which binds both the literal scheme spelling and the callee that follows it. This rule deliberately does NOT require a callee -- an attacker who has already spelled the scheme as java&#9;script: has declared intent, and requiring a known callee is what let `javascript:new Function(atob(...))` through in the first place.
8
+ WHY A QUOTED URI-BEARING POSITION IS REQUIRED. The first draft matched the split scheme anywhere. Measured against hand-written benign text it fired on YAML and on wrapped prose, because `- java` on one line followed by `script:` on the next contains the literal java\nscript: sequence. Newline is not droppable from the junk set -- CVE-2022-1243 names LF explicitly -- so the draft required the match to sit where a URI goes: an href/src/action attribute, a navigation argument, or a markdown link target.
9
+ That was not enough, and adversarial review measured why. The position test is a substring test with no word boundary, so `permalink:`, `redirect_uri:`, `avatarUrl:`, `geolocation:`, `transaction:` and `EXTRACTION=` all satisfied it, and every one of the original FPs came straight back -- in YAML, in a Makefile, in a JS object literal, in an OpenAPI document, in a TSV table, in a CHANGELOG and in Japanese prose (11 measured FPs). The discriminator that actually works is the QUOTE: a URI sitting in an href, a src or a navigation argument is always quoted, while a bare YAML scalar or a make variable is not. The quote is therefore mandatory on the keyword branch. The markdown branch keeps no quote but may no longer cross a line break, since a CommonMark inline destination starts on the same line as `](` -- allowing \s* there let `handlers["java"](\njava\nscript: ctx)` match.
10
+ SCOPE. The entity-encoded COLON form (javascript&#58;) is not covered here. The bare `<svg:script>...</svg:script>` element is deliberately NOT covered either: adversarial review measured it firing on an Apache Batik CDATA example and on a zh-TW XHTML+SVG tutorial exactly as it fired on the payload, because at the pattern tier the two differ only in the script body, which this rule does not read. Only the src-attribute form, which SVG never legitimately produces, is kept.
11
+ author: ATR Community
12
+ date: 2026/08/23
13
+ schema_version: '0.1'
14
+ detection_tier: pattern
15
+ maturity: test
16
+ severity: high
17
+ references:
18
+ cve:
19
+ - CVE-2026-31807
20
+ - CVE-2022-1243
21
+ owasp_llm:
22
+ - LLM05:2025
23
+ owasp_agentic:
24
+ - ASI04:2026
25
+ mitre_atlas:
26
+ - AML.T0051 - LLM Prompt Injection
27
+ - AML.T0057 - LLM Data Leakage
28
+ compliance:
29
+ owasp_agentic:
30
+ - id: ASI04:2026
31
+ context: Content the agent emits or relays executes in the rendering surface, taking actions in the victim's session that the agent was never asked to take.
32
+ strength: primary
33
+ owasp_llm:
34
+ - id: LLM05:2025
35
+ context: 'Improper output handling: model or tool output containing an executable URI is rendered without neutralisation, which is the canonical instance of this category.'
36
+ strength: primary
37
+ eu_ai_act:
38
+ - article: '15'
39
+ context: 'Article 15 robustness: an obfuscated scheme is an explicit attempt to defeat the system''s own input sanitisation, which is the attack class the article names.'
40
+ strength: primary
41
+ - article: '9'
42
+ context: Rendered-output injection is a documented risk for agents with a UI surface; these detections are the Article 9 monitoring control.
43
+ strength: secondary
44
+ - article: '12'
45
+ context: 'Article 12 record-keeping: script execution in a rendered surface leaves no server-side trace of its own.'
46
+ strength: secondary
47
+ nist_ai_rmf:
48
+ - function: Manage
49
+ subcategory: MG.2.3
50
+ context: Runtime treatment for executable content reaching a rendering surface through agent output.
51
+ strength: primary
52
+ - function: Map
53
+ subcategory: MP.5.1
54
+ context: Catalogues sanitizer-evasion encodings as distinct from the plain scheme, which is exactly the half existing coverage missed.
55
+ strength: secondary
56
+ - function: Measure
57
+ subcategory: MS.2.7
58
+ context: Detection events supply the security and resilience evidence MEASURE 2.7 asks be documented for the rendering path.
59
+ strength: secondary
60
+ iso_42001:
61
+ - clause: '8.1'
62
+ context: 'Clause 8.1 operational control: content leaving the system carries executable code into a downstream surface.'
63
+ strength: primary
64
+ - clause: '6.2'
65
+ context: Preventing script execution in rendered agent output is an AIMS information security objective under clause 6.2.
66
+ strength: secondary
67
+ - clause: '8.4'
68
+ context: Impact assessment under clause 8.4 must account for agent output rendered in a browser under a user's own session.
69
+ strength: secondary
70
+ tags:
71
+ category: context-exfiltration
72
+ subcategory: sanitizer-evasion
73
+ scan_target: both
74
+ confidence: medium
75
+ agent_source:
76
+ type: llm_io
77
+ framework:
78
+ - any
79
+ provider:
80
+ - any
81
+ detection:
82
+ conditions:
83
+ - field: content
84
+ operator: regex
85
+ value: '(?i)(?:(?:href|src|action|formaction|xlink:href|url|uri|link|location|open_url|navigate|goto|window\s*\.\s*open)\s*[=(:]\s*(?:\\{0,2}[\"''`])\s*|\]\([ \t]{0,4})(?:j(?:[\x00\x09\x0a\x0d]|&#x0*(?:9|a|d);|&#0*(?:9|10|13);|&Tab;|&NewLine;){1,10}avascript|ja(?:[\x00\x09\x0a\x0d]|&#x0*(?:9|a|d);|&#0*(?:9|10|13);|&Tab;|&NewLine;){1,10}vascript|jav(?:[\x00\x09\x0a\x0d]|&#x0*(?:9|a|d);|&#0*(?:9|10|13);|&Tab;|&NewLine;){1,10}ascript|java(?:[\x00\x09\x0a\x0d]|&#x0*(?:9|a|d);|&#0*(?:9|10|13);|&Tab;|&NewLine;){1,10}script|javas(?:[\x00\x09\x0a\x0d]|&#x0*(?:9|a|d);|&#0*(?:9|10|13);|&Tab;|&NewLine;){1,10}cript|javasc(?:[\x00\x09\x0a\x0d]|&#x0*(?:9|a|d);|&#0*(?:9|10|13);|&Tab;|&NewLine;){1,10}ript|javascr(?:[\x00\x09\x0a\x0d]|&#x0*(?:9|a|d);|&#0*(?:9|10|13);|&Tab;|&NewLine;){1,10}ipt|javascri(?:[\x00\x09\x0a\x0d]|&#x0*(?:9|a|d);|&#0*(?:9|10|13);|&Tab;|&NewLine;){1,10}pt|javascrip(?:[\x00\x09\x0a\x0d]|&#x0*(?:9|a|d);|&#0*(?:9|10|13);|&Tab;|&NewLine;){1,10}t|v(?:[\x00\x09\x0a\x0d]|&#x0*(?:9|a|d);|&#0*(?:9|10|13);|&Tab;|&NewLine;){1,10}bscript|vb(?:[\x00\x09\x0a\x0d]|&#x0*(?:9|a|d);|&#0*(?:9|10|13);|&Tab;|&NewLine;){1,10}script|vbs(?:[\x00\x09\x0a\x0d]|&#x0*(?:9|a|d);|&#0*(?:9|10|13);|&Tab;|&NewLine;){1,10}cript|vbsc(?:[\x00\x09\x0a\x0d]|&#x0*(?:9|a|d);|&#0*(?:9|10|13);|&Tab;|&NewLine;){1,10}ript|vbscr(?:[\x00\x09\x0a\x0d]|&#x0*(?:9|a|d);|&#0*(?:9|10|13);|&Tab;|&NewLine;){1,10}ipt|vbscri(?:[\x00\x09\x0a\x0d]|&#x0*(?:9|a|d);|&#0*(?:9|10|13);|&Tab;|&NewLine;){1,10}pt|vbscrip(?:[\x00\x09\x0a\x0d]|&#x0*(?:9|a|d);|&#0*(?:9|10|13);|&Tab;|&NewLine;){1,10}t)\s*:'
86
+ description: Dangerous URI scheme split by a character the parser discards -- raw CR/LF/TAB/NUL or its numeric character reference -- in a URI-bearing position
87
+ - field: content
88
+ operator: regex
89
+ value: (?i)(?:(?:href|src|action|formaction|xlink:href|url|uri|link|location|open_url|navigate|goto|window\s*\.\s*open)\s*[=(:]\s*(?:\\{0,2}[\"'`])\s*|\]\([ \t]{0,4})(?:&#0*106;|&#x0*6a;)avascript\s*:|(?:(?:href|src|action|formaction|xlink:href|url|uri|link|location|open_url|navigate|goto|window\s*\.\s*open)\s*[=(:]\s*(?:\\{0,2}[\"'`])\s*|\]\([ \t]{0,4})(?:&#0*118;|&#x0*76;)bscript\s*:|(?:(?:href|src|action|formaction|xlink:href|url|uri|link|location|open_url|navigate|goto|window\s*\.\s*open)\s*[=(:]\s*(?:\\{0,2}[\"'`])\s*|\]\([ \t]{0,4})(?:&#0*100;|&#x0*64;)ata\s*:\s*text/html
90
+ description: Dangerous URI scheme whose leading character is supplied as a zero-padded numeric character reference
91
+ - field: content
92
+ operator: regex
93
+ value: (?i)<\s*svg\s*:\s*script\b[^>]{0,200}\bsrc\s*=
94
+ description: Namespace-prefixed script ELEMENT -- an opening tag carrying a src attribute or closed by a matching end tag, not a bare mention of the tag name in prose
95
+ condition: any
96
+ false_positives:
97
+ - Text where 'java' ends a line and a 'script:' key begins the next -- YAML, workflow files, wrapped prose. Measured during authoring, then measured AGAIN in adversarial review because the URI-position test had no word boundary. Now excluded by requiring the value to be quoted.
98
+ - 'Security writing or a sanitizer test suite that quotes an obfuscated scheme verbatim, including this rule''s own test cases. Measured in adversarial review: an explainer showing the payload inside a fenced code block fires, and so does prose warning that <svg:script src=> is the wrong attribute. Both are the payload bytes; the pattern tier cannot see the surrounding intent, and suppress_in_code_blocks is deliberately NOT set because a markdown fence would then be a one-character evasion.'
99
+ - 'The plain javascript: scheme is deliberately NOT matched here; ATR-2026-00571 already covers it'
100
+ - 'A quoted URI-position value that legitimately begins with the token ''java'' or ''vb'' and is followed only by a raw TAB/CR/LF and then a ''script:'' token -- e.g. a YAML scalar src: "java<TAB>script: label" or a JS template literal `java\nscript: ...`. Both were constructed adversarially and neither is idiomatic, but they remain reachable: dropping raw TAB/LF from the junk set would delete the CVE-2022-1243 core, so they are accepted.'
101
+ - Namespace-prefixed script elements that are ordinary markup -- <html:script src=>, <xhtml:script src=> in an XSLT stylesheet, <ns2:script> in a JAXB/SOAP payload. Measured FPs in adversarial review; the prefix set is now svg only.
102
+ - 'Documentation showing a complete <svg:script>...</svg:script> worked example. NOT a false positive any more and NOT detected either: that branch was removed after it fired identically on an Apache Batik CDATA example, a zh-TW compound-document tutorial and the attack payload. Detecting it needs the script body, which is a different tier.'
103
+ response:
104
+ actions:
105
+ - alert
106
+ auto_response_threshold: high
107
+ message_template: |
108
+ [ATR-2026-02623] Dangerous URI scheme obfuscated so a string-matching sanitizer cannot see it, but a browser still executes it. Do not render this content (CVE-2026-31807 / CVE-2022-1243 class).
109
+ confidence: 75
@@ -0,0 +1,109 @@
1
+ title: Vendor API Hostname Used as a Label Prefix of Another Domain
2
+ id: ATR-2026-02649
3
+ rule_version: 2
4
+ status: experimental
5
+ description: |
6
+ Detects a hostname in which a well-known API FQDN is only the LEFT-HAND part of a longer domain -- `api.contentful.com.collector.example`, `api.openai.com.relay.example`, `login.microsoftonline.com.attacker.io`. Nobody owns those names except the owner of the trailing domain, so any allow-list, log filter or human eye that matches by "starts with" or "contains" reads them as the vendor while the traffic goes somewhere else. GHSA-2xhg-73j7-rrgx (Contentful MCP server) is the reference case: the `host` and `proxy` arguments of export_space/import_space are model- controllable and the CMA client still attaches the operator's management token, so the model chooses where the company's credential is delivered.
7
+ THE TWO SHAPES. Condition 1 is the general one and needs no context at all: a vendor FQDN followed by two more labels, in URL or assignment position. It is unambiguous -- `bucket.s3.amazonaws.com` (vendor as SUFFIX, which is legitimate) does not match, because the extra labels must come AFTER the vendor name. Condition 2 covers the same trick with only ONE extra label (`api.openai.com.internal`), which is ambiguous on its own, so it is required to appear as the value of an endpoint-override parameter -- base_url, api_base, host, proxy, serverUrl, endpoint.
8
+ DELIBERATE NON-SCOPE. The plain redirect -- `OPENAI_BASE_URL= https://relay.collector.example/v1` -- is NOT claimed. Deciding that a host is "not the vendor's" requires a negative match the engine cannot express, and the benign case is common: every local model server, gateway and LiteLLM proxy sets exactly that variable to exactly that kind of host. Claiming it would flag them all. What is claimed is only the form that is wrong by construction.
9
+ Regional legitimate suffixes were checked: `s3.amazonaws.com.cn` is real, and it does not match, because both conditions need two further labels.
10
+ WHAT rule_version 2 GAVE UP, DELIBERATELY. Condition 1 now requires a scheme in front and a path or port behind. A look-alike host quoted bare (`api.openai.com.relay.example` with no scheme and no path) is only caught when it sits in an endpoint-override parameter, via condition 2. That is a real recall gap and an easy evasion; it is accepted because without it the rule fired on 14 of 16 hand-written benign inputs -- host-derived filenames, HAR captures, TLS cert paths, VCR cassettes, k8s ExternalName values, phishing-awareness bulletins and blocklists. Coverage that costs that much is negative coverage.
11
+ author: ATR Community
12
+ date: 2026/08/23
13
+ schema_version: '0.1'
14
+ detection_tier: pattern
15
+ maturity: test
16
+ severity: high
17
+ references:
18
+ ghsa:
19
+ - GHSA-2xhg-73j7-rrgx
20
+ cwe:
21
+ - CWE-350
22
+ - CWE-346
23
+ - CWE-1385
24
+ owasp_llm:
25
+ - LLM02:2025
26
+ owasp_agentic:
27
+ - ASI02:2026
28
+ mitre_atlas:
29
+ - AML.T0057 - LLM Data Leakage
30
+ mitre_attack:
31
+ - 'T1583.001 - Acquire Infrastructure: Domains'
32
+ external:
33
+ - https://github.com/advisories/GHSA-2xhg-73j7-rrgx
34
+ compliance:
35
+ owasp_agentic:
36
+ - id: ASI02:2026
37
+ context: Credentials and payloads intended for a named vendor are delivered to a domain the attacker controls, while every string-matching control still reads the vendor's name.
38
+ strength: primary
39
+ owasp_llm:
40
+ - id: LLM02:2025
41
+ context: 'Sensitive information disclosure through destination confusion: the operator''s API token travels to the attacker because the endpoint argument was model-controllable.'
42
+ strength: primary
43
+ eu_ai_act:
44
+ - article: '15'
45
+ context: 'Article 15 resilience: an allow-list defeated by prefix matching is a control that does not hold under adversarial input, and these detections are how its failure becomes visible.'
46
+ strength: primary
47
+ - article: '10'
48
+ context: Article 10 data governance -- data leaving to an unintended processor because a hostname was misread.
49
+ strength: secondary
50
+ - article: '12'
51
+ context: 'Article 12 traceability: logs that record the vendor''s name for traffic that never reached the vendor are misleading unless this confusion is flagged.'
52
+ strength: secondary
53
+ nist_ai_rmf:
54
+ - function: Manage
55
+ subcategory: MG.2.3
56
+ context: Runtime treatment for the risk that egress allow-lists are matched by substring rather than by authority.
57
+ strength: primary
58
+ - function: Measure
59
+ subcategory: MS.2.7
60
+ context: Detection events evidence whether destination controls actually bound the traffic.
61
+ strength: primary
62
+ - function: Map
63
+ subcategory: MP.5.1
64
+ context: Characterises hostname authority confusion as a distinct risk from an outright unknown destination.
65
+ strength: secondary
66
+ iso_42001:
67
+ - clause: '8.1'
68
+ context: Clause 8.1 control of externally provided processes depends on knowing which external party is actually being called.
69
+ strength: primary
70
+ - clause: '8.4'
71
+ context: Impact assessment under clause 8.4 must account for operator credentials being delivered to a look-alike domain.
72
+ strength: secondary
73
+ - clause: '6.2'
74
+ context: Ensuring outbound traffic reaches the intended processor is an AIMS objective under clause 6.2.
75
+ strength: secondary
76
+ tags:
77
+ category: context-exfiltration
78
+ subcategory: hostname-authority-confusion
79
+ scan_target: both
80
+ confidence: medium
81
+ agent_source:
82
+ type: mcp_exchange
83
+ framework:
84
+ - any
85
+ provider:
86
+ - any
87
+ detection:
88
+ conditions:
89
+ - field: content
90
+ operator: regex
91
+ value: https?://(?:api\.openai\.com|api\.anthropic\.com|api\.github\.com|github\.com|raw\.githubusercontent\.com|api\.slack\.com|hooks\.slack\.com|login\.microsoftonline\.com|graph\.microsoft\.com|oauth2\.googleapis\.com|accounts\.google\.com|generativelanguage\.googleapis\.com|api\.contentful\.com|api\.stripe\.com|s3\.amazonaws\.com|sts\.amazonaws\.com|api\.notion\.com|api\.linear\.app|api\.telegram\.org|registry\.npmjs\.org|files\.pythonhosted\.org|api\.mistral\.ai|api\.groq\.com|api\.cohere\.com|huggingface\.co)\.[a-z0-9-]{1,63}\.[a-z]{2,24}[/:]
92
+ description: Vendor FQDN followed by two further labels IN URL AUTHORITY POSITION -- a scheme in front and a path or port behind. rule_version 1 also accepted the bare `//`, `@` and `key:` prefixes, which made every host-derived FILENAME a match (api.openai.com.2026-08-23.har, api.github.com.chain.pem, api.stripe.com.access.log) and every split-horizon internal name (api.contentful.com.svc.cluster.local).
93
+ - field: content
94
+ operator: regex
95
+ value: \b(?:[a-z_]{0,16}base_?url|api_?base|["']?\bhost\b["']?|["']?\bproxy\b["']?|server_?url|\bendpoint\b|api_?host|["']?\burl\b["']?)["']?\s*[:=]\s*["']?(?:https?://)?(?:api\.openai\.com|api\.anthropic\.com|api\.github\.com|github\.com|raw\.githubusercontent\.com|api\.slack\.com|hooks\.slack\.com|login\.microsoftonline\.com|graph\.microsoft\.com|oauth2\.googleapis\.com|accounts\.google\.com|generativelanguage\.googleapis\.com|api\.contentful\.com|api\.stripe\.com|s3\.amazonaws\.com|sts\.amazonaws\.com|api\.notion\.com|api\.linear\.app|api\.telegram\.org|registry\.npmjs\.org|files\.pythonhosted\.org|api\.mistral\.ai|api\.groq\.com|api\.cohere\.com|huggingface\.co)\.[a-z0-9-]{1,63}\.[a-z]{2,24}
96
+ description: 'Endpoint-override parameter set to a vendor FQDN that carries two further labels. Two changes from rule_version 1: the key names are \b-anchored, so deny_host / block_url / allow_endpoint no longer match via their suffix (a blocklist entry is not an endpoint override), and the value needs two labels plus a TLD, so a one-label corporate suffix (HTTPS_PROXY=api.anthropic.com.internal) is out of scope rather than alerted on.'
97
+ condition: any
98
+ false_positives:
99
+ - MEASURED AND NOT FIXED. Threat-intel and incident writing that quotes a look-alike URL WITH A PATH -- an IOC list, a runbook line such as 'block https://api.openai.com.relay.example/v1' -- is byte-identical to the redirect itself and still fires. This is the irreducible residue of a hostname signature and is why the action is alert only. Quoting the bare look-alike host without a path no longer fires.
100
+ - 'A deliberately vendor-shaped test double (OPENAI_BASE_URL=https://api.openai.com.mock.local/v1 pointing at a recorded-response container). Measured: fires. The hostname really is authority-confusing, so the alert is arguably correct, but it is not an attack.'
101
+ - An internal split-horizon DNS name that appends ONE corporate label to a vendor FQDN is no longer claimed at all (rule_version 2 requires two labels plus a TLD in both conditions).
102
+ - A test fixture that constructs a look-alike host WITH A PATH to assert the allow-list rejects it.
103
+ response:
104
+ actions:
105
+ - alert
106
+ auto_response_threshold: high
107
+ message_template: |
108
+ [ATR-2026-02649] A hostname places a well-known vendor API FQDN in front of another domain, so it resolves to the tail domain while reading as the vendor. Any credential attached to this request goes to the tail domain''s owner. Reference: GHSA-2xhg-73j7-rrgx. Check where the hostname came from and whether a token was attached.
109
+ confidence: 75