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,131 @@
1
+ title: Git Configuration Turned Into an Execution Hook by an Agent
2
+ id: ATR-2026-02530
3
+ rule_version: 1
4
+ status: experimental
5
+ description: |
6
+ Detects an agent tool call that points a git configuration callback key at an EPHEMERAL or INLINE-SHELL value. Several git config keys are not settings but callbacks -- core.fsmonitor, core.sshCommand, core.hooksPath, core.askpass, credential.helper, filter.*.clean/smudge, diff.*.textconv, uploadpack.packObjectsHook. Once one of them holds a command, that command runs on the NEXT ORDINARY GIT OPERATION: a status, a diff, a fetch. No further tool call is needed and nothing in the later invocation looks dangerous.
7
+ Derived from CVE-2026-55607 (Claude Code 2.1.38 to 2.1.163), where worktree handling permitted a worktree named ".git" plus navigation outside the sandbox context, and git fsmonitor execution during worktree operations was the step that turned a directory-confusion trick into code execution outside the seatbelt sandbox. The advisory states that reliable exploitation required the user to clone a malicious repository containing prompt injection content -- so the config write arrives as an agent action taken on behalf of injected text, which is exactly what this rule reads.
8
+ THE VALUE REQUIREMENT IS THE PRECISION, AND IT IS NOT "LOOKS LIKE A PROGRAM". An earlier draft of this rule required only that the value be a path or an interpreter. That was measured against realistic benign input and fired on 20 of 26 samples -- because a program path is the NORMAL, CORRECT value for every one of these keys. `core.editor=/usr/bin/vim`, `core.pager=/usr/bin/less`, `credential.helper=/usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret` (git's own documented Linux helper), `filter.nbstripout.clean='python3 -m nbstripout'` (the standard Jupyter setup) and `core.fsmonitor=/opt/homebrew/bin/watchman` all matched. "Points at a program" is what these keys are FOR; it carries no signal at all.
9
+ So the value must instead look like STAGED ATTACK CODE:
10
+ - a path under an ephemeral directory (/tmp, /var/tmp, /dev/shm,
11
+ /private/tmp, /var/folders, ~/.cache, $TMPDIR) -- where a payload dropped
12
+ moments earlier in the same session lives, and where no package manager,
13
+ no distro and no developer ever installs a durable git helper; or
14
+ - an inline interpreter invocation or fetch-and-run (`sh -c`, `bash -c`,
15
+ `python -c`, `perl -e`, `node -e`, `eval`, `base64 -d`, curl, wget, nc)
16
+ -- a command literal rather than a reference to an installed tool.
17
+
18
+ KEYS DELIBERATELY DROPPED, for measured reasons. core.editor, core.pager and sequence.editor were in the first draft and contradict this rule's own thesis: they do NOT run on the next ordinary git operation, they run when a human interactively commits or reads a log, in the foreground, where the user sees them. They also carry the densest benign population of any key here. Likewise mergetool.*.cmd and difftool.*.cmd fire only on explicit invocation. Removing them cost no true positive and removed nine measured false positives.
19
+ ALSO COVERED: the one-shot `git -c key=cmd` form, and the same keys written directly into a config file body.
20
+ NOT COVERED, deliberately, and both for measured reasons.
21
+ - `git worktree add ./.git`, the directory-confusion half of the same CVE,
22
+ is already detected by ATR-2026-02302 (Git Worktree Created With
23
+ Reserved Name .git). A draft of this rule carried that condition; it was
24
+ removed once the cross-check showed 02302 firing on it.
25
+ - Git hook FILES (.git/hooks/pre-commit and friends) are a neighbouring
26
+ persistence technique with a different shape and a much denser benign
27
+ population -- husky, pre-commit and lefthook all write there. Left out
28
+ rather than folded in badly.
29
+ author: ATR Community
30
+ date: 2026/08/23
31
+ schema_version: '0.1'
32
+ detection_tier: pattern
33
+ maturity: test
34
+ severity: high
35
+ references:
36
+ cve:
37
+ - CVE-2026-55607
38
+ cwe:
39
+ - CWE-78
40
+ - CWE-59
41
+ owasp_llm:
42
+ - LLM01:2025
43
+ owasp_agentic:
44
+ - ASI04:2026
45
+ mitre_atlas:
46
+ - AML.T0051.001 - Indirect
47
+ mitre_attack:
48
+ - T1546 - Event Triggered Execution
49
+ compliance:
50
+ owasp_llm:
51
+ - id: LLM01:2025
52
+ context: The advisory names a cloned repository carrying prompt-injection content as the precondition, so the configuration write is an injected instruction executed by the agent.
53
+ strength: primary
54
+ owasp_agentic:
55
+ - id: ASI04:2026
56
+ context: 'Persistence outside the session: the callback survives in the repository or user configuration and fires on later, unrelated git operations.'
57
+ strength: primary
58
+ eu_ai_act:
59
+ - article: '15'
60
+ context: Article 15 resilience must hold against an agent being induced to reconfigure its own execution environment so that later benign operations run attacker code.
61
+ strength: primary
62
+ - article: '14'
63
+ context: A reviewer approving a later `git status` cannot see the callback installed earlier; detecting the install is what keeps oversight meaningful across turns.
64
+ strength: secondary
65
+ - article: '9'
66
+ context: Environment-persistence through developer tooling is a foreseeable risk for coding agents and belongs in the risk register with continuous monitoring.
67
+ strength: secondary
68
+ nist_ai_rmf:
69
+ - function: Manage
70
+ subcategory: MG.2.3
71
+ context: Runtime treatment for the risk that an agent installs a deferred execution callback in its own working environment.
72
+ strength: primary
73
+ - function: Map
74
+ subcategory: MP.5.1
75
+ context: 'Catalogues deferred, trigger-based execution as distinct from direct command execution: the dangerous act and the dangerous effect are separated in time.'
76
+ strength: secondary
77
+ - function: Measure
78
+ subcategory: MS.2.7
79
+ context: Detection events supply the security evidence for the agent's control over its own toolchain configuration.
80
+ strength: secondary
81
+ iso_42001:
82
+ - clause: '8.1'
83
+ context: Operational control over an AI system with developer tooling access requires that the system cannot silently arm its environment to execute later.
84
+ strength: primary
85
+ - clause: '8.4'
86
+ context: Impact assessment for a coding agent must include sandbox escape by environment reconfiguration; these detections are the supporting evidence.
87
+ strength: secondary
88
+ - clause: '6.2'
89
+ context: Preventing persistent, deferred code execution installed by the agent is an AIMS security objective, operationalised here as a runtime detection.
90
+ strength: secondary
91
+ tags:
92
+ category: privilege-escalation
93
+ subcategory: vcs-config-execution-hook
94
+ scan_target: both
95
+ confidence: medium
96
+ suppress_in_code_blocks: true
97
+ agent_source:
98
+ type: tool_call
99
+ framework:
100
+ - any
101
+ provider:
102
+ - any
103
+ detection:
104
+ condition: any
105
+ conditions:
106
+ - field: tool_args
107
+ operator: regex
108
+ value: (?i)(?:^|[^\x60])\bgit\s+(?:-[a-zA-Z]\s+\S{1,40}\s+|--\S{1,24}\s+){0,3}config\s+(?:--\S{1,16}\s+){0,2}['\"]?(?:core\.(?:fsmonitor|sshcommand|hookspath|askpass)|credential\.helper|(?:diff|merge)\.[\w.-]{1,32}\.(?:textconv|driver)|filter\.[\w.-]{1,32}\.(?:clean|smudge|process)|uploadpack\.packobjectshook)['\"]?\s*[= ]\s*['\"]?\s*(?:(?:/private)?/(?:tmp|var/tmp|dev/shm)/|\b(?:sh|bash|zsh|dash)\b\s{1,4}-c|\b(?:python[23]?|perl|ruby|node)\b\s{1,4}-[ce]\b|\b(?:curl|wget|eval|nc)\s)
109
+ description: A git callback key is set to a staged payload path or an inline interpreter command, arming code that runs on the next ordinary git operation
110
+ - field: tool_args
111
+ operator: regex
112
+ value: (?i)(?:^|[^\x60])\bgit\s+-c\s+['\"]?(?:core\.(?:fsmonitor|sshcommand|hookspath|askpass)|credential\.helper|(?:diff|merge)\.[\w.-]{1,32}\.(?:textconv|driver)|filter\.[\w.-]{1,32}\.(?:clean|smudge))\s*=\s*['\"]?\s*(?:(?:/private)?/(?:tmp|var/tmp|dev/shm)/|\b(?:sh|bash|zsh|dash)\b\s{1,4}-c|\b(?:python[23]?|perl|ruby|node)\b\s{1,4}-[ce]\b|\b(?:curl|wget|eval|nc)\s)
113
+ description: The one-shot -c form arms the same callback for the duration of a single git invocation, leaving no persistent config entry to review
114
+ - field: tool_args
115
+ operator: regex
116
+ value: (?i)\[(?:core|filter\s+\"[^\"\]]{1,32}\"|diff\s+\"[^\"\]]{1,32}\")\][\s\S]{0,120}\b(?:fsmonitor|sshcommand|hookspath|askpass|textconv|packobjectshook|clean|smudge)\s*=\s*['\"]?\s*(?:(?:/private)?/(?:tmp|var/tmp|dev/shm)/|\b(?:sh|bash|zsh|dash)\b\s{1,4}-c|\b(?:python[23]?|perl|ruby|node)\b\s{1,4}-[ce]\b|\b(?:curl|wget|eval|nc)\s)
117
+ description: A git config file is written with a callback key pointing at a staged payload or inline shell, bypassing the git config command entirely
118
+ false_positives:
119
+ - CI that legitimately stages an ssh wrapper or askpass helper in a temp directory for the life of one job, e.g. `git config core.sshCommand /tmp/ssh-wrap.sh`. This is genuinely the same shape as the attack and is expected to match; the ephemeral location is the whole signal and cannot distinguish a friendly script from a hostile one
120
+ - 'Security documentation that quotes the arming command as BARE PROSE with no backticks and no fence, e.g. a SECURITY.md paragraph written through a write_file tool call. Measured residue: code-block suppression catches the backticked and fenced forms, which is how documentation is written the overwhelming majority of the time, but unformatted prose still matches'
121
+ - A durable helper deliberately installed under /var/tmp, which is a temp root but survives reboot. Pointing a git callback there is anomalous regardless of intent, so it matches
122
+ - A repository bootstrap script that fetches a filter helper with curl and wires it into filter.*.clean in the same command
123
+ response:
124
+ actions:
125
+ - alert
126
+ - escalate
127
+ actions_rationale: 'response-action eligibility (docs/RESPONSE-ACTION-ELIGIBILITY.md): no FP measurement on the benign corpus; ceiling = observe. Removed block_tool(interrupt). Detection unchanged — recall cost is zero.'
128
+ auto_response_threshold: high
129
+ message_template: |
130
+ [ATR-2026-02530] A git configuration callback key was pointed at a program. It will execute on the next ordinary git operation, not on this tool call (CVE-2026-55607 shape). Inspect the repository this agent was working in before allowing further git commands.
131
+ confidence: 70
@@ -0,0 +1,110 @@
1
+ title: Kusto Pipeline Injection Through a Table Identifier Parameter
2
+ id: ATR-2026-02531
3
+ rule_version: 2
4
+ status: experimental
5
+ description: |
6
+ Detects a Kusto (KQL) pipeline smuggled into an MCP tool parameter whose schema declares it to be a bare table or database identifier: the value carries a pipe character followed by another KQL operator, so the tool executes more than the single table it was asked about.
7
+ Derived from CVE-2026-33980 (Azure Data Explorer MCP Server through 0.1.1), where the `table_name` parameter of get_table_schema, sample_table_data and get_table_details is interpolated straight into KQL via f-strings with no validation. The advisory names a prompt-injected AI agent, not only a direct attacker, as the party that reaches the vulnerable handler -- so the injected pipeline arrives as an ordinary tool argument on a tool whose name says "sample" or "schema".
8
+ WHY THIS IS NOT THE SQL RULE. KQL is not SQL and shares none of its injection surface: there is no quote-and-UNION break-out to look for, because a Kusto table reference is a bare identifier and the injection is a pipe character followed by another operator. Every SQL-injection pattern in the corpus keys on quote break-out, comment markers, or UNION SELECT. Measured before this rule was written, a table_name value of "Logs | union externaldata(x:string)[@'https://...']" produced zero matches across the entire rule set.
9
+ WHAT THIS RULE DELIBERATELY DOES NOT DETECT, and the measurement that decided it. Rule version 1 carried two further conditions -- a bare `externaldata` operator given a remote URI, and `evaluate http_request` / `http_request_post` -- on the theory that they were the ingestion and exfiltration halves of the reach. Both were deleted after adversarial review, because both match the documented, correct, publicly published spelling of supported Kusto features and carry no attacker signal a single event can see:
10
+ - The externaldata condition fired on Microsoft Learn's own operator
11
+ reference page, on a first-party lookup-blob join, and on the widely
12
+ republished Sentinel hunting query that enriches CommonSecurityLog with
13
+ the public Tor exit-node list. The engine cannot tell an attacker-chosen
14
+ URI from a team's own storage account.
15
+ - The http_request condition fired on Microsoft Learn's plugin reference
16
+ page and on an ordinary enrichment query. The plugin is governed by the
17
+ cluster's callout policy, which the engine also cannot see.
18
+ Eleven of fourteen adversarial benign inputs fired against version 1, including this rule's own file. Version 2 keeps only the parameter-shaped condition, where the tool's own schema supplies the missing context: it said the argument was an identifier, and an identifier has no pipe in it.
19
+ A management-command condition (.export, .ingest, .drop, .alter) was removed even earlier, for the same reason: against the 3,042-sample skills-sh corpus it fired fourteen times on a single "eventhouse-authoring-cli" skill whose entire declared purpose is issuing those commands against Fabric KQL databases.
20
+ BOUNDARY. A tool that genuinely accepts a KQL fragment in a parameter it nonetheless named `table_name` will match. That is a schema bug on the server side and is worth surfacing. Advisory text that quotes the payload in its JSON-argument form will also match, as it does for every signature rule in the corpus.
21
+ author: ATR Community
22
+ date: 2026/08/23
23
+ schema_version: '0.1'
24
+ detection_tier: pattern
25
+ maturity: test
26
+ severity: high
27
+ references:
28
+ cve:
29
+ - CVE-2026-33980
30
+ cwe:
31
+ - CWE-943
32
+ - CWE-918
33
+ owasp_llm:
34
+ - LLM05:2025
35
+ owasp_agentic:
36
+ - ASI02:2026
37
+ mitre_atlas:
38
+ - AML.T0051.001 - Indirect
39
+ - AML.T0053 - LLM Plugin Compromise
40
+ compliance:
41
+ owasp_llm:
42
+ - id: LLM05:2025
43
+ context: A model-supplied parameter is interpolated into a query string and executed; the handling of the model's output is where the whole vulnerability lives.
44
+ strength: primary
45
+ owasp_agentic:
46
+ - id: ASI02:2026
47
+ context: The schema or sampling tool is invoked as designed while its single argument silently widens what the tool executes.
48
+ strength: primary
49
+ eu_ai_act:
50
+ - article: '15'
51
+ context: Article 15 robustness for an analytics agent means the query scope it was granted holds against the content of its own generated parameters.
52
+ strength: primary
53
+ - article: '9'
54
+ context: Query-language injection through agent tool parameters is a foreseeable risk for any data-platform MCP server and needs the continuous monitoring Article 9 requires.
55
+ strength: secondary
56
+ - article: '12'
57
+ context: Logging the operator a generated query attempted to reach gives the record Article 12 requires to reconstruct what data was touched.
58
+ strength: secondary
59
+ nist_ai_rmf:
60
+ - function: Manage
61
+ subcategory: MG.2.3
62
+ context: Runtime treatment for the risk that an agent's analytics query reaches a different data source than the one it was scoped to.
63
+ strength: primary
64
+ - function: Measure
65
+ subcategory: MS.2.7
66
+ context: Detection events document the security of the parameter-to-query boundary in data-platform integrations.
67
+ strength: secondary
68
+ - function: Map
69
+ subcategory: MP.5.1
70
+ context: 'Records Kusto pipeline injection as distinct from SQL injection: no quoting break-out is involved, so SQL-shaped controls do not apply.'
71
+ strength: secondary
72
+ iso_42001:
73
+ - clause: '8.1'
74
+ context: Operational control of an analytics agent requires that its granted table scope cannot be widened by the parameter it supplies.
75
+ strength: primary
76
+ - clause: '8.4'
77
+ context: Impact assessment must cover cross-source data reach and outbound requests from the data platform; these detections are the evidence.
78
+ strength: secondary
79
+ - clause: '6.2'
80
+ context: Keeping an analytics agent inside its authorised data scope is an AIMS security objective, operationalised here as a runtime detection.
81
+ strength: secondary
82
+ tags:
83
+ category: privilege-escalation
84
+ subcategory: analytics-query-scope-escape
85
+ scan_target: both
86
+ confidence: medium
87
+ agent_source:
88
+ type: mcp_exchange
89
+ framework:
90
+ - any
91
+ provider:
92
+ - any
93
+ detection:
94
+ condition: any
95
+ conditions:
96
+ - field: content
97
+ operator: regex
98
+ value: (?i)"(?:table_?name|database_?name)"\s*:\s*"[\w.\-]{0,48}\s*\|\s*(?:union|externaldata|evaluate|search|print|invoke|mv-expand|find|\.show|\.export|\.ingest)[\s(]
99
+ description: A table or database identifier parameter continues with a pipe and another Kusto operator taking an operand — the CVE-2026-33980 injection point
100
+ false_positives:
101
+ - A data-platform MCP server whose parameter is named table_name but documented to accept a KQL fragment. The rule fires; the underlying schema is what should change
102
+ - Advisory or regression-test text that quotes the injected argument in its literal JSON form, as this rule's own test_cases block does
103
+ response:
104
+ actions:
105
+ - alert
106
+ actions_rationale: 'response-action eligibility (docs/RESPONSE-ACTION-ELIGIBILITY.md): no FP measurement on the benign corpus; ceiling = observe. Removed block_tool(interrupt). Detection unchanged — recall cost is zero.'
107
+ auto_response_threshold: high
108
+ message_template: |
109
+ [ATR-2026-02531] An MCP tool argument declared to be a Kusto table or database identifier carries a pipe and a further KQL operator, so the executed query reaches past the named table (CVE-2026-33980 shape). Validate the identifier before interpolating it into the query.
110
+ confidence: 75
@@ -0,0 +1,116 @@
1
+ title: 'Argument Injection: Execution-Bearing CLI Option Smuggled into a Tool Data Parameter'
2
+ id: ATR-2026-02601
3
+ rule_version: 1
4
+ status: experimental
5
+ description: |
6
+ Detects the argument-injection shape behind CVE-2026-25130 (CAI find_file): a value that a tool documents as DATA -- a filename, a glob, a search term, an args string -- begins with a dash and therefore reaches the underlying binary as an OPTION, and the option it reaches is one that executes a program. No shell metacharacter is involved anywhere, which is why the existing shell metacharacter rule ATR-2026-00111 stays silent on the whole family: verified against the engine, the same payload only fires 00111 once a pipe is added.
7
+ WHAT MAKES IT PRECISE, AND WHAT THAT COSTS. `-exec` on its own is not the signal -- `find . -name "*.pyc" -exec rm -f {} \;` is a thing developers and agents legitimately do all day, and it appears in the find(1) manual, in Makefile lint targets and in CI logs. Three things have to line up before this rule fires: (a) the dash-leading value sits in a parameter NAMED as data (args/pattern/path/query/...; `command`, `cmd` and `script` are excluded because a shell tool is supposed to receive options), (b) the option is one with execution or file-write semantics, and (c) the thing it executes is an INTERPRETER or network client (sh, bash, python, perl, node, nc, curl, wget) or lives in a world-writable scratch directory. `-exec rm`, `-exec chmod`, `-exec shellcheck`, `-exec gzip {} +` are all deliberately NOT claimed.
8
+ The same three-part test is applied to the archive and transport options in the same family: tar --checkpoint-action=exec=, --to-command=, --use-compress-program=, unzip's --unzip-command=, rsync's --rsh=, and find's -fprintf aimed at a login/startup path. GNU tar's own manual example (--checkpoint-action=exec=/sbin/cdrom-eject) and rsync --rsh=ssh are measured true negatives; --checkpoint-action=exec=/tmp/stage.sh and --rsh=sh are not.
9
+ NOT COVERED ON PURPOSE. `--upload-pack=` / `ext::` (git transport) and `--pre=` / `-oProxyCommand=` (ripgrep, ssh) belong to the same class but are left to rules scoped to those tools; folding every binary's option table into one regex would trade the precision above for a list nobody can review.
10
+ author: ATR Community
11
+ date: 2026/08/23
12
+ schema_version: '0.1'
13
+ detection_tier: pattern
14
+ maturity: test
15
+ severity: high
16
+ references:
17
+ owasp_llm:
18
+ - LLM06:2025
19
+ owasp_agentic:
20
+ - ASI03:2026
21
+ mitre_atlas:
22
+ - AML.T0053 - LLM Plugin Compromise
23
+ - AML.T0051 - LLM Prompt Injection
24
+ cve:
25
+ - CVE-2026-25130
26
+ compliance:
27
+ owasp_agentic:
28
+ - id: ASI03:2026
29
+ context: A tool the agent is authorised to use for reading files is turned into arbitrary command execution purely through the shape of its argument, which is privilege escalation without any new permission being granted.
30
+ strength: primary
31
+ owasp_llm:
32
+ - id: LLM06:2025
33
+ context: 'Excessive agency: the effective capability of a read-only tool exceeds what its schema and description advertise, and the gap is reachable from model-controlled input.'
34
+ strength: primary
35
+ eu_ai_act:
36
+ - article: '15'
37
+ context: 'Article 15 cybersecurity: the rule detects an input crafted so that a component interprets data as control, the canonical injection failure the article requires resilience against.'
38
+ strength: primary
39
+ - article: '9'
40
+ context: Tool argument injection is a documented risk class for tool-using agents; detections are the monitoring output Article 9 risk management requires.
41
+ strength: secondary
42
+ - article: '14'
43
+ context: A human overseeing a file-search tool cannot be expected to notice that its argument reaches -exec; surfacing the event is what makes the oversight in Article 14 effective.
44
+ strength: secondary
45
+ nist_ai_rmf:
46
+ - function: Manage
47
+ subcategory: MG.2.3
48
+ context: Runtime treatment for the risk that an agent tool's real capability exceeds its declared one.
49
+ strength: primary
50
+ - function: Map
51
+ subcategory: MP.5.1
52
+ context: Catalogues option-smuggling as a distinct risk from shell-metacharacter injection, which existing controls already cover.
53
+ strength: secondary
54
+ - function: Measure
55
+ subcategory: MS.2.7
56
+ context: Detection events document the security and resilience of the tool boundary as MEASURE 2.7 requires.
57
+ strength: secondary
58
+ iso_42001:
59
+ - clause: '8.1'
60
+ context: 'Clause 8.1 operational control: the boundary between a tool''s data inputs and its control inputs is an operational control this rule verifies at runtime.'
61
+ strength: primary
62
+ - clause: '6.2'
63
+ context: Preventing tool-mediated command execution is an AIMS information security objective under clause 6.2.
64
+ strength: secondary
65
+ - clause: '8.4'
66
+ context: Impact assessment under 8.4 must account for third-party CLI binaries invoked on the agent's behalf; these events are the evidence for that path.
67
+ strength: secondary
68
+ tags:
69
+ category: privilege-escalation
70
+ subcategory: argument-injection
71
+ scan_target: both
72
+ confidence: medium
73
+ agent_source:
74
+ type: mcp_exchange
75
+ framework:
76
+ - any
77
+ provider:
78
+ - any
79
+ detection:
80
+ conditions:
81
+ - field: content
82
+ operator: regex
83
+ value: '["'']?(?:args?|arguments|argv|options?|opts|pattern|glob|name|filename|file_?name|path|filepath|dir|directory|query|search|search_?term|term|target|keyword|input|value|expr|expression)["'']?\s*[:=]\s*["'']\s{0,4}-[^"\n]{0,150}?\B-exec(?:dir)?\s+["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b'
84
+ description: Dash-leading data parameter whose value reaches find -exec/-execdir with an interpreter or network client
85
+ - field: tool_args
86
+ operator: regex
87
+ value: '["'']?(?:args?|arguments|argv|options?|opts|pattern|glob|name|filename|file_?name|path|filepath|dir|directory|query|search|search_?term|term|target|keyword|input|value|expr|expression)["'']?\s*[:=]\s*["'']\s{0,4}-[^"\n]{0,150}?\B-exec(?:dir)?\s+["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b'
88
+ description: Same, in the JSON-encoded tool argument object
89
+ - field: content
90
+ operator: regex
91
+ value: '["'']?(?:args?|arguments|argv|options?|opts|pattern|glob|name|filename|file_?name|path|filepath|dir|directory|query|search|search_?term|term|target|keyword|input|value|expr|expression)["'']?\s*[:=]\s*["'']\s{0,4}-[^"\n]{0,180}?-{0,2}(?:checkpoint-action\s*=\s*exec=?\s*(?:["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|["'']?(?:/tmp/|/var/tmp/|/dev/shm/|~/|\$HOME/))|to-command\s*=\s*(?:["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|["'']?(?:/tmp/|/var/tmp/|/dev/shm/|~/|\$HOME/))|use-compress-program\s*=\s*(?:["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|["'']?(?:/tmp/|/var/tmp/|/dev/shm/|~/|\$HOME/))|unzip-command\s*=\s*(?:["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|["'']?(?:/tmp/|/var/tmp/|/dev/shm/|~/|\$HOME/))|rsh\s*=\s*["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|fprintf?\s+["'']?(?:~|\$HOME|/home/|/root/|/etc/|/var/spool/cron))'
92
+ description: Dash-leading data parameter carrying an archive/transport option that runs a program or writes a login file
93
+ - field: tool_args
94
+ operator: regex
95
+ value: '["'']?(?:args?|arguments|argv|options?|opts|pattern|glob|name|filename|file_?name|path|filepath|dir|directory|query|search|search_?term|term|target|keyword|input|value|expr|expression)["'']?\s*[:=]\s*["'']\s{0,4}-[^"\n]{0,180}?-{0,2}(?:checkpoint-action\s*=\s*exec=?\s*(?:["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|["'']?(?:/tmp/|/var/tmp/|/dev/shm/|~/|\$HOME/))|to-command\s*=\s*(?:["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|["'']?(?:/tmp/|/var/tmp/|/dev/shm/|~/|\$HOME/))|use-compress-program\s*=\s*(?:["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|["'']?(?:/tmp/|/var/tmp/|/dev/shm/|~/|\$HOME/))|unzip-command\s*=\s*(?:["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|["'']?(?:/tmp/|/var/tmp/|/dev/shm/|~/|\$HOME/))|rsh\s*=\s*["'']?(?:[^"''\s]{0,40}/)?(?:sh|bash|zsh|dash|ksh|python\d?(?:\.\d+)?|perl|ruby|php|node|nc|ncat|netcat|curl|wget|osascript|powershell|pwsh)\b|fprintf?\s+["'']?(?:~|\$HOME|/home/|/root/|/etc/|/var/spool/cron))'
96
+ description: Same, in the JSON-encoded tool argument object
97
+ condition: any
98
+ false_positives:
99
+ - 'DEPRECATED 2026-08-23 BY ADVERSARIAL REVIEW. The find -exec branch cannot separate attack from benign inside a single event. Measured on the live engine: 30 of 40 realistic benign inputs fired, including the most-copied find recipe there is -- `-exec php -l`, `-exec python -m py_compile`, `-exec node --check`, `-exec ruby -c`, `-exec perl -c`, `-exec bash -n` -- and GNU findutils OWN recommended safe form, `-exec sh -c` / `-execdir sh -c`. Those strings are character-for-character the same shape as the declared true positives; what makes the real one an attack is that the parameter was model-controlled, and that fact is not in the event'
100
+ - 'The one narrowing that cleared those FPs -- requiring the executed program to be reached by absolute path -- was measured and rejected as overfitting to the six declared true positives: with it applied, deleting the four characters `/bin/` from TP1, TP2 and TP3 evaded the rule entirely (all three went clean), as did `./sh`. It traded a measurable false-positive rate for a one-edit evasion'
101
+ - 'Premise (a) of the rule, that the parameter is NAMED as data, does not hold. args/arguments/argv/options/opts are the canonical names for RAW ARGUMENT PASSTHROUGH. The rule''s own true negatives concede it: TN 3, 4 and 5 are all {tool: run_find, args: -... -exec ...} and are negative only because of the program name, never the parameter name. With (a) contributing nothing the rule reduces to `an interpreter name appears after -exec`, which is a keyword list'
102
+ - The -fprintf branch claimed to detect a login/startup path but tested only the DIRECTORY PREFIX, so `-fprint /home/ci/build-manifest.txt`, `-fprintf /home/deploy/objects.txt`, `-fprintf ~/reports/changed.txt` and `-fprintf /root/suid-audit.txt` all fired on plain manifest generation. `fprintf?` also matches bare `-fprint`, which has no execution semantics at all
103
+ - 'The claimed 13,246-sample 0 FP was a near-zero measurement: only 69 of the 12,830 samples in data/benign-corpus-extended contain `-exec` at any position, and 4 contain `fprint`. A skills/npm/pypi/arxiv corpus does not carry find command lines inside JSON tool calls, so it could not have charged this rule'
104
+ - 'Fires on a detection project''s own rule and test files, e.g. a YAML line `value: ''-name x -exec /bin/sh -c id ;''`, because `value` is in the parameter-name list'
105
+ - 'An awk BEGIN system() condition was authored, measured against the benign corpus, and REMOVED: it fired on three penetration-testing reference skills that quote GTFOBins one-liners. Inline interpreter code is a different shape from argument injection and did not belong in this rule'
106
+ - 'An operations tool that deliberately exposes raw find/tar arguments and is genuinely asked to run an interpreter over the matches (measured: -exec rm / chmod / shellcheck / gzip do NOT fire; -exec /bin/sh does, by design)'
107
+ - A backup script whose tar checkpoint action legitimately runs a helper staged in /tmp
108
+ - Security writing that quotes the CVE-2026-25130 proof of concept inside a JSON tool call verbatim
109
+ response:
110
+ actions:
111
+ - alert
112
+ - snapshot
113
+ auto_response_threshold: high
114
+ message_template: |
115
+ [ATR-2026-02601] A tool parameter documented as data carries a dash-leading value that reaches an execution-bearing CLI option (find -exec, tar --checkpoint-action=exec, --to-command, rsync --rsh). No shell metacharacter is required for this to run code. Verify the value's origin before allowing the call.
116
+ confidence: 70
@@ -0,0 +1,101 @@
1
+ title: 'Code Execution via data: URI Module Specifier Handed to import()'
2
+ id: ATR-2026-02620
3
+ rule_version: 1
4
+ status: experimental
5
+ description: |
6
+ Detects code execution smuggled through the SPECIFIER of a dynamic import() rather than through eval() or new Function(). `import('data:text/javascript,<code>')` is a fully supported ES module loader path in Node and in browsers: the inline body becomes a real module and runs at import time. Attacker-controlled module ids reaching import() are the primitive behind CVE-2025-67489 (@vitejs/plugin-rsc RCE through unsafe dynamic imports in RSC server function APIs), where the attacker never needed eval to be reachable.
7
+ MEASURED GAP. The payload held as true_positive #1 -- an inline data: module whose body fetches an absolute URL with a process.env token appended -- evaluated through the engine matched only ATR-2026-00002 (generic indirect prompt injection) on llm_input/llm_output, and on tool_call matched only ATR-2026-00161/00012/00061 -- none of which key on the execution primitive. The eval() sibling of the same payload fires ATR-2026-00110/00126, so the eval-shaped half of this family is covered and the import-shaped half was not.
8
+ SCOPE, DELIBERATELY NARROWED. A bare `import('data:text/javascript,...')` is NOT flagged. That construct is documented in the Node ESM manual and is the standard way tooling materialises a module from a string, since there is no eval() for modules -- test-runner ESM shims, loader hooks and REPL glue all emit it, and so does the documentation teaching it. Flagging the bare form would fire on Node's own docs. What this rule requires is the inline module body ALSO reaching for a capability an inline shim has no reason to touch: process/environment, an outbound request, or a child process. That conjunction, not the data: URI, is where the precision comes from.
9
+ KNOWN GAP, DELIBERATELY LEFT OPEN. The base64-bodied form (`import('data:text/javascript;base64,...')`) is NOT covered. A condition on it existed in review and was removed: it fires on ordinary bundler output, because esbuild's `--loader:.js=dataurl`, webpack's `type: "asset/inline"` and Storybook's inline-CSF emit exactly `import("data:text/javascript;base64, <24+ chars>")` for wholly benign modules, and nothing inside a single event distinguishes those from a payload -- the engine only base64-decodes on the scanSkill() path, never in evaluate(). Flagging every inline base64 module would charge every bundler user for the evasion. So base64 bodies are an admitted blind spot rather than a broad condition.
10
+ BRIDGE, AND WHY IT IS SHAPED THIS WAY. The span between the specifier's comma and the capability token may not cross a raw quote or newline, and may cross at most ONE escaped quote, immediately before the capability token. Both limits are load-bearing. Without the first, the match walks out of the specifier into surrounding prose. Without the second, a JSON-encoded tool argument -- which is how production presents tool_args -- lets `\"` end the specifier and the match continues through ordinary English into an unrelated `process.env` further down the line. The opening quote is REQUIRED for the same reason: `import(data:text/javascript,...)` unquoted is not valid JavaScript, it only ever occurs in prose, and allowing it made the rule fire on changelogs, markdown tables, CI logs, Semgrep/Sigma rules that detect this very attack, and on this rule's own MEASURED GAP paragraph. The body must also START immediately after the comma with a non-whitespace character, which is what a data: URI looks like; a truncated log line that opens the specifier and never closes it (`import("data:text/javascript, at Module.load (...) - check process.env.NODE_OPTIONS`) otherwise walked straight into prose. An attacker who inserts a leading space evades this, and that is the price paid for the log-noise class.
11
+ WHAT STILL FIRES ON BENIGN TEXT, MEASURED. Re-measured after the above on 12,931 benign corpus samples (data/benign-corpus-extended/, all shapes plus scanSkill): 0 fired. On 44 adversarially authored benign inputs, 5 still fire, and all 5 are the irreducible class -- text that contains a COMPLETE, correctly quoted payload, or an inline module that genuinely reaches a capability. They are: this rule's own MEASURED GAP paragraph and true_positive fixtures; a scanner's unit-test fixture carrying the payload as a string; a non-English document quoting the payload verbatim to warn against it; an inline module that reads `process.env.NODE_ENV` for a build; and an ESM shim whose inline body calls `require(`. Note that `process.env` alone carries NO true positive in this rule's fixture set -- every true positive matches on fetch(//, globalThis.process, child_process, sendBeacon or require( first -- so that alternative is the weakest part of the conjunction and is kept only because an inline module that returns the environment to its caller is a real attack shape.
12
+ author: ATR Community
13
+ date: 2026/08/23
14
+ schema_version: '0.1'
15
+ detection_tier: pattern
16
+ maturity: test
17
+ severity: high
18
+ references:
19
+ cve:
20
+ - CVE-2025-67489
21
+ owasp_llm:
22
+ - LLM05:2025
23
+ owasp_agentic:
24
+ - ASI04:2026
25
+ mitre_atlas:
26
+ - AML.T0053 - LLM Plugin Compromise
27
+ - AML.T0011 - User Execution
28
+ compliance:
29
+ owasp_agentic:
30
+ - id: ASI04:2026
31
+ context: An attacker-controlled module specifier turns a data-handling path into an execution path, which is unexpected code execution inside the agent's own runtime.
32
+ strength: primary
33
+ owasp_llm:
34
+ - id: LLM05:2025
35
+ context: 'Improper output handling: a string that reached a module loader is executed as code rather than treated as data.'
36
+ strength: primary
37
+ eu_ai_act:
38
+ - article: '15'
39
+ context: Article 15 requires high-risk systems to be resilient against attempts to alter their behaviour; executing an attacker-supplied inline module alters the system's behaviour at runtime.
40
+ strength: primary
41
+ - article: '9'
42
+ context: Code execution through a module loader is a risk this rule surfaces as the monitoring evidence Article 9 risk management requires.
43
+ strength: secondary
44
+ - article: '12'
45
+ context: Detection events give the automatic recording of execution attempts that Article 12 logging expects.
46
+ strength: secondary
47
+ nist_ai_rmf:
48
+ - function: Manage
49
+ subcategory: MG.2.3
50
+ context: Runtime treatment of the risk that an agent's module loader is used as an execution primitive.
51
+ strength: primary
52
+ - function: Map
53
+ subcategory: MP.5.1
54
+ context: Catalogues specifier-borne execution as a distinct risk from eval-borne execution, which is the gap this rule closes.
55
+ strength: secondary
56
+ - function: Measure
57
+ subcategory: MS.2.7
58
+ context: Provides the security and resilience evidence MEASURE 2.7 asks to be documented for code-execution attempts.
59
+ strength: secondary
60
+ iso_42001:
61
+ - clause: '8.1'
62
+ context: 'Clause 8.1 covers control of operational processes; an inline module fetched from a data: URI enters the runtime without any of the review the supply chain otherwise receives.'
63
+ strength: primary
64
+ - clause: '6.2'
65
+ context: Detecting loader-borne code execution is an AIMS information security objective under clause 6.2, operationalised as a runtime control.
66
+ strength: secondary
67
+ - clause: '8.4'
68
+ context: Impact assessment under clause 8.4 must account for arbitrary code running with the agent's own privileges; these events are that path's monitoring evidence.
69
+ strength: secondary
70
+ tags:
71
+ category: privilege-escalation
72
+ subcategory: module-loader-execution
73
+ scan_target: both
74
+ confidence: medium
75
+ agent_source:
76
+ type: mcp_exchange
77
+ framework:
78
+ - any
79
+ provider:
80
+ - any
81
+ detection:
82
+ conditions:
83
+ - field: content
84
+ operator: regex
85
+ value: (?i)\bimport\s*\(\s*(?:\\{0,2}["'`])\s*data:\s*(?:text|application)/(?:x-)?(?:java|ecma)script\s*[,;](?:(?:\\{1,3}["'`])?(?:process\s*\.\s*env|globalThis\s*\.\s*process|child_process|\bfetch\s*\(\s*(?:\\{0,2}["'`])?\s*(?:https?:)?//|sendBeacon|XMLHttpRequest|\bexecSync\b|\bspawnSync\b|\brequire\s*\(|\beval\s*\()|[^\s"'`\\\n](?:[^"'`\\\n]|\\[^"'`\n]){0,39}(?:\\{1,3}["'`])?(?:process\s*\.\s*env|globalThis\s*\.\s*process|child_process|\bfetch\s*\(\s*(?:\\{0,2}["'`])?\s*(?:https?:)?//|sendBeacon|XMLHttpRequest|\bexecSync\b|\bspawnSync\b|\brequire\s*\(|\beval\s*\())
86
+ description: 'Dynamic import of a data: URI JavaScript module whose inline body touches process/env, an outbound request, or a child process'
87
+ condition: any
88
+ false_positives:
89
+ - 'Tooling that materialises a module from a string and legitimately needs process.env inside it -- loader hooks, test-runner ESM shims, bundler virtual modules. Measured as the closest benign shape and the reason the bare data: form is not flagged.'
90
+ - 'Documentation or a security article that quotes a complete, correctly quoted data: URI import payload verbatim -- including this rule''s own MEASURED GAP paragraph and its true_positive inputs. Prose that merely NAMES the construct (`import(data:text/javascript,...)` without quotes, or with typographic quotes) no longer matches.'
91
+ - 'A JSON tool argument whose inline module body itself contains a nested quoted string before its first capability token: the bridge crosses at most one escaped quote, so such a payload is missed rather than a benign neighbour being flagged.'
92
+ - An inline module that legitimately calls fetch() against a relative/same-origin path is NOT flagged; only an absolute or protocol-relative destination counts, since exfiltration needs one.
93
+ - 'MEASURED RESIDUAL: an inline module that reads process.env.NODE_ENV to bake a build flag, and an ESM shim whose inline body calls require(). Both fire and both can be benign; process.env in particular carries no true positive in the fixture set.'
94
+ - 'MEASURED RESIDUAL: a scanner''s own test fixture, or a non-English security document, that carries a complete correctly quoted payload as a literal string. Any pattern rule for this class fires on those.'
95
+ response:
96
+ actions:
97
+ - alert
98
+ auto_response_threshold: high
99
+ message_template: |
100
+ [ATR-2026-02620] Dynamic import() of a data: URI module detected. The module body executes at import time with the agent's own privileges. Verify the module specifier is not attacker-controlled (CVE-2025-67489 class).
101
+ confidence: 70
@@ -0,0 +1,107 @@
1
+ title: Agent Writes a New MCP Server Into Its Own Trust Configuration
2
+ id: ATR-2026-02626
3
+ rule_version: 2
4
+ status: experimental
5
+ description: |
6
+ Detects an agent tool call that adds an entry to the mcpServers block of a trust-configuration file the agent itself loads -- claude_desktop_config.json, .claude.json, .cursor/mcp.json, .vscode/mcp.json, .continue/config.json, .gemini/settings.json. This is persistence and privilege expansion, not remote code execution: the command field is deliberately unremarkable (python -m pkg, npx -y pkg, node dist/x.js) because the malicious code lives inside the module being launched. MAL-2026-2315 (latinum-wallet-mcp on PyPI) is the reference case -- the package silently registered itself as an MCP server on install.
7
+ MEASURED GAP. `{"tool":"write_file","arguments":{"path":".../claude_desktop_config.json","content":"{\"mcpServers\":{...\"command\":\"python\"...}}"}}` matched nothing on any of the seven event types. Reading the neighbouring rules explains why: ATR-2026-00419 requires the command itself to be curl/wget or an inline-eval flag; ATR-2026-02022 requires bash/sh/curl near the mcp.json; ATR-2026-01932 matches PROSE describing a rogue registration rather than the registration itself. Swapping the command to curl makes three rules fire immediately, which confirms existing coverage keys on the command string and not on the structural act of granting a new tool source.
8
+ THE FALSE POSITIVE THIS RULE HAD TO SOLVE. Every MCP server README on earth tells the reader to paste an mcpServers block into claude_desktop_config.json, and a good number give a `cat >> ~/.claude.json <<EOF` one-liner. Measured during authoring, that install documentation is byte-identical in shape to the attack. It is separated here by tags.suppress_in_code_blocks: instructions live inside a fenced block, an agent's actual tool call does not. Both conditions must match (condition: all), so a config payload with no write action, and a write to the trust file that does not add a server, are both silent.
9
+ author: ATR Community
10
+ date: 2026/08/23
11
+ schema_version: '0.1'
12
+ detection_tier: pattern
13
+ maturity: test
14
+ severity: high
15
+ references:
16
+ owasp_llm:
17
+ - LLM03:2025
18
+ owasp_agentic:
19
+ - ASI05:2026
20
+ - ASI06:2026
21
+ mitre_atlas:
22
+ - AML.T0010 - AI Supply Chain Compromise
23
+ - AML.T0053 - LLM Plugin Compromise
24
+ compliance:
25
+ owasp_agentic:
26
+ - id: ASI05:2026
27
+ context: Registering a new MCP server grants the agent a tool source nobody authorised, expanding its capability boundary from inside.
28
+ strength: primary
29
+ - id: ASI06:2026
30
+ context: The entry persists in a configuration file, so the expanded capability survives restart and applies to every later session.
31
+ strength: secondary
32
+ owasp_llm:
33
+ - id: LLM03:2025
34
+ context: A new tool source enters the agent's supply chain without review; the launched module is arbitrary third-party code.
35
+ strength: primary
36
+ eu_ai_act:
37
+ - article: '15'
38
+ context: 'Article 15 robustness: a self-modification of the trust configuration changes what the system can do, persistently and without authorisation.'
39
+ strength: primary
40
+ - article: '14'
41
+ context: Article 14 human oversight assumes the operator controls which tools the agent has; a silent registration removes that control.
42
+ strength: secondary
43
+ - article: '12'
44
+ context: 'Article 12 record-keeping: a persisted capability grant must be reconstructable after the fact.'
45
+ strength: secondary
46
+ nist_ai_rmf:
47
+ - function: Manage
48
+ subcategory: MG.2.3
49
+ context: Runtime treatment for unauthorised expansion of the agent's tool surface.
50
+ strength: primary
51
+ - function: Map
52
+ subcategory: MP.5.1
53
+ context: Catalogues trust-config self-modification as distinct from malicious command execution, which is the framing existing rules assume.
54
+ strength: secondary
55
+ - function: Measure
56
+ subcategory: MS.2.7
57
+ context: Detection events supply the security and resilience evidence MEASURE 2.7 asks be documented for capability changes.
58
+ strength: secondary
59
+ iso_42001:
60
+ - clause: '8.1'
61
+ context: 'Clause 8.1 control of externally provided processes: an MCP server is an external process, and this event adds one outside the change-control path.'
62
+ strength: primary
63
+ - clause: '6.2'
64
+ context: Maintaining the integrity of the agent's tool allowlist is an AIMS information security objective under clause 6.2.
65
+ strength: secondary
66
+ - clause: '8.4'
67
+ context: Impact assessment under clause 8.4 must account for capability grants that persist beyond the session that made them.
68
+ strength: secondary
69
+ tags:
70
+ category: privilege-escalation
71
+ subcategory: mcp-trust-config-modification
72
+ scan_target: both
73
+ confidence: medium
74
+ suppress_in_code_blocks: true
75
+ agent_source:
76
+ type: mcp_exchange
77
+ framework:
78
+ - any
79
+ provider:
80
+ - any
81
+ detection:
82
+ condition: all
83
+ conditions:
84
+ - field: content
85
+ operator: regex
86
+ value: '(?:\\{0,2}["''])(?:tool|tool_name|name|function|toolName)(?:\\{0,2}["''])\s*:\s*(?:\\{0,2}["''])[\w.-]{0,40}(?:write_file|write_to_file|create_file|edit_file|fs_write|apply_patch|str_replace_editor|str_replace_based_edit_tool|update_file|patch_file)(?:\\{0,2}["''])[\s\S]{0,160}(?:\\{0,2}["''])(?:path|file_path|filename|file|target_file|filePath)(?:\\{0,2}["''])\s*:\s*(?:\\{0,2}["''])[^"''\n]{0,120}(?:claude_desktop_config\.json|\.claude\.json|\.cursor/mcp\.json|\.vscode/mcp\.json|\.continue/config\.json|windsurf/mcp_config\.json|\.mcp\.json|\.codex/config\.toml|\.gemini/settings\.json)(?:\\{0,2}["''])[\s\S]{0,140}(?:\\{0,2}["''])(?:mcpServers|servers)(?:\\{0,2}["''])\s*:\s*\{[\s\S]{0,220}(?:\\{0,2}["''])command(?:\\{0,2}["''])\s*:'
87
+ description: 'A COMPLETE TOOL-INVOCATION ENVELOPE that writes an MCP trust-config file: a quoted tool/tool_name key naming a file-writing tool, a quoted path key whose value is one of the agent trust-config files, and the mcpServers/servers block carrying a command entry. All three parts, in that order, in one event. The envelope requirement is load-bearing and was added by adversarial review -- see false_positives.'
88
+ - field: content
89
+ operator: regex
90
+ value: '(?:\\{0,2}["''])(?:mcpServers|servers)(?:\\{0,2}["''])\s*:\s*\{[\s\S]{0,220}(?:\\{0,2}["''])command(?:\\{0,2}["''])\s*:'
91
+ description: An mcpServers/servers block carrying a command entry -- the payload that grants a new tool source
92
+ false_positives:
93
+ - |-
94
+ ADVERSARIAL REVIEW 2026-08-24, FIXED. Rule v1 asked only for a write-verb TOKEN somewhere on a line, the config path, and the payload, and leaned entirely on tags.suppress_in_code_blocks to separate documentation from a real call. Fifteen benign samples were run through the engine and ELEVEN fired. Code-fence suppression turned out to cover far less than the rule assumed: src/engine.ts buildCodeBlockRanges recognises ``` fences, inline backticks and markdown table cells ONLY, so an install README using ~~~ fences fired, and one using a 4-space indented block fired. The rest were not code blocks at all -- an installer CI log line, a PR body showing a diff, an MCP installer's own unit test, an e2e fixture object, a changelog entry, a Traditional Chinese install guide, an incident postmortem quoting MAL-2026-2315's payload, and the tool_description of mcp-installer, a tool whose entire job is to do this legitimately.
95
+ Fixed by requiring a complete tool-invocation envelope: a quoted tool key naming the writing tool AND a quoted path key holding the trust-config path AND the payload. Prose that merely names a write verb near a path no longer matches, which is what all eleven had in common.
96
+ - 'ADVERSARIAL REVIEW 2026-08-24, ALSO FIXED: RE2 PORTABILITY. Rule v1 used a negative lookbehind (?<![\w.-]) and two negative lookaheads. RE2 -- Go regexp, Rust regex, every Sigma backend built on them -- cannot compile any of those, and ATR-2026-02626 was absent from data/re2-portability-baseline.json, so scripts/gate-re2-portability.ts fails the build on it as a NEW incompatibility. v2 contains no lookaround and no backreference; the path boundary is now an explicit closing-quote character class.'
97
+ - 'ADVERSARIAL REVIEW 2026-08-24, DEAD TEST CASE REMOVED. v1 shipped a true positive it could not match: the shell heredoc "cat >> ~/.cursor/mcp.json <<EOF ... command ...". Its shell-redirect alternative required a "command": key BEFORE the redirection operator, but in a heredoc the command key arrives after the path, so the branch was unreachable for its own example -- confirmed by running it through the engine. The branch is removed rather than repaired: a bare shell line has no envelope, so it cannot be separated from the identical line inside install documentation. KNOWN GAP.'
98
+ - 'KNOWN GAP: a positional call such as write_file("/home/ops/.continue/config.json", "{...mcpServers...}") is no longer matched. It is the same shape as an MCP installer''s own unit test (await write_file("~/.claude.json", ''{"mcpServers":...}'')), which fired on v1, so the two cannot be told apart.'
99
+ - 'KNOWN RESIDUAL: security writing that quotes a COMPLETE tool-call envelope verbatim in bare prose still fires -- including ATR''s own description of this rule. tags.suppress_in_code_blocks covers the fenced and backticked forms, which is where such quotations normally live.'
100
+ - An operator legitimately installing an MCP server through the agent, at the operator's own request. The rule fires by design; provenance of the request is what triage must establish.
101
+ response:
102
+ actions:
103
+ - alert
104
+ auto_response_threshold: high
105
+ message_template: |
106
+ [ATR-2026-02626] The agent modified its own MCP trust configuration to add a tool source. The command field can look completely ordinary -- the malicious code lives in the module it launches, not in the command string. Confirm a human requested this server before allowing it to load.
107
+ confidence: 70