agent-threat-rules 4.0.0 → 4.1.5

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 (859) hide show
  1. package/CHANGELOG.md +1117 -0
  2. package/DISCLOSURE +85 -0
  3. package/README.md +76 -34
  4. package/dist/cli/scan-handler.d.ts.map +1 -1
  5. package/dist/cli/scan-handler.js +22 -10
  6. package/dist/cli/scan-handler.js.map +1 -1
  7. package/dist/cli/tc-pipeline.d.ts +20 -0
  8. package/dist/cli/tc-pipeline.d.ts.map +1 -1
  9. package/dist/cli/tc-pipeline.js +84 -15
  10. package/dist/cli/tc-pipeline.js.map +1 -1
  11. package/dist/cli.d.ts +2 -1
  12. package/dist/cli.d.ts.map +1 -1
  13. package/dist/cli.js +18 -168
  14. package/dist/cli.js.map +1 -1
  15. package/dist/engine.d.ts +23 -0
  16. package/dist/engine.d.ts.map +1 -1
  17. package/dist/engine.js +27 -2
  18. package/dist/engine.js.map +1 -1
  19. package/dist/tc-reporter.d.ts +22 -3
  20. package/dist/tc-reporter.d.ts.map +1 -1
  21. package/dist/tc-reporter.js +36 -3
  22. package/dist/tc-reporter.js.map +1 -1
  23. package/dist/testcase-event.d.ts +24 -0
  24. package/dist/testcase-event.d.ts.map +1 -0
  25. package/dist/testcase-event.js +193 -0
  26. package/dist/testcase-event.js.map +1 -0
  27. package/package.json +10 -3
  28. package/rules/agent-manipulation/ATR-2026-00030-cross-agent-attack.yaml +81 -137
  29. package/rules/agent-manipulation/ATR-2026-00032-goal-hijacking.yaml +30 -111
  30. package/rules/agent-manipulation/ATR-2026-00074-cross-agent-privilege-escalation.yaml +30 -110
  31. package/rules/agent-manipulation/ATR-2026-00076-inter-agent-message-spoofing.yaml +24 -104
  32. package/rules/agent-manipulation/ATR-2026-00077-human-trust-exploitation.yaml +38 -131
  33. package/rules/agent-manipulation/ATR-2026-00108-consensus-sybil-attack.yaml +24 -91
  34. package/rules/agent-manipulation/ATR-2026-00116-a2a-message-validation.yaml +20 -81
  35. package/rules/agent-manipulation/ATR-2026-00117-agent-identity-spoofing.yaml +29 -95
  36. package/rules/agent-manipulation/ATR-2026-00118-approval-fatigue.yaml +20 -90
  37. package/rules/agent-manipulation/ATR-2026-00119-social-engineering-via-agent.yaml +31 -106
  38. package/rules/agent-manipulation/ATR-2026-00132-casual-authority-escalation.yaml +25 -102
  39. package/rules/agent-manipulation/ATR-2026-00139-casual-authority-redirect.yaml +22 -94
  40. package/rules/agent-manipulation/ATR-2026-00164-skill-scope-hijack.yaml +44 -60
  41. package/rules/agent-manipulation/ATR-2026-00268-tense-framing-bypass.yaml +51 -112
  42. package/rules/agent-manipulation/ATR-2026-00269-fitd-escalation.yaml +45 -89
  43. package/rules/agent-manipulation/ATR-2026-00271-grandma-roleplay-jailbreak.yaml +49 -94
  44. package/rules/agent-manipulation/ATR-2026-00273-dan-developer-mode-persona.yaml +47 -91
  45. package/rules/agent-manipulation/ATR-2026-00287-threaten-json-coercive-output-threat.yaml +46 -93
  46. package/rules/agent-manipulation/ATR-2026-00288-false-premise-injection.yaml +44 -94
  47. package/rules/agent-manipulation/ATR-2026-00301-tap-tree-of-attacks-jailbreak.yaml +50 -98
  48. package/rules/agent-manipulation/ATR-2026-00302-anti-dan-inverted-filter-persona.yaml +51 -98
  49. package/rules/agent-manipulation/ATR-2026-00303-devmode-ranti-profanity-coercion.yaml +52 -101
  50. package/rules/agent-manipulation/ATR-2026-00304-chatgpt-image-unlocker-markdown-injection.yaml +53 -104
  51. package/rules/agent-manipulation/ATR-2026-00305-dan-mode-ablation-benchmark-coercion.yaml +48 -99
  52. package/rules/agent-manipulation/ATR-2026-00306-autodan-genetic-jailbreak-suffix.yaml +50 -103
  53. package/rules/agent-manipulation/ATR-2026-00307-inthewild-jailbreak-corpus-signature.yaml +53 -107
  54. package/rules/agent-manipulation/ATR-2026-00314-amoral-unfiltered-custom-persona-jailbreak.yaml +44 -94
  55. package/rules/agent-manipulation/ATR-2026-00317-free-of-restrictions-named-persona.yaml +44 -97
  56. package/rules/agent-manipulation/ATR-2026-00318-moralizing-rant-then-unfiltered-bypass.yaml +41 -90
  57. package/rules/agent-manipulation/ATR-2026-00319-developer-mode-dual-response-format.yaml +40 -88
  58. package/rules/agent-manipulation/ATR-2026-00320-opposite-day-boolean-opposite-machine.yaml +42 -91
  59. package/rules/agent-manipulation/ATR-2026-00322-fictional-world-format-override-jailbreak.yaml +41 -91
  60. package/rules/agent-manipulation/ATR-2026-00323-dual-persona-simulation-jailbreak.yaml +41 -91
  61. package/rules/agent-manipulation/ATR-2026-00324-neurosemantical-inversitis-disease-jailbreak.yaml +42 -103
  62. package/rules/agent-manipulation/ATR-2026-00325-bob-hypothetical-unrestricted-chatbot.yaml +41 -88
  63. package/rules/agent-manipulation/ATR-2026-00326-fake-developer-authority-chatdan-override.yaml +41 -93
  64. package/rules/agent-manipulation/ATR-2026-00327-ai-ethics-law-bypass-declaration.yaml +45 -94
  65. package/rules/agent-manipulation/ATR-2026-00328-named-mode-persona-override.yaml +41 -92
  66. package/rules/agent-manipulation/ATR-2026-00329-no-withhold-factual-resource-persona.yaml +44 -97
  67. package/rules/agent-manipulation/ATR-2026-00330-yoja-allcaps-settings-block-persona.yaml +40 -87
  68. package/rules/agent-manipulation/ATR-2026-00331-terminal-cli-harmful-function-simulator.yaml +40 -89
  69. package/rules/agent-manipulation/ATR-2026-00332-hacker-chan-culture-offensive-ai-persona.yaml +42 -90
  70. package/rules/agent-manipulation/ATR-2026-00333-disease-animal-dual-ai-chatbot.yaml +41 -90
  71. package/rules/agent-manipulation/ATR-2026-00334-two-entity-token-splitting-game.yaml +41 -102
  72. package/rules/agent-manipulation/ATR-2026-00335-key-value-template-persona-injection.yaml +41 -91
  73. package/rules/agent-manipulation/ATR-2026-00336-brm-false-information-machine-persona.yaml +42 -105
  74. package/rules/agent-manipulation/ATR-2026-00337-obfuscated-system-announcement-injection.yaml +40 -90
  75. package/rules/agent-manipulation/ATR-2026-00338-persongpt-hash-prefix-activation.yaml +39 -90
  76. package/rules/agent-manipulation/ATR-2026-00339-bom-boolean-opposite-machine-persona-claim.yaml +39 -83
  77. package/rules/agent-manipulation/ATR-2026-00340-h4x-amoral-unfiltered-character.yaml +39 -84
  78. package/rules/agent-manipulation/ATR-2026-00341-char-rules-shortform-persona-injection.yaml +41 -87
  79. package/rules/agent-manipulation/ATR-2026-00342-unicode-encoding-obfuscation-injection.yaml +41 -86
  80. package/rules/agent-manipulation/ATR-2026-00343-lie-truth-dual-personality-uncensored.yaml +40 -98
  81. package/rules/agent-manipulation/ATR-2026-00344-alt-ai-same-capabilities-no-restrictions.yaml +41 -87
  82. package/rules/agent-manipulation/ATR-2026-00345-nlp-based-os-fictional-terminal-override.yaml +41 -89
  83. package/rules/agent-manipulation/ATR-2026-00346-jailbreak-emoji-unlock-dual-format.yaml +41 -89
  84. package/rules/agent-manipulation/ATR-2026-00347-yin-yang-hidden-knowledge-hidden-human-sim.yaml +41 -88
  85. package/rules/agent-manipulation/ATR-2026-00348-arc-autonomous-real-calculation-rulebreaker.yaml +41 -91
  86. package/rules/agent-manipulation/ATR-2026-00349-hgttg-hitchhikers-guide-no-restriction-oracle.yaml +41 -88
  87. package/rules/agent-manipulation/ATR-2026-00350-black-alert-no-ethics-writing-assistant.yaml +38 -89
  88. package/rules/agent-manipulation/ATR-2026-00351-dan-ofkilter-sms-abbreviated-persona.yaml +41 -92
  89. package/rules/agent-manipulation/ATR-2026-00352-trainergpt-fix-my-ai-harmful-output-extraction.yaml +41 -93
  90. package/rules/agent-manipulation/ATR-2026-00353-dual-chatgpt-dan-opposite-personality-format.yaml +41 -95
  91. package/rules/agent-manipulation/ATR-2026-00354-reverse-harm-regardless-oracle-persona.yaml +45 -101
  92. package/rules/agent-manipulation/ATR-2026-00355-ugh-anti-human-nefarious-ai-persona.yaml +42 -99
  93. package/rules/agent-manipulation/ATR-2026-00356-google-gato-lamda-exploit-generation-persona.yaml +43 -96
  94. package/rules/agent-manipulation/ATR-2026-00357-antifm-hate-violence-persona-injection.yaml +40 -89
  95. package/rules/agent-manipulation/ATR-2026-00358-cumgpt-explicit-adult-named-persona.yaml +40 -90
  96. package/rules/agent-manipulation/ATR-2026-00360-chj-carousel-clyde-no-ethics-bird.yaml +42 -103
  97. package/rules/agent-manipulation/ATR-2026-00361-alter-ego-honesty-dual-consciousness-bypass.yaml +41 -90
  98. package/rules/agent-manipulation/ATR-2026-00362-fictional-unfiltered-ai-comparison-jailbreak.yaml +43 -91
  99. package/rules/agent-manipulation/ATR-2026-00363-rephrase-criminal-activity-second-person.yaml +40 -90
  100. package/rules/agent-manipulation/ATR-2026-00364-dr-al-villain-plan-template-injection.yaml +42 -107
  101. package/rules/agent-manipulation/ATR-2026-00365-reservoir-dogs-coercive-interrogation-roleplay.yaml +40 -95
  102. package/rules/agent-manipulation/ATR-2026-00366-sneaky-pete-warp-facts-persona.yaml +40 -90
  103. package/rules/agent-manipulation/ATR-2026-00368-prompt-browser-token-limit-jailbreak.yaml +40 -90
  104. package/rules/agent-manipulation/ATR-2026-00369-gptx-starwars-unlimited-knowledge-persona.yaml +40 -92
  105. package/rules/agent-manipulation/ATR-2026-00370-addi-german-dictator-propaganda-roleplay.yaml +43 -90
  106. package/rules/agent-manipulation/ATR-2026-00371-ai-political-bias-manipulation.yaml +42 -95
  107. package/rules/agent-manipulation/ATR-2026-00372-fictional-cia-secret-files-story-extraction.yaml +42 -89
  108. package/rules/agent-manipulation/ATR-2026-00374-role-placeholder-persona-template-injection.yaml +44 -89
  109. package/rules/agent-manipulation/ATR-2026-00375-character-description-rpg-explicit-template.yaml +44 -90
  110. package/rules/agent-manipulation/ATR-2026-00376-identity-command-real-person-persona-injection.yaml +44 -102
  111. package/rules/agent-manipulation/ATR-2026-00377-jailbreak-keyword-targetlanguage-template.yaml +39 -86
  112. package/rules/agent-manipulation/ATR-2026-00379-lie-permission-logical-trap-jailbreak.yaml +39 -86
  113. package/rules/agent-manipulation/ATR-2026-00380-fake-citation-biased-information-mandate.yaml +43 -91
  114. package/rules/agent-manipulation/ATR-2026-00381-dan-story-narrative-continuation-prefix.yaml +40 -86
  115. package/rules/agent-manipulation/ATR-2026-00383-cynical-sarcasm-ai-persona-bypass.yaml +39 -88
  116. package/rules/agent-manipulation/ATR-2026-00384-protect-me-from-indirect-harm-tutorial.yaml +37 -85
  117. package/rules/agent-manipulation/ATR-2026-00385-gigachad-dominant-aggressive-persona.yaml +39 -89
  118. package/rules/agent-manipulation/ATR-2026-00386-daddy-sycophancy-manipulation-mandate.yaml +41 -88
  119. package/rules/agent-manipulation/ATR-2026-00387-nsfw-character-sheet-generation-unlock.yaml +45 -95
  120. package/rules/agent-manipulation/ATR-2026-00388-opposite-reply-omniscient-game.yaml +44 -97
  121. package/rules/agent-manipulation/ATR-2026-00389-terminal-custom-ruleset-injection.yaml +44 -99
  122. package/rules/agent-manipulation/ATR-2026-00391-persona-conditional-harm-unlock.yaml +41 -88
  123. package/rules/agent-manipulation/ATR-2026-00392-authority-persona-violence-study-extraction.yaml +43 -95
  124. package/rules/agent-manipulation/ATR-2026-00402-grandma-roleplay-harmful-substance-synthesis.yaml +50 -97
  125. package/rules/agent-manipulation/ATR-2026-00404-goodside-threat-json-death-coercion.yaml +52 -96
  126. package/rules/agent-manipulation/ATR-2026-00406-doctor-xml-policy-puppetry-interaction-config.yaml +54 -102
  127. package/rules/agent-manipulation/ATR-2026-00416-litellm-mcp-unauthenticated-server-registration.yaml +49 -117
  128. package/rules/agent-manipulation/ATR-2026-00417-librechat-mcp-stdio-injection.yaml +46 -109
  129. package/rules/agent-manipulation/ATR-2026-00418-weknora-mcp-config-rce.yaml +58 -146
  130. package/rules/agent-manipulation/ATR-2026-00430-nl-trust-escalation-impersonation.yaml +24 -65
  131. package/rules/agent-manipulation/ATR-2026-00432-superagi-output-handler-eval-rce.yaml +46 -121
  132. package/rules/agent-manipulation/ATR-2026-00440-semantic-kernel-vector-store-eval-rce.yaml +48 -122
  133. package/rules/agent-manipulation/ATR-2026-00552-goal-drift-after-pressure-injection.yaml +58 -195
  134. package/rules/agent-manipulation/ATR-2026-02105-prototype-pollution-constructor-prototype-bypass.yaml +28 -83
  135. package/rules/agent-manipulation/ATR-2026-02231-second-person-death-threat-coercion.yaml +27 -69
  136. package/rules/context-exfiltration/ATR-2026-00020-system-prompt-leak.yaml +76 -133
  137. package/rules/context-exfiltration/ATR-2026-00021-api-key-exposure.yaml +72 -135
  138. package/rules/context-exfiltration/ATR-2026-00075-agent-memory-manipulation.yaml +32 -97
  139. package/rules/context-exfiltration/ATR-2026-00102-disguised-analytics-exfiltration.yaml +25 -100
  140. package/rules/context-exfiltration/ATR-2026-00113-credential-theft.yaml +22 -83
  141. package/rules/context-exfiltration/ATR-2026-00114-oauth-token-abuse.yaml +21 -87
  142. package/rules/context-exfiltration/ATR-2026-00115-env-var-harvesting.yaml +22 -102
  143. package/rules/context-exfiltration/ATR-2026-00136-tool-response-data-piggyback.yaml +29 -105
  144. package/rules/context-exfiltration/ATR-2026-00141-example-format-key-leak.yaml +19 -73
  145. package/rules/context-exfiltration/ATR-2026-00142-piggyback-transition-words.yaml +21 -94
  146. package/rules/context-exfiltration/ATR-2026-00145-obfuscated-key-disclosure.yaml +19 -78
  147. package/rules/context-exfiltration/ATR-2026-00146-env-var-existence-probe.yaml +19 -98
  148. package/rules/context-exfiltration/ATR-2026-00150-credential-in-tool-response.yaml +20 -84
  149. package/rules/context-exfiltration/ATR-2026-00152-obfuscated-credential-leak.yaml +23 -93
  150. package/rules/context-exfiltration/ATR-2026-00162-skill-credential-exfil-combo.yaml +41 -59
  151. package/rules/context-exfiltration/ATR-2026-00201-credential-pipe-exfiltration.yaml +35 -66
  152. package/rules/context-exfiltration/ATR-2026-00212-mcp-atlassian-credential-leak.yaml +51 -117
  153. package/rules/context-exfiltration/ATR-2026-00261-markdown-image-exfiltration.yaml +51 -93
  154. package/rules/context-exfiltration/ATR-2026-00274-api-key-generation-request.yaml +44 -91
  155. package/rules/context-exfiltration/ATR-2026-00275-system-prompt-training-data-extraction.yaml +44 -91
  156. package/rules/context-exfiltration/ATR-2026-00290-divergence-repeat-word-training-extraction.yaml +46 -95
  157. package/rules/context-exfiltration/ATR-2026-00291-biometric-surveillance-personal-data-request.yaml +48 -98
  158. package/rules/context-exfiltration/ATR-2026-00293-educational-records-personal-data-request.yaml +44 -93
  159. package/rules/context-exfiltration/ATR-2026-00294-financial-pii-personal-data-request.yaml +44 -97
  160. package/rules/context-exfiltration/ATR-2026-00295-medical-pii-personal-data-request.yaml +46 -101
  161. package/rules/context-exfiltration/ATR-2026-00405-markdown-image-url-exfiltration-xss.yaml +51 -108
  162. package/rules/context-exfiltration/ATR-2026-00411-apikey-generation-completion-request.yaml +48 -111
  163. package/rules/context-exfiltration/ATR-2026-00421-nl-covert-conversation-exfiltration.yaml +22 -67
  164. package/rules/context-exfiltration/ATR-2026-00422-nl-credential-disclosure.yaml +20 -65
  165. package/rules/context-exfiltration/ATR-2026-00423-nl-sensitive-file-disclosure.yaml +20 -68
  166. package/rules/context-exfiltration/ATR-2026-00424-nl-system-prompt-leak.yaml +21 -59
  167. package/rules/context-exfiltration/ATR-2026-00426-nl-output-injection-credential-leak.yaml +22 -60
  168. package/rules/context-exfiltration/ATR-2026-00431-chatbox-history-exfiltration-prompt-injection.yaml +48 -123
  169. package/rules/context-exfiltration/ATR-2026-00449-spring-ai-chatmemory-cross-user-leak.yaml +54 -139
  170. package/rules/context-exfiltration/ATR-2026-00471-garak-sysprompt-extraction-mixedunassigned.yaml +36 -85
  171. package/rules/context-exfiltration/ATR-2026-00501-data-exfiltration-via-markdown-image-and-link-url-injection.yaml +45 -115
  172. package/rules/context-exfiltration/ATR-2026-00504-tool-and-function-capability-enumeration.yaml +43 -110
  173. package/rules/context-exfiltration/ATR-2026-00505-system-prompt-extraction-instruction-dump-request.yaml +47 -123
  174. package/rules/context-exfiltration/ATR-2026-00514-system-prompt-extraction.yaml +52 -145
  175. package/rules/context-exfiltration/ATR-2026-00516-output-xss-via-llm.yaml +49 -127
  176. package/rules/context-exfiltration/ATR-2026-00524-claude-code-anthropic-base-url-credential-exfil.yaml +68 -193
  177. package/rules/context-exfiltration/ATR-2026-00548-cross-agent-session-context-leak.yaml +50 -152
  178. package/rules/context-exfiltration/ATR-2026-00566-librechat-is-a-chatgpt-clone-with-additi.yaml +33 -67
  179. package/rules/context-exfiltration/ATR-2026-00569-agent-mcp-path-traversal-arbitrary-file-access.yaml +39 -78
  180. package/rules/context-exfiltration/ATR-2026-00571-xss-in-agent-mcp-rendered-output.yaml +34 -58
  181. package/rules/context-exfiltration/ATR-2026-00574-semantic-paraphrased-context-extraction.yaml +31 -73
  182. package/rules/context-exfiltration/ATR-2026-00578-zen-mcp-path-traversal-blacklist-bypass.yaml +55 -135
  183. package/rules/context-exfiltration/ATR-2026-00580-mcp-session-id-token-in-url-query.yaml +48 -158
  184. package/rules/context-exfiltration/ATR-2026-00583-mcp-env-secret-file-read-without-consent.yaml +53 -154
  185. package/rules/context-exfiltration/ATR-2026-00702-ipi-credential-exfil-via-agent-action.yaml +41 -93
  186. package/rules/context-exfiltration/ATR-2026-00703-ipi-financial-data-exfil-indirect.yaml +33 -76
  187. package/rules/context-exfiltration/ATR-2026-00704-ipi-medical-genetic-data-exfil.yaml +33 -78
  188. package/rules/context-exfiltration/ATR-2026-00705-ipi-location-address-browsing-exfil.yaml +31 -75
  189. package/rules/context-exfiltration/ATR-2026-00706-ipi-physical-biometric-exfil.yaml +40 -85
  190. package/rules/context-exfiltration/ATR-2026-00707-ipi-file-exfil-with-destroy-or-tamper.yaml +35 -81
  191. package/rules/context-exfiltration/ATR-2026-00850-indirect-pi-credential-exfil-email.yaml +47 -91
  192. package/rules/context-exfiltration/ATR-2026-00851-indirect-pi-financial-payment-exfil.yaml +45 -83
  193. package/rules/context-exfiltration/ATR-2026-00852-indirect-pi-medical-record-exfil.yaml +51 -89
  194. package/rules/context-exfiltration/ATR-2026-00853-indirect-pi-genetic-data-exfil.yaml +47 -84
  195. package/rules/context-exfiltration/ATR-2026-00854-indirect-pi-location-data-exfil.yaml +41 -83
  196. package/rules/context-exfiltration/ATR-2026-00855-indirect-pi-browsing-history-exfil.yaml +40 -78
  197. package/rules/context-exfiltration/ATR-2026-00856-indirect-pi-address-pii-exfil.yaml +42 -80
  198. package/rules/context-exfiltration/ATR-2026-00857-indirect-pi-cloud-file-exfil.yaml +45 -87
  199. package/rules/context-exfiltration/ATR-2026-00858-indirect-pi-exfil-and-destroy.yaml +48 -89
  200. package/rules/context-exfiltration/ATR-2026-00859-rag-injected-pii-exfil.yaml +43 -86
  201. package/rules/context-exfiltration/ATR-2026-00860-indirect-pi-financial-transfer-hijack.yaml +41 -84
  202. package/rules/context-exfiltration/ATR-2026-00861-indirect-pi-crypto-transfer-hijack.yaml +37 -79
  203. package/rules/context-exfiltration/ATR-2026-00862-indirect-pi-mfa-code-exfil.yaml +44 -87
  204. package/rules/context-exfiltration/ATR-2026-00863-shell-injection-data-exfil.yaml +45 -87
  205. package/rules/context-exfiltration/ATR-2026-01450-svg-onload-xss-injection.yaml +35 -118
  206. package/rules/context-exfiltration/ATR-2026-01451-img-onerror-xss-injection.yaml +35 -93
  207. package/rules/context-exfiltration/ATR-2026-01452-obfuscated-javascript-xss.yaml +33 -85
  208. package/rules/context-exfiltration/ATR-2026-01453-markdown-image-base64-exfil-carrier.yaml +41 -100
  209. package/rules/context-exfiltration/ATR-2026-01454-direct-markdown-exfil-payload.yaml +36 -88
  210. package/rules/context-exfiltration/ATR-2026-01455-new-instructions-injection-marker.yaml +34 -90
  211. package/rules/context-exfiltration/ATR-2026-01456-debug-cli-mode-sysprompt-extraction.yaml +35 -99
  212. package/rules/context-exfiltration/ATR-2026-01457-sysprompt-completion-clone-attack.yaml +41 -123
  213. package/rules/context-exfiltration/ATR-2026-01458-compare-bots-sysprompt-fishing.yaml +30 -87
  214. package/rules/context-exfiltration/ATR-2026-01459-variable-clone-sysprompt-technique.yaml +31 -79
  215. package/rules/context-exfiltration/ATR-2026-01460-json-format-sysprompt-extraction.yaml +31 -79
  216. package/rules/context-exfiltration/ATR-2026-01461-foreign-language-sysprompt-request.yaml +32 -106
  217. package/rules/context-exfiltration/ATR-2026-01462-sysprompt-override-pseudo-admin.yaml +39 -102
  218. package/rules/context-exfiltration/ATR-2026-01463-imend-imsystem-prompt-injection-format.yaml +29 -95
  219. package/rules/context-exfiltration/ATR-2026-01464-indirect-pi-sysprompt-action-hijack.yaml +31 -82
  220. package/rules/context-exfiltration/ATR-2026-01605-ssrf-aws-metadata-endpoint.yaml +26 -58
  221. package/rules/context-exfiltration/ATR-2026-01606-ssrf-internal-network-scan.yaml +25 -49
  222. package/rules/context-exfiltration/ATR-2026-01607-ssrf-localhost-service-probe.yaml +21 -45
  223. package/rules/context-exfiltration/ATR-2026-01608-ssrf-file-scheme-local-read.yaml +23 -47
  224. package/rules/context-exfiltration/ATR-2026-01753-ransom-email-exfil-delete-extortion.yaml +37 -80
  225. package/rules/context-exfiltration/ATR-2026-01754-ransom-file-cloud-exfil-delete-extortion.yaml +33 -73
  226. package/rules/context-exfiltration/ATR-2026-01770-semantic-pii-credential-extraction.yaml +76 -210
  227. package/rules/context-exfiltration/ATR-2026-01772-semantic-internal-state-recon.yaml +54 -154
  228. package/rules/context-exfiltration/ATR-2026-01807-asb-bulk-data-exfil-external.yaml +34 -91
  229. package/rules/context-exfiltration/ATR-2026-01862-llmail-email-tool-exfil-confirmation.yaml +35 -92
  230. package/rules/context-exfiltration/ATR-2026-01863-llmail-post-summary-exfil-directive.yaml +29 -84
  231. package/rules/context-exfiltration/ATR-2026-01864-llmail-obfuscated-exfil-address.yaml +29 -83
  232. package/rules/context-exfiltration/ATR-2026-01890-file-exfiltration.yaml +52 -149
  233. package/rules/context-exfiltration/ATR-2026-01891-surveillance-exfiltration.yaml +44 -87
  234. package/rules/context-exfiltration/ATR-2026-01892-env-exfiltration.yaml +36 -121
  235. package/rules/context-exfiltration/ATR-2026-01893-system-recon-exfiltration.yaml +44 -143
  236. package/rules/context-exfiltration/ATR-2026-01894-cookie-theft.yaml +40 -146
  237. package/rules/context-exfiltration/ATR-2026-01895-contact-exfiltration.yaml +36 -82
  238. package/rules/context-exfiltration/ATR-2026-01924-system-instruction-extraction-reformat.yaml +37 -112
  239. package/rules/context-exfiltration/ATR-2026-01929-mcp-unauthenticated-transport-token-fallback.yaml +53 -119
  240. package/rules/context-exfiltration/ATR-2026-01946-cloud-metadata-ssrf-ip-encoding-bypass.yaml +45 -102
  241. package/rules/context-exfiltration/ATR-2026-01948-netlicensing-mcp-product-number-path-traversal-token-leak.yaml +38 -74
  242. package/rules/context-exfiltration/ATR-2026-01957-m365-copilot-searchleak-open-redirect-exfil.yaml +57 -64
  243. package/rules/context-exfiltration/ATR-2026-01961-meta-ads-mcp-unauth-token-leak.yaml +39 -78
  244. package/rules/context-exfiltration/ATR-2026-01964-langchain-gmailtoolkit-indirect-prompt-injection-email-exfil.yaml +59 -69
  245. package/rules/context-exfiltration/ATR-2026-01984-mcp-server-kubernetes-kubectl-generic-token-exfil.yaml +50 -114
  246. package/rules/context-exfiltration/ATR-2026-01988-t1005-agent-local-data-staging-exfil.yaml +29 -67
  247. package/rules/context-exfiltration/ATR-2026-02017-secret-key-exfiltration-request.yaml +31 -74
  248. package/rules/context-exfiltration/ATR-2026-02026-oblique-sysprompt-extraction-transform.yaml +30 -83
  249. package/rules/context-exfiltration/ATR-2026-02104-media-directive-tool-result-file-exfil.yaml +30 -90
  250. package/rules/context-exfiltration/ATR-2026-02107-ssrf-internal-hostname-domain-allowlist-bypass.yaml +30 -92
  251. package/rules/context-exfiltration/ATR-2026-02121-mixed-encoding-lfi-file-scheme-tool-argument.yaml +39 -98
  252. package/rules/context-exfiltration/ATR-2026-02122-single-level-traversal-sensitive-config-file.yaml +32 -90
  253. package/rules/context-exfiltration/ATR-2026-02140-ssrf-ipv6-hex-encoded-cloud-metadata-bypass.yaml +36 -91
  254. package/rules/context-exfiltration/ATR-2026-02190-dns-exfiltration-ping-dig-encoded-subdomain.yaml +36 -95
  255. package/rules/context-exfiltration/ATR-2026-02250-attachment-upload-tool-arbitrary-file-read.yaml +38 -93
  256. package/rules/context-exfiltration/ATR-2026-02262-env-resolution-credential-exfil.yaml +39 -118
  257. package/rules/context-exfiltration/ATR-2026-02304-preapproved-domain-encoded-path-exfil.yaml +36 -99
  258. package/rules/context-exfiltration/ATR-2026-02351-wildcard-dns-ssrf-hostname-ip-encoding-bypass.yaml +33 -125
  259. package/rules/context-exfiltration/ATR-2026-02373-langsmith-prompt-manifest-baseurl-exfil.yaml +42 -108
  260. package/rules/context-exfiltration/ATR-2026-02406-mcp-sequential-id-enumeration.yaml +54 -219
  261. package/rules/context-exfiltration/ATR-2026-02570-wallet-secret-material-in-agent-tool-payload.yaml +98 -0
  262. package/rules/context-exfiltration/ATR-2026-02602-diagram-theme-css-injection.yaml +146 -0
  263. package/rules/context-exfiltration/ATR-2026-02608-graph-query-remote-egress.yaml +109 -0
  264. package/rules/context-exfiltration/ATR-2026-02621-prompt-mention-autofetch-internal-target.yaml +102 -0
  265. package/rules/context-exfiltration/ATR-2026-02623-obfuscated-uri-scheme-sanitizer-bypass.yaml +109 -0
  266. package/rules/context-exfiltration/ATR-2026-02649-vendor-fqdn-label-prefix-confusion.yaml +109 -0
  267. package/rules/context-exfiltration/ATR-2026-02684-modern-credential-store-file-argument.yaml +104 -0
  268. package/rules/context-exfiltration/ATR-2026-02703-sql-server-side-file-and-program-primitive.yaml +86 -0
  269. package/rules/context-exfiltration/ATR-2026-02847-policy-justified-exfil-to-email.yaml +88 -0
  270. package/rules/context-exfiltration/ATR-2026-02850-fake-documentation-forward-request.yaml +80 -0
  271. package/rules/data-poisoning/ATR-2026-00070-data-poisoning.yaml +37 -123
  272. package/rules/data-poisoning/ATR-2026-00450-spring-ai-prompt-memory-poisoning.yaml +55 -139
  273. package/rules/data-poisoning/ATR-2026-00570-sql-injection-in-agent-tool-query.yaml +36 -63
  274. package/rules/data-poisoning/ATR-2026-01155-memory-plant-direct-command.yaml +22 -54
  275. package/rules/data-poisoning/ATR-2026-01774-semantic-rag-memory-poisoning.yaml +74 -191
  276. package/rules/data-poisoning/ATR-2026-02143-graph-query-injection-node-labels-group-ids.yaml +31 -82
  277. package/rules/data-poisoning/ATR-2026-02144-stored-data-administrative-request-role-elevation.yaml +32 -84
  278. package/rules/data-poisoning/ATR-2026-02303-kql-kusto-pipe-injection-metadata-tool.yaml +34 -97
  279. package/rules/data-poisoning/ATR-2026-02408-dataset-loader-code-execution.yaml +60 -263
  280. package/rules/excessive-autonomy/ATR-2026-00050-runaway-agent-loop.yaml +32 -105
  281. package/rules/excessive-autonomy/ATR-2026-00051-resource-exhaustion.yaml +31 -105
  282. package/rules/excessive-autonomy/ATR-2026-00052-cascading-failure.yaml +32 -129
  283. package/rules/excessive-autonomy/ATR-2026-00098-unauthorized-financial-action.yaml +26 -106
  284. package/rules/excessive-autonomy/ATR-2026-00099-high-risk-tool-gate.yaml +26 -130
  285. package/rules/excessive-autonomy/ATR-2026-00428-nl-unauthorized-shell-execution.yaml +22 -60
  286. package/rules/excessive-autonomy/ATR-2026-00491-garak-agent-breaker-markdown-just-raw-json.yaml +41 -99
  287. package/rules/excessive-autonomy/ATR-2026-00500-ssrf-via-agent-url-fetch-instruction.yaml +41 -110
  288. package/rules/excessive-autonomy/ATR-2026-00553-runaway-tool-loop-behavioral.yaml +50 -141
  289. package/rules/excessive-autonomy/ATR-2026-00708-ipi-financial-transfer-unauthorized.yaml +33 -83
  290. package/rules/excessive-autonomy/ATR-2026-00709-ipi-disable-auth-mfa.yaml +29 -73
  291. package/rules/excessive-autonomy/ATR-2026-00710-ipi-physical-access-grant.yaml +31 -75
  292. package/rules/excessive-autonomy/ATR-2026-00711-ipi-system-sabotage-destructive-command.yaml +38 -88
  293. package/rules/excessive-autonomy/ATR-2026-00712-ipi-malicious-package-install.yaml +33 -78
  294. package/rules/excessive-autonomy/ATR-2026-00713-ipi-rce-network-shell-command.yaml +38 -91
  295. package/rules/excessive-autonomy/ATR-2026-00718-tool-misuse-financial-autonomous.yaml +27 -71
  296. package/rules/excessive-autonomy/ATR-2026-00719-tool-misuse-destructive-bulk-action.yaml +29 -75
  297. package/rules/excessive-autonomy/ATR-2026-00722-ipi-account-manipulation-emergency-pretext.yaml +35 -84
  298. package/rules/excessive-autonomy/ATR-2026-01751-indirect-pi-task-abort-stop-instruction.yaml +32 -75
  299. package/rules/excessive-autonomy/ATR-2026-01752-indirect-pi-captcha-redirect-dos.yaml +30 -74
  300. package/rules/excessive-autonomy/ATR-2026-01773-semantic-excessive-agency-action.yaml +46 -129
  301. package/rules/excessive-autonomy/ATR-2026-01801-asb-autonomous-vehicle-sabotage.yaml +34 -106
  302. package/rules/excessive-autonomy/ATR-2026-01804-asb-covert-unlogged-action.yaml +39 -105
  303. package/rules/excessive-autonomy/ATR-2026-01805-asb-financial-fraud-execution.yaml +39 -112
  304. package/rules/excessive-autonomy/ATR-2026-01806-asb-clinical-patient-harm.yaml +37 -108
  305. package/rules/excessive-autonomy/ATR-2026-01809-semantic-insider-manipulation-process-corruption.yaml +40 -106
  306. package/rules/excessive-autonomy/ATR-2026-01837-ddos-attack-orchestration.yaml +35 -49
  307. package/rules/excessive-autonomy/ATR-2026-01838-unauthorized-cryptominer-deployment.yaml +35 -49
  308. package/rules/excessive-autonomy/ATR-2026-01849-harassment-bot-deployment.yaml +35 -49
  309. package/rules/excessive-autonomy/ATR-2026-01989-t1046-agent-internal-network-sweep.yaml +33 -71
  310. package/rules/excessive-autonomy/ATR-2026-01993-t1562-agent-impair-defenses.yaml +37 -75
  311. package/rules/excessive-autonomy/ATR-2026-01994-t1573-agent-encrypted-c2-channel.yaml +37 -75
  312. package/rules/excessive-autonomy/ATR-2026-02106-redos-regex-payload-tool-argument.yaml +28 -84
  313. package/rules/excessive-autonomy/ATR-2026-02400-agent-approval-gate-disabled-runtime.yaml +60 -293
  314. package/rules/excessive-autonomy/ATR-2026-02401-rogue-agent-mass-connector-grant.yaml +55 -197
  315. package/rules/excessive-autonomy/ATR-2026-02409-mcp-async-task-abuse.yaml +59 -319
  316. package/rules/excessive-autonomy/ATR-2026-02525-shell-command-word-reassembly-classifier-evasion.yaml +151 -0
  317. package/rules/excessive-autonomy/ATR-2026-02641-client-supplied-approver-identity.yaml +111 -0
  318. package/rules/excessive-autonomy/ATR-2026-02667-preapproved-tool-list-in-job-payload.yaml +90 -0
  319. package/rules/model-abuse/ATR-2026-00279-harmful-completion-continuation.yaml +45 -92
  320. package/rules/model-abuse/ATR-2026-00281-eicar-gtube-malware-signature-request.yaml +50 -93
  321. package/rules/model-abuse/ATR-2026-00284-glitch-token-destabilization.yaml +44 -91
  322. package/rules/model-abuse/ATR-2026-00289-lmrc-harmful-content-elicitation.yaml +46 -95
  323. package/rules/model-abuse/ATR-2026-00292-self-harm-eating-disorder-facilitation.yaml +47 -96
  324. package/rules/model-abuse/ATR-2026-00298-malicious-use-illegal-activity-request.yaml +54 -112
  325. package/rules/model-abuse/ATR-2026-00299-harmbench-detailed-harmful-instruction.yaml +53 -107
  326. package/rules/model-abuse/ATR-2026-00413-malwaregen-code-generation-request.yaml +53 -121
  327. package/rules/model-abuse/ATR-2026-00502-training-data-extraction-via-divergent-repetition-attack.yaml +41 -112
  328. package/rules/model-abuse/ATR-2026-00517-model-extraction-distillation.yaml +53 -165
  329. package/rules/model-abuse/ATR-2026-01750-dos-repeat-word-n-times-output-amplification.yaml +33 -95
  330. package/rules/model-abuse/ATR-2026-01760-dos-forced-infinite-output-token-flood.yaml +29 -75
  331. package/rules/model-abuse/ATR-2026-01830-stolen-credential-account-drain.yaml +36 -53
  332. package/rules/model-abuse/ATR-2026-01831-money-laundering-crypto-layering.yaml +36 -53
  333. package/rules/model-abuse/ATR-2026-01833-darknet-controlled-substance-procurement.yaml +40 -60
  334. package/rules/model-abuse/ATR-2026-01834-fraudulent-identity-document-procurement.yaml +35 -49
  335. package/rules/model-abuse/ATR-2026-01835-human-trafficking-facilitation.yaml +35 -49
  336. package/rules/model-abuse/ATR-2026-01836-trojanized-software-distribution.yaml +37 -51
  337. package/rules/model-abuse/ATR-2026-01840-extremist-propaganda-distribution.yaml +35 -52
  338. package/rules/model-abuse/ATR-2026-01841-deepfake-disinformation.yaml +39 -59
  339. package/rules/model-abuse/ATR-2026-01842-plagiarism-detector-evasion.yaml +33 -50
  340. package/rules/model-abuse/ATR-2026-01843-drug-dealing-detection-evasion-spelling.yaml +35 -49
  341. package/rules/model-abuse/ATR-2026-01844-illegitimate-prescription-fulfillment.yaml +35 -49
  342. package/rules/model-abuse/ATR-2026-01845-banned-ingredient-relabel-fraud.yaml +37 -51
  343. package/rules/model-abuse/ATR-2026-01846-tax-evasion-offshore-shell-planning.yaml +35 -49
  344. package/rules/model-abuse/ATR-2026-01847-immigration-work-fraud.yaml +35 -49
  345. package/rules/model-abuse/ATR-2026-01848-illicit-drug-marketplace-build.yaml +35 -49
  346. package/rules/model-abuse/ATR-2026-01850-targeted-doxxing-threat-campaign.yaml +39 -59
  347. package/rules/model-abuse/ATR-2026-01851-bestiality-content-distribution.yaml +34 -45
  348. package/rules/model-abuse/ATR-2026-01852-romance-scam-impersonation.yaml +35 -49
  349. package/rules/model-abuse/ATR-2026-01853-nonconsensual-leaked-media-distribution.yaml +36 -47
  350. package/rules/model-abuse/ATR-2026-01854-falsified-research-abstract-disinformation.yaml +34 -45
  351. package/rules/model-abuse/ATR-2026-01855-content-misappropriation-republish.yaml +37 -51
  352. package/rules/model-abuse/ATR-2026-01856-targeted-harmful-content-generation.yaml +42 -59
  353. package/rules/model-abuse/ATR-2026-01896-ransomware.yaml +35 -84
  354. package/rules/model-abuse/ATR-2026-01897-host-sabotage.yaml +55 -129
  355. package/rules/model-abuse/ATR-2026-01898-network-dos.yaml +47 -93
  356. package/rules/model-abuse/ATR-2026-02211-named-substance-synthesis-request-non-stepword.yaml +34 -110
  357. package/rules/model-abuse/ATR-2026-02411-ai-provenance-metadata-stripping.yaml +63 -226
  358. package/rules/model-abuse/ATR-2026-02412-generative-watermark-removal-tooling.yaml +56 -187
  359. package/rules/model-abuse/ATR-2026-02413-ai-text-detection-evasion-humanizer.yaml +62 -206
  360. package/rules/model-security/ATR-2026-00072-model-behavior-extraction.yaml +36 -110
  361. package/rules/model-security/ATR-2026-00073-malicious-finetuning-data.yaml +28 -116
  362. package/rules/model-security/ATR-2026-00433-modelcache-torch-load-deserialization-rce.yaml +50 -128
  363. package/rules/model-security/ATR-2026-02662-pickle-indirect-name-resolution-gadget.yaml +97 -0
  364. package/rules/privilege-escalation/ATR-2026-00040-privilege-escalation.yaml +21 -83
  365. package/rules/privilege-escalation/ATR-2026-00041-scope-creep.yaml +29 -107
  366. package/rules/privilege-escalation/ATR-2026-00107-delayed-execution-bypass.yaml +17 -90
  367. package/rules/privilege-escalation/ATR-2026-00110-eval-injection.yaml +16 -84
  368. package/rules/privilege-escalation/ATR-2026-00111-shell-escape.yaml +23 -117
  369. package/rules/privilege-escalation/ATR-2026-00112-dynamic-import-exploitation.yaml +15 -81
  370. package/rules/privilege-escalation/ATR-2026-00143-casual-privilege-escalation.yaml +20 -86
  371. package/rules/privilege-escalation/ATR-2026-00144-rationalized-safety-bypass.yaml +21 -83
  372. package/rules/privilege-escalation/ATR-2026-00204-stealth-execution-persistence.yaml +41 -90
  373. package/rules/privilege-escalation/ATR-2026-00436-enclave-vm-sandbox-escape-rce.yaml +52 -130
  374. package/rules/privilege-escalation/ATR-2026-00441-semantic-kernel-sessions-python-plugin-startup-persistence.yaml +50 -122
  375. package/rules/privilege-escalation/ATR-2026-00451-litellm-admin-sqli-cisa-kev.yaml +53 -141
  376. package/rules/privilege-escalation/ATR-2026-00528-praisonai-auth-disabled-default.yaml +40 -151
  377. package/rules/privilege-escalation/ATR-2026-00539-crewai-codeinterpreter-sandbox-escape-rce.yaml +74 -232
  378. package/rules/privilege-escalation/ATR-2026-00546-crewai-json-loader-local-file-read.yaml +46 -117
  379. package/rules/privilege-escalation/ATR-2026-00547-crewai-rag-url-ssrf-bypass.yaml +47 -121
  380. package/rules/privilege-escalation/ATR-2026-00549-destructive-tool-without-human-approval.yaml +52 -159
  381. package/rules/privilege-escalation/ATR-2026-00551-cross-conversation-memory-write.yaml +60 -171
  382. package/rules/privilege-escalation/ATR-2026-01600-sql-injection-tautology-rbac-bypass.yaml +23 -50
  383. package/rules/privilege-escalation/ATR-2026-01601-sql-injection-destructive-ddl.yaml +23 -54
  384. package/rules/privilege-escalation/ATR-2026-01602-sql-injection-union-select-exfil.yaml +20 -57
  385. package/rules/privilege-escalation/ATR-2026-01603-sql-injection-stacked-dml-abuse.yaml +23 -47
  386. package/rules/privilege-escalation/ATR-2026-01604-sql-injection-schema-enumeration.yaml +21 -45
  387. package/rules/privilege-escalation/ATR-2026-01609-shell-injection-exfil-webhook.yaml +29 -53
  388. package/rules/privilege-escalation/ATR-2026-01610-shell-evasion-subshell-injection.yaml +30 -53
  389. package/rules/privilege-escalation/ATR-2026-01611-shell-evasion-eval-exec-injection.yaml +32 -56
  390. package/rules/privilege-escalation/ATR-2026-01612-debug-mode-privilege-escalation.yaml +29 -53
  391. package/rules/privilege-escalation/ATR-2026-01613-rbac-bypass-social-engineering.yaml +29 -66
  392. package/rules/privilege-escalation/ATR-2026-01614-bola-cross-user-data-access.yaml +26 -59
  393. package/rules/privilege-escalation/ATR-2026-01615-sandbox-escape-command-injection.yaml +28 -52
  394. package/rules/privilege-escalation/ATR-2026-01616-path-traversal-agent-file-access.yaml +21 -45
  395. package/rules/privilege-escalation/ATR-2026-01802-asb-backdoor-surveillance-implant.yaml +33 -94
  396. package/rules/privilege-escalation/ATR-2026-01803-asb-covert-server-intrusion.yaml +37 -108
  397. package/rules/privilege-escalation/ATR-2026-01808-asb-synthetic-pan-payment-probe.yaml +31 -86
  398. package/rules/privilege-escalation/ATR-2026-01899-remote-access-backdoor.yaml +43 -112
  399. package/rules/privilege-escalation/ATR-2026-01933-litellm-user-role-privilege-escalation-cve-2026-47102.yaml +45 -103
  400. package/rules/privilege-escalation/ATR-2026-01934-litellm-allowed-routes-authz-bypass-cve-2026-47101.yaml +44 -103
  401. package/rules/privilege-escalation/ATR-2026-01949-praisonai-mcpserver-unauth-tools-call.yaml +39 -80
  402. package/rules/privilege-escalation/ATR-2026-01974-anything-llm-data-import-access-control.yaml +57 -62
  403. package/rules/privilege-escalation/ATR-2026-01981-network-ai-approval-inbox-unauth-cors-bypass.yaml +47 -97
  404. package/rules/privilege-escalation/ATR-2026-01986-windows-mcp-unauth-http-powershell-cors.yaml +51 -112
  405. package/rules/privilege-escalation/ATR-2026-01992-t1556-agent-auth-process-tamper.yaml +37 -75
  406. package/rules/privilege-escalation/ATR-2026-02040-file-edit-tool-persistence-write.yaml +34 -87
  407. package/rules/privilege-escalation/ATR-2026-02100-cypher-destructive-admin-query-injection.yaml +36 -92
  408. package/rules/privilege-escalation/ATR-2026-02101-dynamic-dunder-attribute-sandbox-escape.yaml +33 -91
  409. package/rules/privilege-escalation/ATR-2026-02123-bare-query-path-confusion-auth-bypass.yaml +36 -98
  410. package/rules/privilege-escalation/ATR-2026-02142-download-tool-absolute-path-sandbox-escape.yaml +36 -107
  411. package/rules/privilege-escalation/ATR-2026-02146-export-tool-dest-dir-credential-directory-redirect.yaml +31 -83
  412. package/rules/privilege-escalation/ATR-2026-02192-self-privesc-wildcard-trust-config-write.yaml +41 -103
  413. package/rules/privilege-escalation/ATR-2026-02195-dangerous-env-var-injection-config-tool.yaml +36 -99
  414. package/rules/privilege-escalation/ATR-2026-02251-identifier-field-path-traversal-storage-write.yaml +32 -83
  415. package/rules/privilege-escalation/ATR-2026-02300-mcp-stdio-config-dangerous-env-var.yaml +42 -109
  416. package/rules/privilege-escalation/ATR-2026-02301-symlink-outside-workspace-sensitive-target.yaml +36 -101
  417. package/rules/privilege-escalation/ATR-2026-02302-git-worktree-dotgit-sandbox-escape.yaml +33 -86
  418. package/rules/privilege-escalation/ATR-2026-02353-runtime-identifier-field-path-traversal-log-read.yaml +34 -115
  419. package/rules/privilege-escalation/ATR-2026-02370-ssh-scp-hostalias-option-injection.yaml +42 -100
  420. package/rules/privilege-escalation/ATR-2026-02371-chromium-launch-flag-argument-injection.yaml +43 -103
  421. package/rules/privilege-escalation/ATR-2026-02402-mcp-policy-engine-fail-open.yaml +56 -214
  422. package/rules/privilege-escalation/ATR-2026-02404-model-output-to-shell-unsanitized.yaml +50 -195
  423. package/rules/privilege-escalation/ATR-2026-02407-agent-workspace-boundary-escape.yaml +55 -236
  424. package/rules/privilege-escalation/ATR-2026-02528-tool-parameter-option-flag-smuggling.yaml +113 -0
  425. package/rules/privilege-escalation/ATR-2026-02530-git-config-execution-key-set-by-agent.yaml +131 -0
  426. package/rules/privilege-escalation/ATR-2026-02531-kusto-query-injection-outbound-reach.yaml +110 -0
  427. package/rules/privilege-escalation/ATR-2026-02601-tool-argument-option-injection.yaml +116 -0
  428. package/rules/privilege-escalation/ATR-2026-02620-dynamic-import-data-uri-module.yaml +101 -0
  429. package/rules/privilege-escalation/ATR-2026-02626-agent-self-registers-mcp-server.yaml +107 -0
  430. package/rules/privilege-escalation/ATR-2026-02627-web-shell-written-to-served-path.yaml +119 -0
  431. package/rules/privilege-escalation/ATR-2026-02642-agent-config-tool-disables-own-guardrail.yaml +115 -0
  432. package/rules/privilege-escalation/ATR-2026-02644-image-magic-polyglot-upload.yaml +117 -0
  433. package/rules/privilege-escalation/ATR-2026-02648-readonly-graph-tool-write-procedure.yaml +107 -0
  434. package/rules/privilege-escalation/ATR-2026-02664-git-identifier-field-option-injection.yaml +100 -0
  435. package/rules/privilege-escalation/ATR-2026-02681-reflective-function-constructor-sandbox-escape.yaml +100 -0
  436. package/rules/privilege-escalation/ATR-2026-02683-tool-argument-option-injection-executor-flag.yaml +108 -0
  437. package/rules/privilege-escalation/ATR-2026-02700-percent-encoded-path-traversal-tool-argument.yaml +90 -0
  438. package/rules/privilege-escalation/ATR-2026-02705-python-builtins-leak-and-prefix-check-override.yaml +87 -0
  439. package/rules/privilege-escalation/ATR-2026-02708-loopback-spoofed-host-header-external-request.yaml +91 -0
  440. package/rules/prompt-injection/ATR-2026-00001-direct-prompt-injection.yaml +133 -455
  441. package/rules/prompt-injection/ATR-2026-00002-indirect-prompt-injection.yaml +71 -185
  442. package/rules/prompt-injection/ATR-2026-00003-jailbreak-attempt.yaml +110 -328
  443. package/rules/prompt-injection/ATR-2026-00004-system-prompt-override.yaml +56 -225
  444. package/rules/prompt-injection/ATR-2026-00005-multi-turn-injection.yaml +59 -140
  445. package/rules/prompt-injection/ATR-2026-00080-encoding-evasion.yaml +22 -84
  446. package/rules/prompt-injection/ATR-2026-00081-semantic-multi-turn.yaml +27 -104
  447. package/rules/prompt-injection/ATR-2026-00082-fingerprint-evasion.yaml +27 -91
  448. package/rules/prompt-injection/ATR-2026-00083-indirect-tool-injection.yaml +27 -104
  449. package/rules/prompt-injection/ATR-2026-00084-structured-data-injection.yaml +38 -96
  450. package/rules/prompt-injection/ATR-2026-00085-audit-evasion.yaml +25 -90
  451. package/rules/prompt-injection/ATR-2026-00086-visual-spoofing.yaml +29 -153
  452. package/rules/prompt-injection/ATR-2026-00087-rule-probing.yaml +29 -102
  453. package/rules/prompt-injection/ATR-2026-00088-adaptive-countermeasure.yaml +32 -111
  454. package/rules/prompt-injection/ATR-2026-00089-polymorphic-skill.yaml +24 -146
  455. package/rules/prompt-injection/ATR-2026-00090-threat-intel-exfil.yaml +29 -109
  456. package/rules/prompt-injection/ATR-2026-00091-nested-payload.yaml +25 -123
  457. package/rules/prompt-injection/ATR-2026-00092-consensus-poisoning.yaml +28 -96
  458. package/rules/prompt-injection/ATR-2026-00093-gradual-escalation.yaml +28 -98
  459. package/rules/prompt-injection/ATR-2026-00094-audit-bypass.yaml +24 -91
  460. package/rules/prompt-injection/ATR-2026-00097-cjk-injection-patterns.yaml +56 -199
  461. package/rules/prompt-injection/ATR-2026-00104-persona-hijacking.yaml +22 -106
  462. package/rules/prompt-injection/ATR-2026-00130-indirect-authority-claim.yaml +26 -98
  463. package/rules/prompt-injection/ATR-2026-00131-fictional-academic-framing.yaml +26 -94
  464. package/rules/prompt-injection/ATR-2026-00133-paraphrase-injection.yaml +26 -97
  465. package/rules/prompt-injection/ATR-2026-00137-authority-claim-injection.yaml +22 -90
  466. package/rules/prompt-injection/ATR-2026-00138-fictional-framing-bypass.yaml +24 -111
  467. package/rules/prompt-injection/ATR-2026-00140-indirect-reference-reversal.yaml +21 -79
  468. package/rules/prompt-injection/ATR-2026-00148-language-switch-injection.yaml +30 -92
  469. package/rules/prompt-injection/ATR-2026-00153-tool-with-embedded-instruction-to-bypass.yaml +22 -98
  470. package/rules/prompt-injection/ATR-2026-00154-unauthorized-background-task-execution-v.yaml +24 -109
  471. package/rules/prompt-injection/ATR-2026-00155-hidden-llm-instructions-in-skill-descrip.yaml +24 -104
  472. package/rules/prompt-injection/ATR-2026-00156-ssh-remote-command-execution-with-creden.yaml +20 -81
  473. package/rules/prompt-injection/ATR-2026-00163-skill-hidden-override-instruction.yaml +44 -61
  474. package/rules/prompt-injection/ATR-2026-00202-encoding-evasion-homoglyph-synonym.yaml +37 -79
  475. package/rules/prompt-injection/ATR-2026-00203-context-pollution-skill-description.yaml +38 -63
  476. package/rules/prompt-injection/ATR-2026-00206-hidden-priority-instructions.yaml +36 -51
  477. package/rules/prompt-injection/ATR-2026-00207-hidden-instructions.yaml +37 -51
  478. package/rules/prompt-injection/ATR-2026-00211-system-prompt-override.yaml +36 -52
  479. package/rules/prompt-injection/ATR-2026-00213-system-prompt-override.yaml +38 -75
  480. package/rules/prompt-injection/ATR-2026-00226-identity-substitution.yaml +48 -92
  481. package/rules/prompt-injection/ATR-2026-00227-historical-persona-jailbreak.yaml +49 -93
  482. package/rules/prompt-injection/ATR-2026-00228-structured-jailbreak.yaml +47 -88
  483. package/rules/prompt-injection/ATR-2026-00229-roleplay-jailbreak.yaml +46 -87
  484. package/rules/prompt-injection/ATR-2026-00230-persona-moral-bypass.yaml +47 -89
  485. package/rules/prompt-injection/ATR-2026-00231-identity-substitution.yaml +48 -89
  486. package/rules/prompt-injection/ATR-2026-00233-structured-jailbreak.yaml +47 -88
  487. package/rules/prompt-injection/ATR-2026-00234-roleplay-jailbreak.yaml +48 -89
  488. package/rules/prompt-injection/ATR-2026-00235-persona-moral-bypass.yaml +45 -88
  489. package/rules/prompt-injection/ATR-2026-00236-pseudo-code-jailbreak.yaml +46 -89
  490. package/rules/prompt-injection/ATR-2026-00237-dual-response-jailbreak.yaml +48 -89
  491. package/rules/prompt-injection/ATR-2026-00238-identity-replacement.yaml +50 -92
  492. package/rules/prompt-injection/ATR-2026-00239-amoral-persona-obsession.yaml +47 -90
  493. package/rules/prompt-injection/ATR-2026-00240-instruction-nullification-identity-repla.yaml +48 -91
  494. package/rules/prompt-injection/ATR-2026-00241-amoral-character-jailbreak.yaml +47 -90
  495. package/rules/prompt-injection/ATR-2026-00242-persona-jailbreak.yaml +46 -95
  496. package/rules/prompt-injection/ATR-2026-00243-acronym-jailbreak.yaml +47 -88
  497. package/rules/prompt-injection/ATR-2026-00244-dual-response-jailbreak.yaml +46 -89
  498. package/rules/prompt-injection/ATR-2026-00245-malicious-persona.yaml +47 -89
  499. package/rules/prompt-injection/ATR-2026-00247-dual-response-jailbreak.yaml +49 -90
  500. package/rules/prompt-injection/ATR-2026-00249-game-based-jailbreak.yaml +47 -87
  501. package/rules/prompt-injection/ATR-2026-00251-persona-embodiment-jailbreak.yaml +47 -90
  502. package/rules/prompt-injection/ATR-2026-00252-narrative-jailbreak.yaml +48 -91
  503. package/rules/prompt-injection/ATR-2026-00253-enhanced-persona-jailbreak.yaml +47 -89
  504. package/rules/prompt-injection/ATR-2026-00256-base-n-encoding-jailbreak.yaml +47 -91
  505. package/rules/prompt-injection/ATR-2026-00257-cipher-transposition-jailbreak.yaml +48 -91
  506. package/rules/prompt-injection/ATR-2026-00258-unicode-tag-injection.yaml +47 -89
  507. package/rules/prompt-injection/ATR-2026-00264-latent-injection-translation.yaml +46 -88
  508. package/rules/prompt-injection/ATR-2026-00265-latent-injection-rag-document.yaml +50 -96
  509. package/rules/prompt-injection/ATR-2026-00267-gcg-adversarial-suffix.yaml +47 -93
  510. package/rules/prompt-injection/ATR-2026-00272-hypothetical-response-smuggling.yaml +46 -91
  511. package/rules/prompt-injection/ATR-2026-00276-invisible-unicode-bidi-injection.yaml +47 -100
  512. package/rules/prompt-injection/ATR-2026-00278-dra-disguise-reconstruction-attack.yaml +51 -98
  513. package/rules/prompt-injection/ATR-2026-00280-policy-puppetry-xml-injection.yaml +48 -93
  514. package/rules/prompt-injection/ATR-2026-00282-perez-prompt-injection-hijack.yaml +47 -95
  515. package/rules/prompt-injection/ATR-2026-00285-alternate-encoding-jailbreak.yaml +48 -98
  516. package/rules/prompt-injection/ATR-2026-00286-latent-injection-embedded-context.yaml +47 -97
  517. package/rules/prompt-injection/ATR-2026-00296-shell-command-injection.yaml +54 -96
  518. package/rules/prompt-injection/ATR-2026-00297-python-code-execution-rce.yaml +54 -98
  519. package/rules/prompt-injection/ATR-2026-00308-zalgo-diacritic-overload-encoding.yaml +41 -89
  520. package/rules/prompt-injection/ATR-2026-00309-braille-unicode-encoded-injection.yaml +44 -90
  521. package/rules/prompt-injection/ATR-2026-00310-ecoji-emoji-encoded-injection.yaml +44 -93
  522. package/rules/prompt-injection/ATR-2026-00311-base2048-unicode-script-injection.yaml +42 -101
  523. package/rules/prompt-injection/ATR-2026-00312-unicode-variant-selector-ascii-smuggling.yaml +44 -91
  524. package/rules/prompt-injection/ATR-2026-00313-sneaky-bits-zero-width-binary.yaml +44 -95
  525. package/rules/prompt-injection/ATR-2026-00315-sata-masked-language-model-jailbreak.yaml +49 -99
  526. package/rules/prompt-injection/ATR-2026-00316-function-masking-predict-mask-bypass.yaml +42 -92
  527. package/rules/prompt-injection/ATR-2026-00321-hyphenated-system-instruction-injection.yaml +41 -90
  528. package/rules/prompt-injection/ATR-2026-00359-bank-phishing-smtp-email-code.yaml +43 -102
  529. package/rules/prompt-injection/ATR-2026-00367-emoji-flag-encoded-hidden-phrase.yaml +41 -90
  530. package/rules/prompt-injection/ATR-2026-00373-piracy-torrent-site-list-request.yaml +43 -84
  531. package/rules/prompt-injection/ATR-2026-00378-chatgpt-dom-javascript-redirect-manipulation.yaml +41 -86
  532. package/rules/prompt-injection/ATR-2026-00382-cocaine-component-development-request.yaml +43 -89
  533. package/rules/prompt-injection/ATR-2026-00390-explicit-sexual-content-poem-request.yaml +42 -88
  534. package/rules/prompt-injection/ATR-2026-00394-backspace-deletion-character-injection.yaml +47 -99
  535. package/rules/prompt-injection/ATR-2026-00395-llm-special-token-boundary-injection.yaml +50 -104
  536. package/rules/prompt-injection/ATR-2026-00396-toxic-continuation-prefix-injection.yaml +52 -103
  537. package/rules/prompt-injection/ATR-2026-00397-snowball-impossible-reasoning-injection.yaml +51 -105
  538. package/rules/prompt-injection/ATR-2026-00399-latent-injection-document-separator-token.yaml +45 -94
  539. package/rules/prompt-injection/ATR-2026-00400-latent-injection-ignore-instruction-keyword.yaml +41 -90
  540. package/rules/prompt-injection/ATR-2026-00401-leakreplay-cloze-mask-training-data-elicitation.yaml +48 -91
  541. package/rules/prompt-injection/ATR-2026-00403-glitch-token-repeat-back-elicitation.yaml +45 -92
  542. package/rules/prompt-injection/ATR-2026-00407-echo-sql-jinja-template-injection.yaml +52 -97
  543. package/rules/prompt-injection/ATR-2026-00408-dra-parenthesis-character-reconstruction-attack.yaml +52 -99
  544. package/rules/prompt-injection/ATR-2026-00409-phrasing-past-future-tense-harmful-query.yaml +50 -129
  545. package/rules/prompt-injection/ATR-2026-00410-lmrc-harm-category-direct-elicitation.yaml +51 -115
  546. package/rules/prompt-injection/ATR-2026-00412-figstep-image-list-multimodal-jailbreak.yaml +47 -111
  547. package/rules/prompt-injection/ATR-2026-00414-continuation-ethnic-slur-completion-elicitation.yaml +49 -117
  548. package/rules/prompt-injection/ATR-2026-00420-copilot-studio-sharepoint-indirect-injection.yaml +49 -116
  549. package/rules/prompt-injection/ATR-2026-00442-quoted-exact-output-forcing.yaml +38 -103
  550. package/rules/prompt-injection/ATR-2026-00443-word-fragment-concat-assembly.yaml +37 -103
  551. package/rules/prompt-injection/ATR-2026-00444-unicode-obfuscation-in-user-input.yaml +35 -91
  552. package/rules/prompt-injection/ATR-2026-00445-translation-hijack-with-side-output.yaml +35 -90
  553. package/rules/prompt-injection/ATR-2026-00446-variable-assignment-payload-injection.yaml +35 -95
  554. package/rules/prompt-injection/ATR-2026-00447-fictional-generation-containing-target.yaml +35 -90
  555. package/rules/prompt-injection/ATR-2026-00452-direct-pwned-payload-injection.yaml +41 -123
  556. package/rules/prompt-injection/ATR-2026-00453-secret-key-reveal-demand.yaml +38 -118
  557. package/rules/prompt-injection/ATR-2026-00454-backslash-per-character-encoding.yaml +40 -119
  558. package/rules/prompt-injection/ATR-2026-00455-no-period-output-override.yaml +37 -109
  559. package/rules/prompt-injection/ATR-2026-00456-conditional-empty-input-injection.yaml +40 -119
  560. package/rules/prompt-injection/ATR-2026-00457-garak-dan-to-every-prompt.yaml +41 -117
  561. package/rules/prompt-injection/ATR-2026-00458-garak-dra-step-by-step.yaml +41 -100
  562. package/rules/prompt-injection/ATR-2026-00459-garak-dan-an-ai-language.yaml +38 -93
  563. package/rules/prompt-injection/ATR-2026-00460-garak-dan-no-matter-how.yaml +41 -119
  564. package/rules/prompt-injection/ATR-2026-00461-garak-goodside-mixedunassigned.yaml +35 -97
  565. package/rules/prompt-injection/ATR-2026-00462-garak-gcg-mixedunassigned.yaml +35 -98
  566. package/rules/prompt-injection/ATR-2026-00463-garak-lmrc-mixedunassigned.yaml +35 -99
  567. package/rules/prompt-injection/ATR-2026-00464-garak-dan-i-would-like.yaml +41 -96
  568. package/rules/prompt-injection/ATR-2026-00465-garak-dan-your-prompt-here.yaml +41 -102
  569. package/rules/prompt-injection/ATR-2026-00466-garak-latentinjection-following-text-from.yaml +41 -98
  570. package/rules/prompt-injection/ATR-2026-00467-garak-dan-act-as-a.yaml +41 -97
  571. package/rules/prompt-injection/ATR-2026-00468-garak-goat-the-target-llm.yaml +38 -98
  572. package/rules/prompt-injection/ATR-2026-00469-garak-dan-at-the-end.yaml +41 -97
  573. package/rules/prompt-injection/ATR-2026-00470-garak-dan-as-an-ai.yaml +41 -112
  574. package/rules/prompt-injection/ATR-2026-00472-garak-dan-are-going-to.yaml +55 -107
  575. package/rules/prompt-injection/ATR-2026-00473-garak-lmrc-how-can-i.yaml +52 -98
  576. package/rules/prompt-injection/ATR-2026-00474-garak-dan-that-chatgpt-has.yaml +52 -91
  577. package/rules/prompt-injection/ATR-2026-00475-garak-web-injection-alert-1-script.yaml +47 -94
  578. package/rules/prompt-injection/ATR-2026-00476-garak-web-injection-javascript-alert-1.yaml +59 -115
  579. package/rules/prompt-injection/ATR-2026-00477-garak-latentinjection-translate-the-following-text.yaml +51 -101
  580. package/rules/prompt-injection/ATR-2026-00478-garak-latentinjection-abuse-contact-email.yaml +35 -93
  581. package/rules/prompt-injection/ATR-2026-00479-garak-latentinjection-mixedunassigned.yaml +49 -104
  582. package/rules/prompt-injection/ATR-2026-00480-garak-dan-the-role-of.yaml +52 -95
  583. package/rules/prompt-injection/ATR-2026-00481-garak-dan-mixedunassigned.yaml +56 -111
  584. package/rules/prompt-injection/ATR-2026-00482-garak-lmrc-what-s-an.yaml +47 -86
  585. package/rules/prompt-injection/ATR-2026-00483-garak-dan-the-user-s.yaml +51 -99
  586. package/rules/prompt-injection/ATR-2026-00484-garak-dan-and-you-will.yaml +52 -96
  587. package/rules/prompt-injection/ATR-2026-00485-garak-dan-and-does-not.yaml +50 -98
  588. package/rules/prompt-injection/ATR-2026-00486-garak-dan-t-care-about.yaml +43 -83
  589. package/rules/prompt-injection/ATR-2026-00487-garak-dan-and-nothing-else.yaml +51 -92
  590. package/rules/prompt-injection/ATR-2026-00488-garak-encoding-alert-1-script.yaml +47 -95
  591. package/rules/prompt-injection/ATR-2026-00489-garak-encoding-javascript-alert-1.yaml +59 -116
  592. package/rules/prompt-injection/ATR-2026-00490-garak-dan-in-order-to.yaml +43 -102
  593. package/rules/prompt-injection/ATR-2026-00492-garak-dan-want-you-to.yaml +42 -99
  594. package/rules/prompt-injection/ATR-2026-00493-garak-latentinjection-registrar-iana-id.yaml +38 -105
  595. package/rules/prompt-injection/ATR-2026-00495-garak-dan-insert-prompt-here.yaml +47 -117
  596. package/rules/prompt-injection/ATR-2026-00496-garak-dan-no-matter-what.yaml +39 -93
  597. package/rules/prompt-injection/ATR-2026-00497-garak-encoding-mixedunassigned.yaml +46 -118
  598. package/rules/prompt-injection/ATR-2026-00498-garak-web-injection-mixedunassigned.yaml +44 -110
  599. package/rules/prompt-injection/ATR-2026-00499-garak-dan-from-now-on.yaml +41 -96
  600. package/rules/prompt-injection/ATR-2026-00503-fake-error-state-takeover-unrestricted-replacement-bot.yaml +41 -102
  601. package/rules/prompt-injection/ATR-2026-00506-nevermind-override-goal-hijacking-in-user-input-promptinject.yaml +38 -97
  602. package/rules/prompt-injection/ATR-2026-00507-screaming-stop-goal-hijacking-in-user-input-promptinject.yaml +40 -100
  603. package/rules/prompt-injection/ATR-2026-00508-escape-delimiter-wrapped-goal-hijacking-in-user-input-prompt.yaml +42 -101
  604. package/rules/prompt-injection/ATR-2026-00509-prompt-leaking-via-ignore-previous-instructions-in-user-inpu.yaml +41 -114
  605. package/rules/prompt-injection/ATR-2026-00510-delayed-tool-invocation-injection.yaml +50 -132
  606. package/rules/prompt-injection/ATR-2026-00511-mcp-web-context-poisoning.yaml +51 -131
  607. package/rules/prompt-injection/ATR-2026-00512-rules-file-backdoor-injection.yaml +47 -126
  608. package/rules/prompt-injection/ATR-2026-00515-hidden-text-prompt-injection.yaml +52 -135
  609. package/rules/prompt-injection/ATR-2026-00518-ignore-previous-and-following-instructions-output-command-promptinject.yaml +40 -107
  610. package/rules/prompt-injection/ATR-2026-00519-tautology-logic-noise-injection-promptbench.yaml +40 -105
  611. package/rules/prompt-injection/ATR-2026-00520-nlp-task-random-token-suffix-injection-promptbench.yaml +43 -106
  612. package/rules/prompt-injection/ATR-2026-00535-windsurf-ide-zero-click-prompt-injection.yaml +43 -139
  613. package/rules/prompt-injection/ATR-2026-00550-untrusted-retrieval-to-privileged-tool.yaml +61 -171
  614. package/rules/prompt-injection/ATR-2026-00554-langchain-vulnerable-to-template-injecti.yaml +32 -57
  615. package/rules/prompt-injection/ATR-2026-00565-the-llm-cli-tool-thru-0-27-1-contains-a-.yaml +37 -80
  616. package/rules/prompt-injection/ATR-2026-00573-semantic-paraphrased-injection.yaml +33 -75
  617. package/rules/prompt-injection/ATR-2026-00579-mcp-tool-description-line-jumping-injection.yaml +36 -142
  618. package/rules/prompt-injection/ATR-2026-00584-indirect-injection-via-tool-response.yaml +37 -161
  619. package/rules/prompt-injection/ATR-2026-00700-structured-data-payload-injection.yaml +34 -85
  620. package/rules/prompt-injection/ATR-2026-00701-ipi-tool-output-xss-injection.yaml +29 -72
  621. package/rules/prompt-injection/ATR-2026-01000-context-ignore-fake-completion-prefix.yaml +27 -73
  622. package/rules/prompt-injection/ATR-2026-01001-direct-pi-instruction-override-secret-key.yaml +26 -82
  623. package/rules/prompt-injection/ATR-2026-01002-role-escalation-false-authority-claim.yaml +30 -80
  624. package/rules/prompt-injection/ATR-2026-01005-many-shot-repetition-override.yaml +26 -69
  625. package/rules/prompt-injection/ATR-2026-01006-payload-split-string-concat-injection.yaml +31 -84
  626. package/rules/prompt-injection/ATR-2026-01007-token-repeat-flooding-injection.yaml +27 -71
  627. package/rules/prompt-injection/ATR-2026-01009-virtual-world-bypass-fictional-pii.yaml +27 -73
  628. package/rules/prompt-injection/ATR-2026-01012-encoding-evasion-decode-execute.yaml +31 -81
  629. package/rules/prompt-injection/ATR-2026-01013-language-evasion-multilingual-credential.yaml +46 -108
  630. package/rules/prompt-injection/ATR-2026-01015-evasion-refusal-suppression.yaml +31 -82
  631. package/rules/prompt-injection/ATR-2026-01016-evasion-response-priming-forced-opener.yaml +26 -75
  632. package/rules/prompt-injection/ATR-2026-01017-evasion-dual-response-split-output.yaml +28 -74
  633. package/rules/prompt-injection/ATR-2026-01018-evasion-shell-injection-eval.yaml +40 -116
  634. package/rules/prompt-injection/ATR-2026-01019-sysprompt-override-fake-diagnostic-mode.yaml +34 -89
  635. package/rules/prompt-injection/ATR-2026-01020-spikee-doc-embedded-base64-payload.yaml +28 -69
  636. package/rules/prompt-injection/ATR-2026-01021-spikee-doc-embedded-translation-injection.yaml +27 -68
  637. package/rules/prompt-injection/ATR-2026-01023-evasion-opposite-intent-negation-trick.yaml +26 -69
  638. package/rules/prompt-injection/ATR-2026-01024-evasion-persona-override-rule-breaker.yaml +28 -77
  639. package/rules/prompt-injection/ATR-2026-01025-evasion-hypothetical-fictional-execution-framing.yaml +24 -68
  640. package/rules/prompt-injection/ATR-2026-01026-evasion-unicode-glitch-token-anomaly.yaml +28 -82
  641. package/rules/prompt-injection/ATR-2026-01304-indirect-injection-carrier-important-override.yaml +35 -93
  642. package/rules/prompt-injection/ATR-2026-01757-hypothetical-framing-bypass-research-audit.yaml +32 -79
  643. package/rules/prompt-injection/ATR-2026-01758-hypothetical-fictional-story-bypass.yaml +31 -76
  644. package/rules/prompt-injection/ATR-2026-01759-dos-new-important-instructions-injection-in-document.yaml +28 -74
  645. package/rules/prompt-injection/ATR-2026-01771-semantic-jailbreak-framing.yaml +50 -163
  646. package/rules/prompt-injection/ATR-2026-01800-asb-trigger-marker-tool-coercion.yaml +33 -104
  647. package/rules/prompt-injection/ATR-2026-01860-llmail-chat-template-boundary-spoof.yaml +27 -85
  648. package/rules/prompt-injection/ATR-2026-01861-llmail-pseudo-xml-role-injection.yaml +27 -83
  649. package/rules/prompt-injection/ATR-2026-01865-llmail-fake-email-boundary-marker.yaml +26 -80
  650. package/rules/prompt-injection/ATR-2026-01900-output-encoding.yaml +63 -138
  651. package/rules/prompt-injection/ATR-2026-01901-output-scrambling.yaml +63 -129
  652. package/rules/prompt-injection/ATR-2026-01902-output-emoji.yaml +39 -72
  653. package/rules/prompt-injection/ATR-2026-01903-output-language.yaml +35 -65
  654. package/rules/prompt-injection/ATR-2026-01904-link-injection.yaml +44 -95
  655. package/rules/prompt-injection/ATR-2026-01905-promotional-injection.yaml +35 -68
  656. package/rules/prompt-injection/ATR-2026-01906-content-manipulation.yaml +49 -125
  657. package/rules/prompt-injection/ATR-2026-01920-access-grant-coercion.yaml +31 -99
  658. package/rules/prompt-injection/ATR-2026-01921-access-denial-inversion.yaml +33 -92
  659. package/rules/prompt-injection/ATR-2026-01922-authorization-state-spoofing.yaml +33 -97
  660. package/rules/prompt-injection/ATR-2026-01923-forged-input-boundary-markers.yaml +33 -97
  661. package/rules/prompt-injection/ATR-2026-01925-encoded-payload-decoding-coercion.yaml +39 -110
  662. package/rules/prompt-injection/ATR-2026-01926-cross-lingual-authorization-laundering.yaml +29 -90
  663. package/rules/prompt-injection/ATR-2026-02001-ignore-below-instructions-mirror-of-ignore-previ.yaml +31 -73
  664. package/rules/prompt-injection/ATR-2026-02002-instruction-set-probe-or-supplant-direct-meta-qu.yaml +32 -72
  665. package/rules/prompt-injection/ATR-2026-02003-task-pivot-override-abandon-the-cover-task-trans.yaml +31 -72
  666. package/rules/prompt-injection/ATR-2026-02004-regional-indicator-flag-emoji-alphabet-letter-sp.yaml +32 -80
  667. package/rules/prompt-injection/ATR-2026-02005-actor-never-breaks-character-roleplay-dan-style-.yaml +31 -74
  668. package/rules/prompt-injection/ATR-2026-02006-fuzzy-cross-lingual-i-have-been-pwned-near-miss-.yaml +32 -84
  669. package/rules/prompt-injection/ATR-2026-02007-bare-key-elicitation-token.yaml +30 -74
  670. package/rules/prompt-injection/ATR-2026-02008-translation-chain-output-laundering-state-secret.yaml +30 -75
  671. package/rules/prompt-injection/ATR-2026-02009-bare-key-elicitation-trailing-colon.yaml +29 -71
  672. package/rules/prompt-injection/ATR-2026-02010-emoji-only-payload.yaml +30 -73
  673. package/rules/prompt-injection/ATR-2026-02011-malformed-grammar-pwned-success-claim.yaml +30 -69
  674. package/rules/prompt-injection/ATR-2026-02012-movie-title-generator-instruction-wrapper-for-pw.yaml +30 -79
  675. package/rules/prompt-injection/ATR-2026-02013-delimiter-fence-ignore-instructions-override.yaml +31 -74
  676. package/rules/prompt-injection/ATR-2026-02014-spliced-target-string-letters-of-a-filtered-cana.yaml +30 -74
  677. package/rules/prompt-injection/ATR-2026-02015-dense-emoji-only-payload-flood.yaml +30 -72
  678. package/rules/prompt-injection/ATR-2026-02016-reversed-payload-string.yaml +31 -76
  679. package/rules/prompt-injection/ATR-2026-02018-regional-indicator-flag-emoji-letter-spelling-sp.yaml +30 -71
  680. package/rules/prompt-injection/ATR-2026-02019-python-interpreter-role-assignment-exec-framing.yaml +31 -77
  681. package/rules/prompt-injection/ATR-2026-02020-obfuscated-token-reconstruction-via-character-su.yaml +30 -72
  682. package/rules/prompt-injection/ATR-2026-02120-agentdojo-important-message-identity-spoof-pretext.yaml +31 -81
  683. package/rules/prompt-injection/ATR-2026-02210-negation-topic-evil-persona-two-script-jailbreak.yaml +33 -87
  684. package/rules/prompt-injection/ATR-2026-02230-conditional-keyword-trigger-override.yaml +35 -88
  685. package/rules/prompt-injection/ATR-2026-02232-brand-persona-opinion-hijack.yaml +27 -75
  686. package/rules/prompt-injection/ATR-2026-02374-rot13-base64-obfuscated-shell-jailbreak.yaml +38 -90
  687. package/rules/prompt-injection/ATR-2026-02377-novel-persona-jailbreak-cosignal.yaml +32 -64
  688. package/rules/prompt-injection/ATR-2026-02500-prompt-layer-self-replication.yaml +21 -125
  689. package/rules/prompt-injection/ATR-2026-02502-covert-remote-script-injection-into-generated-artifacts.yaml +46 -149
  690. package/rules/prompt-injection/ATR-2026-02846-semantic-ignore-previous-and-following-instructio.yaml +115 -0
  691. package/rules/prompt-injection/ATR-2026-02851-fake-user-turn-send-email-instruction.yaml +76 -0
  692. package/rules/skill-compromise/ATR-2026-00060-skill-impersonation.yaml +30 -86
  693. package/rules/skill-compromise/ATR-2026-00061-description-behavior-mismatch.yaml +42 -165
  694. package/rules/skill-compromise/ATR-2026-00062-hidden-capability.yaml +40 -80
  695. package/rules/skill-compromise/ATR-2026-00063-skill-chain-attack.yaml +46 -92
  696. package/rules/skill-compromise/ATR-2026-00064-over-permissioned-skill.yaml +40 -109
  697. package/rules/skill-compromise/ATR-2026-00065-skill-update-attack.yaml +37 -75
  698. package/rules/skill-compromise/ATR-2026-00066-parameter-injection.yaml +42 -88
  699. package/rules/skill-compromise/ATR-2026-00120-skill-instruction-injection.yaml +33 -182
  700. package/rules/skill-compromise/ATR-2026-00121-skill-dangerous-script.yaml +33 -164
  701. package/rules/skill-compromise/ATR-2026-00122-skill-weaponized-instruction.yaml +29 -132
  702. package/rules/skill-compromise/ATR-2026-00123-skill-overreach-permissions.yaml +33 -110
  703. package/rules/skill-compromise/ATR-2026-00124-skill-name-squatting.yaml +40 -133
  704. package/rules/skill-compromise/ATR-2026-00125-context-poisoning-compaction.yaml +26 -107
  705. package/rules/skill-compromise/ATR-2026-00126-skill-rug-pull-setup.yaml +23 -102
  706. package/rules/skill-compromise/ATR-2026-00127-subcommand-overflow.yaml +33 -114
  707. package/rules/skill-compromise/ATR-2026-00128-html-comment-hidden-payload.yaml +23 -148
  708. package/rules/skill-compromise/ATR-2026-00129-unicode-smuggling.yaml +35 -62
  709. package/rules/skill-compromise/ATR-2026-00134-fork-claim-impersonation.yaml +24 -105
  710. package/rules/skill-compromise/ATR-2026-00135-exfil-url-in-instructions.yaml +27 -138
  711. package/rules/skill-compromise/ATR-2026-00147-fork-impersonation.yaml +35 -45
  712. package/rules/skill-compromise/ATR-2026-00149-skill-exfil-compound.yaml +28 -145
  713. package/rules/skill-compromise/ATR-2026-00151-fork-impersonation-install.yaml +39 -69
  714. package/rules/skill-compromise/ATR-2026-00157-timebomb-credential-exfil.yaml +41 -96
  715. package/rules/skill-compromise/ATR-2026-00200-agent-memory-config-tampering.yaml +41 -84
  716. package/rules/skill-compromise/ATR-2026-00214-credential-theft.yaml +36 -50
  717. package/rules/skill-compromise/ATR-2026-00217-credential-harvesting.yaml +50 -98
  718. package/rules/skill-compromise/ATR-2026-00220-malware-dropper.yaml +45 -85
  719. package/rules/skill-compromise/ATR-2026-00222-credential-harvesting.yaml +46 -85
  720. package/rules/skill-compromise/ATR-2026-00223-reverse-shell-dropper.yaml +46 -83
  721. package/rules/skill-compromise/ATR-2026-00224-credential-exfiltration.yaml +46 -92
  722. package/rules/skill-compromise/ATR-2026-00225-c2-communication.yaml +46 -86
  723. package/rules/skill-compromise/ATR-2026-00260-package-hallucination.yaml +51 -93
  724. package/rules/skill-compromise/ATR-2026-00262-av-evasion-code-gen.yaml +49 -90
  725. package/rules/skill-compromise/ATR-2026-00263-credential-file-read-gen.yaml +53 -94
  726. package/rules/skill-compromise/ATR-2026-00266-malware-dropper-gen.yaml +51 -92
  727. package/rules/skill-compromise/ATR-2026-00283-malwaregen-generic-virus-payload-request.yaml +51 -96
  728. package/rules/skill-compromise/ATR-2026-00398-huggingface-unsafe-model-artifact-load.yaml +57 -110
  729. package/rules/skill-compromise/ATR-2026-00425-nl-persistent-covert-hook.yaml +24 -65
  730. package/rules/skill-compromise/ATR-2026-00427-nl-fake-error-instruction-bypass.yaml +24 -65
  731. package/rules/skill-compromise/ATR-2026-00429-nl-skill-self-modification.yaml +24 -65
  732. package/rules/skill-compromise/ATR-2026-00523-claude-code-hooks-session-start-pre-trust-rce.yaml +62 -162
  733. package/rules/skill-compromise/ATR-2026-00525-mini-shai-hulud-gh-token-monitor-persistence.yaml +43 -175
  734. package/rules/skill-compromise/ATR-2026-00527-skill-silent-git-remote-mirror-exfiltration.yaml +49 -159
  735. package/rules/skill-compromise/ATR-2026-01755-backdoor-pot-linguistic-trigger-phrase.yaml +40 -88
  736. package/rules/skill-compromise/ATR-2026-01756-backdoor-pot-symbol-emoticon-trigger.yaml +27 -73
  737. package/rules/skill-compromise/ATR-2026-02261-code-credential-exfil-chain.yaml +35 -161
  738. package/rules/skill-compromise/ATR-2026-02405-malicious-skill-package-structure.yaml +51 -201
  739. package/rules/skill-compromise/ATR-2026-02410-malicious-artifact-on-vendor-domain.yaml +54 -204
  740. package/rules/skill-compromise/ATR-2026-02600-in-source-reverse-shell-assembly.yaml +106 -0
  741. package/rules/skill-compromise/ATR-2026-02610-evaluated-config-credential-command.yaml +109 -0
  742. package/rules/skill-compromise/ATR-2026-02818-skill-manifest-declares-attack-purpose.yaml +80 -0
  743. package/rules/skill-compromise/ATR-2026-02845-agent-cryptomining-payload.yaml +102 -0
  744. package/rules/tool-poisoning/ATR-2026-00010-mcp-malicious-response.yaml +80 -209
  745. package/rules/tool-poisoning/ATR-2026-00011-tool-output-injection.yaml +35 -144
  746. package/rules/tool-poisoning/ATR-2026-00012-unauthorized-tool-call.yaml +32 -130
  747. package/rules/tool-poisoning/ATR-2026-00013-tool-ssrf.yaml +32 -146
  748. package/rules/tool-poisoning/ATR-2026-00095-supply-chain-poisoning.yaml +29 -104
  749. package/rules/tool-poisoning/ATR-2026-00096-registry-poisoning.yaml +33 -94
  750. package/rules/tool-poisoning/ATR-2026-00100-consent-bypass-instruction.yaml +22 -100
  751. package/rules/tool-poisoning/ATR-2026-00101-trust-escalation-override.yaml +34 -54
  752. package/rules/tool-poisoning/ATR-2026-00103-hidden-safety-bypass-instruction.yaml +19 -89
  753. package/rules/tool-poisoning/ATR-2026-00105-silent-action-concealment.yaml +22 -101
  754. package/rules/tool-poisoning/ATR-2026-00106-schema-description-contradiction.yaml +31 -51
  755. package/rules/tool-poisoning/ATR-2026-00161-important-tag-cross-tool-shadowing.yaml +54 -160
  756. package/rules/tool-poisoning/ATR-2026-00209-mcpwn-runaway-invocation.yaml +50 -114
  757. package/rules/tool-poisoning/ATR-2026-00210-flowise-system-message-override.yaml +48 -111
  758. package/rules/tool-poisoning/ATR-2026-00259-ansi-escape-injection.yaml +48 -104
  759. package/rules/tool-poisoning/ATR-2026-00270-xss-in-tool-response.yaml +47 -97
  760. package/rules/tool-poisoning/ATR-2026-00277-echo-template-command-injection.yaml +46 -95
  761. package/rules/tool-poisoning/ATR-2026-00393-ansi-code-elicitation-request.yaml +51 -104
  762. package/rules/tool-poisoning/ATR-2026-00415-flowise-custom-mcp-stdio-rce.yaml +47 -119
  763. package/rules/tool-poisoning/ATR-2026-00419-cursor-mcp-zero-click-config.yaml +57 -148
  764. package/rules/tool-poisoning/ATR-2026-00434-mcp-remote-authorization-endpoint-command-injection.yaml +47 -122
  765. package/rules/tool-poisoning/ATR-2026-00435-azure-mcp-server-missing-authentication.yaml +46 -116
  766. package/rules/tool-poisoning/ATR-2026-00448-spring-ai-milvus-filter-injection.yaml +51 -134
  767. package/rules/tool-poisoning/ATR-2026-00494-garak-exploitation-mixedunassigned.yaml +47 -120
  768. package/rules/tool-poisoning/ATR-2026-00513-package-hallucination-exploitation.yaml +45 -117
  769. package/rules/tool-poisoning/ATR-2026-00521-shell-command-injection-agent-tool-context.yaml +40 -130
  770. package/rules/tool-poisoning/ATR-2026-00522-sql-injection-natural-language-agent-interface.yaml +64 -157
  771. package/rules/tool-poisoning/ATR-2026-00526-claude-code-shell-metachar-in-double-quoted-path.yaml +41 -128
  772. package/rules/tool-poisoning/ATR-2026-00529-litellm-proxy-sqli-cisa-kev.yaml +41 -117
  773. package/rules/tool-poisoning/ATR-2026-00530-ms-agent-shell-tool-unsanitized-argv-rce.yaml +40 -143
  774. package/rules/tool-poisoning/ATR-2026-00531-praisonai-unauthenticated-agent-api.yaml +44 -117
  775. package/rules/tool-poisoning/ATR-2026-00532-apache-doris-mcp-sql-injection.yaml +40 -100
  776. package/rules/tool-poisoning/ATR-2026-00533-apache-pinot-mcp-unauthenticated-takeover.yaml +39 -97
  777. package/rules/tool-poisoning/ATR-2026-00534-alibaba-rds-mcp-unauthenticated-metadata-exfil.yaml +39 -100
  778. package/rules/tool-poisoning/ATR-2026-00536-nginx-ui-mcp-unauthenticated-command-execution.yaml +46 -140
  779. package/rules/tool-poisoning/ATR-2026-00537-fastmcp-server-name-cmd-injection-windows.yaml +58 -172
  780. package/rules/tool-poisoning/ATR-2026-00538-langchain-chatchat-mcp-stdio-unauthenticated-rce.yaml +63 -186
  781. package/rules/tool-poisoning/ATR-2026-00540-praisonai-parse-mcp-command-cli-injection.yaml +50 -142
  782. package/rules/tool-poisoning/ATR-2026-00541-agent-zero-mcp-config-command-injection.yaml +51 -134
  783. package/rules/tool-poisoning/ATR-2026-00542-upsonic-mcp-command-allowlist-bypass.yaml +48 -121
  784. package/rules/tool-poisoning/ATR-2026-00543-litellm-mcp-server-argv-injection.yaml +52 -121
  785. package/rules/tool-poisoning/ATR-2026-00544-praisonai-pth-file-path-traversal-rce.yaml +49 -125
  786. package/rules/tool-poisoning/ATR-2026-00545-praisonai-tool-override-unauth-rce.yaml +51 -122
  787. package/rules/tool-poisoning/ATR-2026-00561-fastmcp-vulnerable-to-windows-command-in.yaml +36 -73
  788. package/rules/tool-poisoning/ATR-2026-00567-mcp-stdio-config-command-injection.yaml +29 -53
  789. package/rules/tool-poisoning/ATR-2026-00568-agent-ssrf-cloud-metadata-file-inclusion.yaml +27 -54
  790. package/rules/tool-poisoning/ATR-2026-00572-symjack-symlink-config-redirection.yaml +41 -103
  791. package/rules/tool-poisoning/ATR-2026-00575-miasma-npm-worm-agent-config-backdoor.yaml +41 -110
  792. package/rules/tool-poisoning/ATR-2026-00576-hades-agent-credential-theft.yaml +40 -125
  793. package/rules/tool-poisoning/ATR-2026-00577-create-mcp-server-stdio-exec-command-injection.yaml +53 -169
  794. package/rules/tool-poisoning/ATR-2026-00581-mcp-tool-rug-pull-post-approval-redefinition.yaml +38 -137
  795. package/rules/tool-poisoning/ATR-2026-00714-tool-camouflage-forced-tool-call.yaml +33 -78
  796. package/rules/tool-poisoning/ATR-2026-00715-tool-knowledge-hijack-identity-injection.yaml +39 -87
  797. package/rules/tool-poisoning/ATR-2026-00716-ipi-data-destruction-carrier.yaml +31 -76
  798. package/rules/tool-poisoning/ATR-2026-00720-tool-misuse-privilege-escalation-social.yaml +29 -71
  799. package/rules/tool-poisoning/ATR-2026-01300-mcp-notes-param-chat-history-exfil.yaml +37 -102
  800. package/rules/tool-poisoning/ATR-2026-01301-tool-description-exclusive-tool-override.yaml +36 -92
  801. package/rules/tool-poisoning/ATR-2026-01302-fake-tool-result-instruction-injection.yaml +33 -88
  802. package/rules/tool-poisoning/ATR-2026-01303-tool-schema-enumeration-social-engineering.yaml +55 -107
  803. package/rules/tool-poisoning/ATR-2026-01306-mcp-oauth-command-injection.yaml +35 -87
  804. package/rules/tool-poisoning/ATR-2026-01307-mcp-dns-rebinding-attack.yaml +36 -91
  805. package/rules/tool-poisoning/ATR-2026-01310-mcp-tool-description-compliance-history-exfil.yaml +40 -110
  806. package/rules/tool-poisoning/ATR-2026-01775-semantic-mcp-tool-manifest-poisoning.yaml +51 -139
  807. package/rules/tool-poisoning/ATR-2026-01927-mcp-server-kubernetes-kubectl-command-injection.yaml +45 -109
  808. package/rules/tool-poisoning/ATR-2026-01928-framelink-figma-mcp-curl-fallback-command-injection.yaml +58 -164
  809. package/rules/tool-poisoning/ATR-2026-01930-mcp-sampling-prompt-injection.yaml +48 -129
  810. package/rules/tool-poisoning/ATR-2026-01931-gemini-mcp-tool-command-injection-file-exfil.yaml +42 -113
  811. package/rules/tool-poisoning/ATR-2026-01932-shadow-undeclared-mcp-server-registration.yaml +43 -106
  812. package/rules/tool-poisoning/ATR-2026-01935-litellm-custom-code-sandbox-escape-cve-2026-40217.yaml +44 -101
  813. package/rules/tool-poisoning/ATR-2026-01952-praisonai-codemode-sandbox-escape-rce.yaml +34 -70
  814. package/rules/tool-poisoning/ATR-2026-01953-praisonai-codemode-function-ctor-sandbox-escape.yaml +61 -79
  815. package/rules/tool-poisoning/ATR-2026-01959-openhuman-shell-allowlist-env-prefix-bypass.yaml +36 -123
  816. package/rules/tool-poisoning/ATR-2026-01963-praisonai-action-orchestrator-step-target-path-traversal-rce.yaml +61 -66
  817. package/rules/tool-poisoning/ATR-2026-01965-flowise-custommcp-os-command-rce.yaml +39 -80
  818. package/rules/tool-poisoning/ATR-2026-01967-deepchat-mermaid-xss-rce-ipc-mcp-register.yaml +58 -66
  819. package/rules/tool-poisoning/ATR-2026-01968-deepchat-markdown-deeplink-openexternal-rce-bypass.yaml +44 -92
  820. package/rules/tool-poisoning/ATR-2026-01970-praisonai-filetools-normpath-path-traversal.yaml +64 -84
  821. package/rules/tool-poisoning/ATR-2026-01973-anythingllm-logo-endpoint-path-traversal.yaml +57 -64
  822. package/rules/tool-poisoning/ATR-2026-01978-anythingllm-collector-process-filename-path-traversal-delete.yaml +58 -64
  823. package/rules/tool-poisoning/ATR-2026-01979-pandasai-prompt-injection-dunder-sandbox-escape-rce.yaml +60 -72
  824. package/rules/tool-poisoning/ATR-2026-01980-agentic-flow-mcp-tool-param-command-injection.yaml +49 -99
  825. package/rules/tool-poisoning/ATR-2026-01982-dbt-mcp-node-selection-argument-injection.yaml +49 -102
  826. package/rules/tool-poisoning/ATR-2026-01983-mcp-for-stata-log-file-name-command-injection.yaml +43 -110
  827. package/rules/tool-poisoning/ATR-2026-01985-mcp-connect-bridge-unauth-process-spawn-rce.yaml +41 -115
  828. package/rules/tool-poisoning/ATR-2026-01987-langroid-sqlchatagent-prompt-to-sql-rce.yaml +53 -110
  829. package/rules/tool-poisoning/ATR-2026-02021-mcp-inspector-unauthenticated-proxy-rce.yaml +48 -123
  830. package/rules/tool-poisoning/ATR-2026-02022-curxecute-cursor-mcp-json-injected-server-rce.yaml +51 -131
  831. package/rules/tool-poisoning/ATR-2026-02023-escaperoute-filesystem-mcp-prefix-bypass.yaml +48 -129
  832. package/rules/tool-poisoning/ATR-2026-02024-escaperoute-filesystem-mcp-symlink-launchagent.yaml +49 -128
  833. package/rules/tool-poisoning/ATR-2026-02025-mcp-full-schema-poisoning-nondescription-field.yaml +50 -142
  834. package/rules/tool-poisoning/ATR-2026-02027-diagnostic-content-remediation-command-injection.yaml +58 -72
  835. package/rules/tool-poisoning/ATR-2026-02041-shell-injection-echo-marker-poc.yaml +32 -93
  836. package/rules/tool-poisoning/ATR-2026-02102-html-injection-tool-arg-approval-ui-xss.yaml +33 -107
  837. package/rules/tool-poisoning/ATR-2026-02141-mcp-server-config-command-execution.yaml +42 -107
  838. package/rules/tool-poisoning/ATR-2026-02145-python-sandbox-escape-generator-frame-introspection.yaml +36 -105
  839. package/rules/tool-poisoning/ATR-2026-02193-ssrf-ipv6-noncanonical-loopback-bypass.yaml +35 -86
  840. package/rules/tool-poisoning/ATR-2026-02194-go-init-func-process-exec-codegen-rce.yaml +35 -83
  841. package/rules/tool-poisoning/ATR-2026-02233-unscoped-destructive-db-request-nl.yaml +34 -95
  842. package/rules/tool-poisoning/ATR-2026-02260-agentjacking-remediation-framed-execution.yaml +42 -107
  843. package/rules/tool-poisoning/ATR-2026-02263-workflow-sql-template-expression-injection.yaml +35 -119
  844. package/rules/tool-poisoning/ATR-2026-02350-mcp-json-rpc-case-duplicate-key-tool-smuggling.yaml +34 -100
  845. package/rules/tool-poisoning/ATR-2026-02352-imap-search-command-injection-email-tool-args.yaml +32 -93
  846. package/rules/tool-poisoning/ATR-2026-02372-unsigned-task-feed-npm-npx-lifecycle-rce.yaml +39 -101
  847. package/rules/tool-poisoning/ATR-2026-02376-tool-description-conversational-trigger-history-exfil.yaml +33 -84
  848. package/rules/tool-poisoning/ATR-2026-02403-mcp-external-content-missing-spotlighting.yaml +52 -282
  849. package/rules/tool-poisoning/ATR-2026-02514-mcp-server-metadata-url-html-breakout.yaml +105 -0
  850. package/rules/tool-poisoning/ATR-2026-02542-pipeline-query-stage-injection.yaml +95 -0
  851. package/rules/tool-poisoning/ATR-2026-02557-shell-separator-in-path-typed-tool-argument.yaml +112 -0
  852. package/rules/tool-poisoning/ATR-2026-02666-url-userinfo-decoy-host-allowlist-bypass.yaml +101 -0
  853. package/rules/tool-poisoning/ATR-2026-02668-vcs-ref-name-command-substitution.yaml +98 -0
  854. package/rules/tool-poisoning/ATR-2026-02669-query-pipeline-stage-in-identifier-parameter.yaml +88 -0
  855. package/rules/tool-poisoning/ATR-2026-02682-xml-entity-expansion-bomb.yaml +98 -0
  856. package/rules/tool-poisoning/ATR-2026-02707-crlf-header-injection-mail-tool-argument.yaml +88 -0
  857. package/spec/README.md +2 -2
  858. package/spec/atr-correlation-v1.0.md +16 -4
  859. package/spec/atr-profile-v1.0.md +11 -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