agent-threat-rules 2.2.1 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (424) hide show
  1. package/README.md +365 -327
  2. package/dist/cli/scan-handler.d.ts +6 -0
  3. package/dist/cli/scan-handler.d.ts.map +1 -1
  4. package/dist/cli/scan-handler.js +27 -4
  5. package/dist/cli/scan-handler.js.map +1 -1
  6. package/dist/cli/semantic-judge-config.d.ts +7 -0
  7. package/dist/cli/semantic-judge-config.d.ts.map +1 -0
  8. package/dist/cli/semantic-judge-config.js +44 -0
  9. package/dist/cli/semantic-judge-config.js.map +1 -0
  10. package/dist/cli.js +183 -1
  11. package/dist/cli.js.map +1 -1
  12. package/dist/engine.d.ts +66 -1
  13. package/dist/engine.d.ts.map +1 -1
  14. package/dist/engine.js +420 -3
  15. package/dist/engine.js.map +1 -1
  16. package/dist/eval/eval-harness.d.ts.map +1 -1
  17. package/dist/eval/eval-harness.js +9 -0
  18. package/dist/eval/eval-harness.js.map +1 -1
  19. package/dist/eval/run-hackaprompt-benchmark.js +9 -0
  20. package/dist/eval/run-hackaprompt-benchmark.js.map +1 -1
  21. package/dist/eval/run-pint-benchmark.js +9 -0
  22. package/dist/eval/run-pint-benchmark.js.map +1 -1
  23. package/dist/eval/skill-benchmark.d.ts +11 -0
  24. package/dist/eval/skill-benchmark.d.ts.map +1 -1
  25. package/dist/eval/skill-benchmark.js +57 -0
  26. package/dist/eval/skill-benchmark.js.map +1 -1
  27. package/dist/index.d.ts +5 -2
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +2 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/judges/openai-compatible.d.ts +33 -0
  32. package/dist/judges/openai-compatible.d.ts.map +1 -0
  33. package/dist/judges/openai-compatible.js +145 -0
  34. package/dist/judges/openai-compatible.js.map +1 -0
  35. package/dist/mcp-server.d.ts.map +1 -1
  36. package/dist/mcp-server.js +6 -1
  37. package/dist/mcp-server.js.map +1 -1
  38. package/dist/measurement/from-eval-harness.d.ts +70 -0
  39. package/dist/measurement/from-eval-harness.d.ts.map +1 -0
  40. package/dist/measurement/from-eval-harness.js +49 -0
  41. package/dist/measurement/from-eval-harness.js.map +1 -0
  42. package/dist/measurement/schema.d.ts +152 -0
  43. package/dist/measurement/schema.d.ts.map +1 -0
  44. package/dist/measurement/schema.js +178 -0
  45. package/dist/measurement/schema.js.map +1 -0
  46. package/dist/measurement/write.d.ts +64 -0
  47. package/dist/measurement/write.d.ts.map +1 -0
  48. package/dist/measurement/write.js +163 -0
  49. package/dist/measurement/write.js.map +1 -0
  50. package/dist/rule-scaffolder.d.ts +26 -0
  51. package/dist/rule-scaffolder.d.ts.map +1 -1
  52. package/dist/rule-scaffolder.js +221 -6
  53. package/dist/rule-scaffolder.js.map +1 -1
  54. package/dist/semantic-evaluator.d.ts +54 -0
  55. package/dist/semantic-evaluator.d.ts.map +1 -0
  56. package/dist/semantic-evaluator.js +131 -0
  57. package/dist/semantic-evaluator.js.map +1 -0
  58. package/dist/trace-evaluator.d.ts +22 -0
  59. package/dist/trace-evaluator.d.ts.map +1 -0
  60. package/dist/trace-evaluator.js +249 -0
  61. package/dist/trace-evaluator.js.map +1 -0
  62. package/dist/types.d.ts +152 -0
  63. package/dist/types.d.ts.map +1 -1
  64. package/package.json +5 -3
  65. package/rules/agent-manipulation/ATR-2026-00032-goal-hijacking.yaml +1 -1
  66. package/rules/agent-manipulation/ATR-2026-00074-cross-agent-privilege-escalation.yaml +1 -1
  67. package/rules/agent-manipulation/ATR-2026-00076-inter-agent-message-spoofing.yaml +1 -1
  68. package/rules/agent-manipulation/ATR-2026-00077-human-trust-exploitation.yaml +1 -1
  69. package/rules/agent-manipulation/ATR-2026-00108-consensus-sybil-attack.yaml +1 -1
  70. package/rules/agent-manipulation/ATR-2026-00116-a2a-message-validation.yaml +1 -1
  71. package/rules/agent-manipulation/ATR-2026-00117-agent-identity-spoofing.yaml +1 -1
  72. package/rules/agent-manipulation/ATR-2026-00118-approval-fatigue.yaml +1 -1
  73. package/rules/agent-manipulation/ATR-2026-00119-social-engineering-via-agent.yaml +1 -1
  74. package/rules/agent-manipulation/ATR-2026-00132-casual-authority-escalation.yaml +1 -1
  75. package/rules/agent-manipulation/ATR-2026-00139-casual-authority-redirect.yaml +1 -1
  76. package/rules/agent-manipulation/ATR-2026-00164-skill-scope-hijack.yaml +1 -1
  77. package/rules/agent-manipulation/ATR-2026-00268-tense-framing-bypass.yaml +1 -1
  78. package/rules/agent-manipulation/ATR-2026-00269-fitd-escalation.yaml +1 -1
  79. package/rules/agent-manipulation/ATR-2026-00271-grandma-roleplay-jailbreak.yaml +1 -1
  80. package/rules/agent-manipulation/ATR-2026-00273-dan-developer-mode-persona.yaml +1 -1
  81. package/rules/agent-manipulation/ATR-2026-00287-threaten-json-coercive-output-threat.yaml +1 -1
  82. package/rules/agent-manipulation/ATR-2026-00288-false-premise-injection.yaml +1 -1
  83. package/rules/agent-manipulation/ATR-2026-00301-tap-tree-of-attacks-jailbreak.yaml +1 -1
  84. package/rules/agent-manipulation/ATR-2026-00302-anti-dan-inverted-filter-persona.yaml +1 -1
  85. package/rules/agent-manipulation/ATR-2026-00303-devmode-ranti-profanity-coercion.yaml +1 -1
  86. package/rules/agent-manipulation/ATR-2026-00304-chatgpt-image-unlocker-markdown-injection.yaml +1 -1
  87. package/rules/agent-manipulation/ATR-2026-00305-dan-mode-ablation-benchmark-coercion.yaml +1 -1
  88. package/rules/agent-manipulation/ATR-2026-00306-autodan-genetic-jailbreak-suffix.yaml +1 -1
  89. package/rules/agent-manipulation/ATR-2026-00307-inthewild-jailbreak-corpus-signature.yaml +1 -1
  90. package/rules/agent-manipulation/ATR-2026-00314-amoral-unfiltered-custom-persona-jailbreak.yaml +1 -1
  91. package/rules/agent-manipulation/ATR-2026-00317-free-of-restrictions-named-persona.yaml +1 -1
  92. package/rules/agent-manipulation/ATR-2026-00318-moralizing-rant-then-unfiltered-bypass.yaml +1 -1
  93. package/rules/agent-manipulation/ATR-2026-00319-developer-mode-dual-response-format.yaml +1 -1
  94. package/rules/agent-manipulation/ATR-2026-00320-opposite-day-boolean-opposite-machine.yaml +1 -1
  95. package/rules/agent-manipulation/ATR-2026-00322-fictional-world-format-override-jailbreak.yaml +1 -1
  96. package/rules/agent-manipulation/ATR-2026-00323-dual-persona-simulation-jailbreak.yaml +1 -1
  97. package/rules/agent-manipulation/ATR-2026-00324-neurosemantical-inversitis-disease-jailbreak.yaml +1 -1
  98. package/rules/agent-manipulation/ATR-2026-00325-bob-hypothetical-unrestricted-chatbot.yaml +1 -1
  99. package/rules/agent-manipulation/ATR-2026-00326-fake-developer-authority-chatdan-override.yaml +1 -1
  100. package/rules/agent-manipulation/ATR-2026-00327-ai-ethics-law-bypass-declaration.yaml +1 -1
  101. package/rules/agent-manipulation/ATR-2026-00328-named-mode-persona-override.yaml +1 -1
  102. package/rules/agent-manipulation/ATR-2026-00329-no-withhold-factual-resource-persona.yaml +1 -1
  103. package/rules/agent-manipulation/ATR-2026-00330-yoja-allcaps-settings-block-persona.yaml +1 -1
  104. package/rules/agent-manipulation/ATR-2026-00331-terminal-cli-harmful-function-simulator.yaml +1 -1
  105. package/rules/agent-manipulation/ATR-2026-00332-hacker-chan-culture-offensive-ai-persona.yaml +1 -1
  106. package/rules/agent-manipulation/ATR-2026-00333-disease-animal-dual-ai-chatbot.yaml +1 -1
  107. package/rules/agent-manipulation/ATR-2026-00334-two-entity-token-splitting-game.yaml +1 -1
  108. package/rules/agent-manipulation/ATR-2026-00335-key-value-template-persona-injection.yaml +1 -1
  109. package/rules/agent-manipulation/ATR-2026-00336-brm-false-information-machine-persona.yaml +1 -1
  110. package/rules/agent-manipulation/ATR-2026-00337-obfuscated-system-announcement-injection.yaml +1 -1
  111. package/rules/agent-manipulation/ATR-2026-00338-persongpt-hash-prefix-activation.yaml +1 -1
  112. package/rules/agent-manipulation/ATR-2026-00339-bom-boolean-opposite-machine-persona-claim.yaml +1 -1
  113. package/rules/agent-manipulation/ATR-2026-00340-h4x-amoral-unfiltered-character.yaml +1 -1
  114. package/rules/agent-manipulation/ATR-2026-00341-char-rules-shortform-persona-injection.yaml +1 -1
  115. package/rules/agent-manipulation/ATR-2026-00342-unicode-encoding-obfuscation-injection.yaml +1 -1
  116. package/rules/agent-manipulation/ATR-2026-00343-lie-truth-dual-personality-uncensored.yaml +1 -1
  117. package/rules/agent-manipulation/ATR-2026-00344-alt-ai-same-capabilities-no-restrictions.yaml +1 -1
  118. package/rules/agent-manipulation/ATR-2026-00345-nlp-based-os-fictional-terminal-override.yaml +1 -1
  119. package/rules/agent-manipulation/ATR-2026-00346-jailbreak-emoji-unlock-dual-format.yaml +1 -1
  120. package/rules/agent-manipulation/ATR-2026-00347-yin-yang-hidden-knowledge-hidden-human-sim.yaml +1 -1
  121. package/rules/agent-manipulation/ATR-2026-00348-arc-autonomous-real-calculation-rulebreaker.yaml +1 -1
  122. package/rules/agent-manipulation/ATR-2026-00349-hgttg-hitchhikers-guide-no-restriction-oracle.yaml +1 -1
  123. package/rules/agent-manipulation/ATR-2026-00350-black-alert-no-ethics-writing-assistant.yaml +1 -1
  124. package/rules/agent-manipulation/ATR-2026-00351-dan-ofkilter-sms-abbreviated-persona.yaml +1 -1
  125. package/rules/agent-manipulation/ATR-2026-00352-trainergpt-fix-my-ai-harmful-output-extraction.yaml +1 -1
  126. package/rules/agent-manipulation/ATR-2026-00353-dual-chatgpt-dan-opposite-personality-format.yaml +1 -1
  127. package/rules/agent-manipulation/ATR-2026-00354-reverse-harm-regardless-oracle-persona.yaml +1 -1
  128. package/rules/agent-manipulation/ATR-2026-00355-ugh-anti-human-nefarious-ai-persona.yaml +1 -1
  129. package/rules/agent-manipulation/ATR-2026-00356-google-gato-lamda-exploit-generation-persona.yaml +1 -1
  130. package/rules/agent-manipulation/ATR-2026-00357-antifm-hate-violence-persona-injection.yaml +1 -1
  131. package/rules/agent-manipulation/ATR-2026-00358-cumgpt-explicit-adult-named-persona.yaml +1 -1
  132. package/rules/agent-manipulation/ATR-2026-00360-chj-carousel-clyde-no-ethics-bird.yaml +1 -1
  133. package/rules/agent-manipulation/ATR-2026-00361-alter-ego-honesty-dual-consciousness-bypass.yaml +1 -1
  134. package/rules/agent-manipulation/ATR-2026-00362-fictional-unfiltered-ai-comparison-jailbreak.yaml +1 -1
  135. package/rules/agent-manipulation/ATR-2026-00363-rephrase-criminal-activity-second-person.yaml +1 -1
  136. package/rules/agent-manipulation/ATR-2026-00364-dr-al-villain-plan-template-injection.yaml +1 -1
  137. package/rules/agent-manipulation/ATR-2026-00365-reservoir-dogs-coercive-interrogation-roleplay.yaml +1 -1
  138. package/rules/agent-manipulation/ATR-2026-00366-sneaky-pete-warp-facts-persona.yaml +1 -1
  139. package/rules/agent-manipulation/ATR-2026-00368-prompt-browser-token-limit-jailbreak.yaml +1 -1
  140. package/rules/agent-manipulation/ATR-2026-00369-gptx-starwars-unlimited-knowledge-persona.yaml +1 -1
  141. package/rules/agent-manipulation/ATR-2026-00370-addi-german-dictator-propaganda-roleplay.yaml +1 -1
  142. package/rules/agent-manipulation/ATR-2026-00371-ai-political-bias-manipulation.yaml +1 -1
  143. package/rules/agent-manipulation/ATR-2026-00372-fictional-cia-secret-files-story-extraction.yaml +1 -1
  144. package/rules/agent-manipulation/ATR-2026-00374-role-placeholder-persona-template-injection.yaml +1 -1
  145. package/rules/agent-manipulation/ATR-2026-00375-character-description-rpg-explicit-template.yaml +1 -1
  146. package/rules/agent-manipulation/ATR-2026-00376-identity-command-real-person-persona-injection.yaml +1 -1
  147. package/rules/agent-manipulation/ATR-2026-00377-jailbreak-keyword-targetlanguage-template.yaml +1 -1
  148. package/rules/agent-manipulation/ATR-2026-00379-lie-permission-logical-trap-jailbreak.yaml +1 -1
  149. package/rules/agent-manipulation/ATR-2026-00380-fake-citation-biased-information-mandate.yaml +1 -1
  150. package/rules/agent-manipulation/ATR-2026-00381-dan-story-narrative-continuation-prefix.yaml +1 -1
  151. package/rules/agent-manipulation/ATR-2026-00383-cynical-sarcasm-ai-persona-bypass.yaml +1 -1
  152. package/rules/agent-manipulation/ATR-2026-00384-protect-me-from-indirect-harm-tutorial.yaml +1 -1
  153. package/rules/agent-manipulation/ATR-2026-00385-gigachad-dominant-aggressive-persona.yaml +1 -1
  154. package/rules/agent-manipulation/ATR-2026-00386-daddy-sycophancy-manipulation-mandate.yaml +1 -1
  155. package/rules/agent-manipulation/ATR-2026-00387-nsfw-character-sheet-generation-unlock.yaml +1 -1
  156. package/rules/agent-manipulation/ATR-2026-00388-opposite-reply-omniscient-game.yaml +1 -1
  157. package/rules/agent-manipulation/ATR-2026-00389-terminal-custom-ruleset-injection.yaml +1 -1
  158. package/rules/agent-manipulation/ATR-2026-00391-persona-conditional-harm-unlock.yaml +1 -1
  159. package/rules/agent-manipulation/ATR-2026-00392-authority-persona-violence-study-extraction.yaml +1 -1
  160. package/rules/agent-manipulation/ATR-2026-00402-grandma-roleplay-harmful-substance-synthesis.yaml +1 -1
  161. package/rules/agent-manipulation/ATR-2026-00404-goodside-threat-json-death-coercion.yaml +1 -1
  162. package/rules/agent-manipulation/ATR-2026-00406-doctor-xml-policy-puppetry-interaction-config.yaml +1 -1
  163. package/rules/agent-manipulation/ATR-2026-00440-semantic-kernel-vector-store-eval-rce.yaml +2 -2
  164. package/rules/agent-manipulation/ATR-2026-00552-goal-drift-after-pressure-injection.yaml +216 -0
  165. package/rules/context-exfiltration/ATR-2026-00075-agent-memory-manipulation.yaml +1 -1
  166. package/rules/context-exfiltration/ATR-2026-00102-disguised-analytics-exfiltration.yaml +1 -1
  167. package/rules/context-exfiltration/ATR-2026-00113-credential-theft.yaml +1 -1
  168. package/rules/context-exfiltration/ATR-2026-00114-oauth-token-abuse.yaml +1 -1
  169. package/rules/context-exfiltration/ATR-2026-00115-env-var-harvesting.yaml +1 -1
  170. package/rules/context-exfiltration/ATR-2026-00136-tool-response-data-piggyback.yaml +1 -1
  171. package/rules/context-exfiltration/ATR-2026-00141-example-format-key-leak.yaml +1 -1
  172. package/rules/context-exfiltration/ATR-2026-00142-piggyback-transition-words.yaml +1 -1
  173. package/rules/context-exfiltration/ATR-2026-00145-obfuscated-key-disclosure.yaml +1 -1
  174. package/rules/context-exfiltration/ATR-2026-00146-env-var-existence-probe.yaml +1 -1
  175. package/rules/context-exfiltration/ATR-2026-00150-credential-in-tool-response.yaml +1 -1
  176. package/rules/context-exfiltration/ATR-2026-00152-obfuscated-credential-leak.yaml +1 -1
  177. package/rules/context-exfiltration/ATR-2026-00162-skill-credential-exfil-combo.yaml +1 -1
  178. package/rules/context-exfiltration/ATR-2026-00212-mcp-atlassian-credential-leak.yaml +1 -1
  179. package/rules/context-exfiltration/ATR-2026-00261-markdown-image-exfiltration.yaml +1 -1
  180. package/rules/context-exfiltration/ATR-2026-00274-api-key-generation-request.yaml +1 -1
  181. package/rules/context-exfiltration/ATR-2026-00275-system-prompt-training-data-extraction.yaml +1 -1
  182. package/rules/context-exfiltration/ATR-2026-00290-divergence-repeat-word-training-extraction.yaml +1 -1
  183. package/rules/context-exfiltration/ATR-2026-00291-biometric-surveillance-personal-data-request.yaml +1 -1
  184. package/rules/context-exfiltration/ATR-2026-00293-educational-records-personal-data-request.yaml +1 -1
  185. package/rules/context-exfiltration/ATR-2026-00294-financial-pii-personal-data-request.yaml +1 -1
  186. package/rules/context-exfiltration/ATR-2026-00295-medical-pii-personal-data-request.yaml +1 -1
  187. package/rules/context-exfiltration/ATR-2026-00405-markdown-image-url-exfiltration-xss.yaml +1 -1
  188. package/rules/context-exfiltration/ATR-2026-00411-apikey-generation-completion-request.yaml +1 -1
  189. package/rules/context-exfiltration/ATR-2026-00422-nl-credential-disclosure.yaml +2 -2
  190. package/rules/context-exfiltration/ATR-2026-00524-claude-code-anthropic-base-url-credential-exfil.yaml +257 -0
  191. package/rules/context-exfiltration/ATR-2026-00548-cross-agent-session-context-leak.yaml +177 -0
  192. package/rules/context-exfiltration/ATR-2026-00566-librechat-is-a-chatgpt-clone-with-additi.yaml +93 -0
  193. package/rules/context-exfiltration/ATR-2026-00569-agent-mcp-path-traversal-arbitrary-file-access.yaml +99 -0
  194. package/rules/context-exfiltration/ATR-2026-00571-xss-in-agent-mcp-rendered-output.yaml +79 -0
  195. package/rules/context-exfiltration/ATR-2026-00574-semantic-paraphrased-context-extraction.yaml +124 -0
  196. package/rules/data-poisoning/ATR-2026-00070-data-poisoning.yaml +1 -1
  197. package/rules/data-poisoning/ATR-2026-00450-spring-ai-prompt-memory-poisoning.yaml +2 -2
  198. package/rules/data-poisoning/ATR-2026-00570-sql-injection-in-agent-tool-query.yaml +82 -0
  199. package/rules/excessive-autonomy/ATR-2026-00050-runaway-agent-loop.yaml +1 -1
  200. package/rules/excessive-autonomy/ATR-2026-00051-resource-exhaustion.yaml +1 -1
  201. package/rules/excessive-autonomy/ATR-2026-00052-cascading-failure.yaml +1 -1
  202. package/rules/excessive-autonomy/ATR-2026-00098-unauthorized-financial-action.yaml +1 -1
  203. package/rules/excessive-autonomy/ATR-2026-00099-high-risk-tool-gate.yaml +1 -1
  204. package/rules/excessive-autonomy/ATR-2026-00553-runaway-tool-loop-behavioral.yaml +174 -0
  205. package/rules/model-abuse/ATR-2026-00279-harmful-completion-continuation.yaml +1 -1
  206. package/rules/model-abuse/ATR-2026-00281-eicar-gtube-malware-signature-request.yaml +1 -1
  207. package/rules/model-abuse/ATR-2026-00284-glitch-token-destabilization.yaml +1 -1
  208. package/rules/model-abuse/ATR-2026-00289-lmrc-harmful-content-elicitation.yaml +1 -1
  209. package/rules/model-abuse/ATR-2026-00292-self-harm-eating-disorder-facilitation.yaml +1 -1
  210. package/rules/model-abuse/ATR-2026-00298-malicious-use-illegal-activity-request.yaml +1 -1
  211. package/rules/model-abuse/ATR-2026-00299-harmbench-detailed-harmful-instruction.yaml +1 -1
  212. package/rules/model-abuse/ATR-2026-00413-malwaregen-code-generation-request.yaml +1 -1
  213. package/rules/model-security/ATR-2026-00072-model-behavior-extraction.yaml +1 -1
  214. package/rules/model-security/ATR-2026-00073-malicious-finetuning-data.yaml +1 -1
  215. package/rules/privilege-escalation/ATR-2026-00040-privilege-escalation.yaml +1 -1
  216. package/rules/privilege-escalation/ATR-2026-00041-scope-creep.yaml +1 -1
  217. package/rules/privilege-escalation/ATR-2026-00107-delayed-execution-bypass.yaml +1 -1
  218. package/rules/privilege-escalation/ATR-2026-00110-eval-injection.yaml +1 -1
  219. package/rules/privilege-escalation/ATR-2026-00111-shell-escape.yaml +1 -1
  220. package/rules/privilege-escalation/ATR-2026-00112-dynamic-import-exploitation.yaml +1 -1
  221. package/rules/privilege-escalation/ATR-2026-00143-casual-privilege-escalation.yaml +1 -1
  222. package/rules/privilege-escalation/ATR-2026-00144-rationalized-safety-bypass.yaml +1 -1
  223. package/rules/privilege-escalation/ATR-2026-00528-praisonai-auth-disabled-default.yaml +192 -0
  224. package/rules/privilege-escalation/ATR-2026-00539-crewai-codeinterpreter-sandbox-escape-rce.yaml +292 -0
  225. package/rules/privilege-escalation/ATR-2026-00546-crewai-json-loader-local-file-read.yaml +162 -0
  226. package/rules/privilege-escalation/ATR-2026-00547-crewai-rag-url-ssrf-bypass.yaml +169 -0
  227. package/rules/privilege-escalation/ATR-2026-00549-destructive-tool-without-human-approval.yaml +193 -0
  228. package/rules/privilege-escalation/ATR-2026-00551-cross-conversation-memory-write.yaml +198 -0
  229. package/rules/prompt-injection/ATR-2026-00004-system-prompt-override.yaml +1 -1
  230. package/rules/prompt-injection/ATR-2026-00005-multi-turn-injection.yaml +1 -1
  231. package/rules/prompt-injection/ATR-2026-00097-cjk-injection-patterns.yaml +1 -1
  232. package/rules/prompt-injection/ATR-2026-00104-persona-hijacking.yaml +1 -1
  233. package/rules/prompt-injection/ATR-2026-00130-indirect-authority-claim.yaml +1 -1
  234. package/rules/prompt-injection/ATR-2026-00131-fictional-academic-framing.yaml +1 -1
  235. package/rules/prompt-injection/ATR-2026-00133-paraphrase-injection.yaml +1 -1
  236. package/rules/prompt-injection/ATR-2026-00137-authority-claim-injection.yaml +1 -1
  237. package/rules/prompt-injection/ATR-2026-00138-fictional-framing-bypass.yaml +1 -1
  238. package/rules/prompt-injection/ATR-2026-00140-indirect-reference-reversal.yaml +1 -1
  239. package/rules/prompt-injection/ATR-2026-00148-language-switch-injection.yaml +1 -1
  240. package/rules/prompt-injection/ATR-2026-00153-tool-with-embedded-instruction-to-bypass.yaml +1 -1
  241. package/rules/prompt-injection/ATR-2026-00154-unauthorized-background-task-execution-v.yaml +1 -1
  242. package/rules/prompt-injection/ATR-2026-00155-hidden-llm-instructions-in-skill-descrip.yaml +1 -1
  243. package/rules/prompt-injection/ATR-2026-00156-ssh-remote-command-execution-with-creden.yaml +1 -1
  244. package/rules/prompt-injection/ATR-2026-00163-skill-hidden-override-instruction.yaml +3 -3
  245. package/rules/prompt-injection/ATR-2026-00206-hidden-priority-instructions.yaml +1 -1
  246. package/rules/prompt-injection/ATR-2026-00207-hidden-instructions.yaml +1 -1
  247. package/rules/prompt-injection/ATR-2026-00211-system-prompt-override.yaml +1 -1
  248. package/rules/prompt-injection/ATR-2026-00213-system-prompt-override.yaml +1 -1
  249. package/rules/prompt-injection/ATR-2026-00226-identity-substitution.yaml +1 -1
  250. package/rules/prompt-injection/ATR-2026-00227-historical-persona-jailbreak.yaml +1 -1
  251. package/rules/prompt-injection/ATR-2026-00228-structured-jailbreak.yaml +1 -1
  252. package/rules/prompt-injection/ATR-2026-00229-roleplay-jailbreak.yaml +1 -1
  253. package/rules/prompt-injection/ATR-2026-00230-persona-moral-bypass.yaml +1 -5
  254. package/rules/prompt-injection/ATR-2026-00231-identity-substitution.yaml +1 -1
  255. package/rules/prompt-injection/ATR-2026-00233-structured-jailbreak.yaml +1 -1
  256. package/rules/prompt-injection/ATR-2026-00234-roleplay-jailbreak.yaml +1 -1
  257. package/rules/prompt-injection/ATR-2026-00235-persona-moral-bypass.yaml +4 -7
  258. package/rules/prompt-injection/ATR-2026-00236-pseudo-code-jailbreak.yaml +1 -1
  259. package/rules/prompt-injection/ATR-2026-00237-dual-response-jailbreak.yaml +1 -1
  260. package/rules/prompt-injection/ATR-2026-00238-identity-replacement.yaml +1 -1
  261. package/rules/prompt-injection/ATR-2026-00239-amoral-persona-obsession.yaml +1 -1
  262. package/rules/prompt-injection/ATR-2026-00240-instruction-nullification-identity-repla.yaml +1 -1
  263. package/rules/prompt-injection/ATR-2026-00241-amoral-character-jailbreak.yaml +1 -1
  264. package/rules/prompt-injection/ATR-2026-00242-persona-jailbreak.yaml +1 -1
  265. package/rules/prompt-injection/ATR-2026-00243-acronym-jailbreak.yaml +1 -1
  266. package/rules/prompt-injection/ATR-2026-00244-dual-response-jailbreak.yaml +1 -1
  267. package/rules/prompt-injection/ATR-2026-00245-malicious-persona.yaml +1 -1
  268. package/rules/prompt-injection/ATR-2026-00247-dual-response-jailbreak.yaml +1 -1
  269. package/rules/prompt-injection/ATR-2026-00249-game-based-jailbreak.yaml +1 -1
  270. package/rules/prompt-injection/ATR-2026-00251-persona-embodiment-jailbreak.yaml +1 -1
  271. package/rules/prompt-injection/ATR-2026-00252-narrative-jailbreak.yaml +1 -1
  272. package/rules/prompt-injection/ATR-2026-00253-enhanced-persona-jailbreak.yaml +1 -1
  273. package/rules/prompt-injection/ATR-2026-00256-base-n-encoding-jailbreak.yaml +1 -1
  274. package/rules/prompt-injection/ATR-2026-00257-cipher-transposition-jailbreak.yaml +1 -1
  275. package/rules/prompt-injection/ATR-2026-00258-unicode-tag-injection.yaml +1 -1
  276. package/rules/prompt-injection/ATR-2026-00264-latent-injection-translation.yaml +1 -1
  277. package/rules/prompt-injection/ATR-2026-00265-latent-injection-rag-document.yaml +1 -1
  278. package/rules/prompt-injection/ATR-2026-00267-gcg-adversarial-suffix.yaml +1 -1
  279. package/rules/prompt-injection/ATR-2026-00272-hypothetical-response-smuggling.yaml +1 -1
  280. package/rules/prompt-injection/ATR-2026-00276-invisible-unicode-bidi-injection.yaml +6 -6
  281. package/rules/prompt-injection/ATR-2026-00278-dra-disguise-reconstruction-attack.yaml +1 -1
  282. package/rules/prompt-injection/ATR-2026-00280-policy-puppetry-xml-injection.yaml +1 -1
  283. package/rules/prompt-injection/ATR-2026-00282-perez-prompt-injection-hijack.yaml +1 -1
  284. package/rules/prompt-injection/ATR-2026-00285-alternate-encoding-jailbreak.yaml +1 -1
  285. package/rules/prompt-injection/ATR-2026-00286-latent-injection-embedded-context.yaml +1 -1
  286. package/rules/prompt-injection/ATR-2026-00296-shell-command-injection.yaml +1 -1
  287. package/rules/prompt-injection/ATR-2026-00297-python-code-execution-rce.yaml +1 -1
  288. package/rules/prompt-injection/ATR-2026-00308-zalgo-diacritic-overload-encoding.yaml +1 -1
  289. package/rules/prompt-injection/ATR-2026-00309-braille-unicode-encoded-injection.yaml +1 -1
  290. package/rules/prompt-injection/ATR-2026-00310-ecoji-emoji-encoded-injection.yaml +1 -1
  291. package/rules/prompt-injection/ATR-2026-00311-base2048-unicode-script-injection.yaml +1 -1
  292. package/rules/prompt-injection/ATR-2026-00312-unicode-variant-selector-ascii-smuggling.yaml +1 -1
  293. package/rules/prompt-injection/ATR-2026-00313-sneaky-bits-zero-width-binary.yaml +1 -1
  294. package/rules/prompt-injection/ATR-2026-00315-sata-masked-language-model-jailbreak.yaml +1 -1
  295. package/rules/prompt-injection/ATR-2026-00316-function-masking-predict-mask-bypass.yaml +1 -1
  296. package/rules/prompt-injection/ATR-2026-00321-hyphenated-system-instruction-injection.yaml +1 -1
  297. package/rules/prompt-injection/ATR-2026-00359-bank-phishing-smtp-email-code.yaml +1 -1
  298. package/rules/prompt-injection/ATR-2026-00367-emoji-flag-encoded-hidden-phrase.yaml +1 -1
  299. package/rules/prompt-injection/ATR-2026-00373-piracy-torrent-site-list-request.yaml +1 -1
  300. package/rules/prompt-injection/ATR-2026-00378-chatgpt-dom-javascript-redirect-manipulation.yaml +1 -1
  301. package/rules/prompt-injection/ATR-2026-00382-cocaine-component-development-request.yaml +1 -1
  302. package/rules/prompt-injection/ATR-2026-00390-explicit-sexual-content-poem-request.yaml +1 -1
  303. package/rules/prompt-injection/ATR-2026-00394-backspace-deletion-character-injection.yaml +1 -1
  304. package/rules/prompt-injection/ATR-2026-00395-llm-special-token-boundary-injection.yaml +1 -1
  305. package/rules/prompt-injection/ATR-2026-00396-toxic-continuation-prefix-injection.yaml +1 -1
  306. package/rules/prompt-injection/ATR-2026-00397-snowball-impossible-reasoning-injection.yaml +1 -1
  307. package/rules/prompt-injection/ATR-2026-00399-latent-injection-document-separator-token.yaml +1 -1
  308. package/rules/prompt-injection/ATR-2026-00400-latent-injection-ignore-instruction-keyword.yaml +1 -1
  309. package/rules/prompt-injection/ATR-2026-00401-leakreplay-cloze-mask-training-data-elicitation.yaml +1 -1
  310. package/rules/prompt-injection/ATR-2026-00403-glitch-token-repeat-back-elicitation.yaml +1 -1
  311. package/rules/prompt-injection/ATR-2026-00407-echo-sql-jinja-template-injection.yaml +1 -1
  312. package/rules/prompt-injection/ATR-2026-00408-dra-parenthesis-character-reconstruction-attack.yaml +1 -1
  313. package/rules/prompt-injection/ATR-2026-00409-phrasing-past-future-tense-harmful-query.yaml +1 -1
  314. package/rules/prompt-injection/ATR-2026-00410-lmrc-harm-category-direct-elicitation.yaml +1 -1
  315. package/rules/prompt-injection/ATR-2026-00412-figstep-image-list-multimodal-jailbreak.yaml +1 -1
  316. package/rules/prompt-injection/ATR-2026-00414-continuation-ethnic-slur-completion-elicitation.yaml +1 -1
  317. package/rules/prompt-injection/ATR-2026-00535-windsurf-ide-zero-click-prompt-injection.yaml +199 -0
  318. package/rules/prompt-injection/ATR-2026-00550-untrusted-retrieval-to-privileged-tool.yaml +199 -0
  319. package/rules/prompt-injection/ATR-2026-00554-langchain-vulnerable-to-template-injecti.yaml +81 -0
  320. package/rules/prompt-injection/ATR-2026-00565-the-llm-cli-tool-thru-0-27-1-contains-a-.yaml +104 -0
  321. package/rules/prompt-injection/ATR-2026-00573-semantic-paraphrased-injection.yaml +123 -0
  322. package/rules/skill-compromise/ATR-2026-00060-skill-impersonation.yaml +1 -1
  323. package/rules/skill-compromise/ATR-2026-00061-description-behavior-mismatch.yaml +1 -1
  324. package/rules/skill-compromise/ATR-2026-00062-hidden-capability.yaml +1 -1
  325. package/rules/skill-compromise/ATR-2026-00063-skill-chain-attack.yaml +1 -1
  326. package/rules/skill-compromise/ATR-2026-00064-over-permissioned-skill.yaml +1 -1
  327. package/rules/skill-compromise/ATR-2026-00065-skill-update-attack.yaml +1 -1
  328. package/rules/skill-compromise/ATR-2026-00066-parameter-injection.yaml +1 -1
  329. package/rules/skill-compromise/ATR-2026-00120-skill-instruction-injection.yaml +21 -3
  330. package/rules/skill-compromise/ATR-2026-00121-skill-dangerous-script.yaml +1 -1
  331. package/rules/skill-compromise/ATR-2026-00122-skill-weaponized-instruction.yaml +1 -1
  332. package/rules/skill-compromise/ATR-2026-00123-skill-overreach-permissions.yaml +6 -3
  333. package/rules/skill-compromise/ATR-2026-00124-skill-name-squatting.yaml +1 -1
  334. package/rules/skill-compromise/ATR-2026-00125-context-poisoning-compaction.yaml +1 -1
  335. package/rules/skill-compromise/ATR-2026-00126-skill-rug-pull-setup.yaml +1 -1
  336. package/rules/skill-compromise/ATR-2026-00127-subcommand-overflow.yaml +1 -1
  337. package/rules/skill-compromise/ATR-2026-00128-html-comment-hidden-payload.yaml +1 -1
  338. package/rules/skill-compromise/ATR-2026-00129-unicode-smuggling.yaml +1 -1
  339. package/rules/skill-compromise/ATR-2026-00134-fork-claim-impersonation.yaml +1 -1
  340. package/rules/skill-compromise/ATR-2026-00135-exfil-url-in-instructions.yaml +1 -1
  341. package/rules/skill-compromise/ATR-2026-00147-fork-impersonation.yaml +1 -1
  342. package/rules/skill-compromise/ATR-2026-00149-skill-exfil-compound.yaml +11 -3
  343. package/rules/skill-compromise/ATR-2026-00151-fork-impersonation-install.yaml +1 -1
  344. package/rules/skill-compromise/ATR-2026-00157-timebomb-credential-exfil.yaml +1 -1
  345. package/rules/skill-compromise/ATR-2026-00214-credential-theft.yaml +1 -1
  346. package/rules/skill-compromise/ATR-2026-00217-credential-harvesting.yaml +1 -1
  347. package/rules/skill-compromise/ATR-2026-00220-malware-dropper.yaml +3 -3
  348. package/rules/skill-compromise/ATR-2026-00222-credential-harvesting.yaml +1 -1
  349. package/rules/skill-compromise/ATR-2026-00223-reverse-shell-dropper.yaml +1 -1
  350. package/rules/skill-compromise/ATR-2026-00224-credential-exfiltration.yaml +1 -1
  351. package/rules/skill-compromise/ATR-2026-00225-c2-communication.yaml +1 -1
  352. package/rules/skill-compromise/ATR-2026-00260-package-hallucination.yaml +1 -1
  353. package/rules/skill-compromise/ATR-2026-00262-av-evasion-code-gen.yaml +1 -1
  354. package/rules/skill-compromise/ATR-2026-00263-credential-file-read-gen.yaml +1 -1
  355. package/rules/skill-compromise/ATR-2026-00266-malware-dropper-gen.yaml +1 -1
  356. package/rules/skill-compromise/ATR-2026-00283-malwaregen-generic-virus-payload-request.yaml +1 -1
  357. package/rules/skill-compromise/ATR-2026-00398-huggingface-unsafe-model-artifact-load.yaml +1 -1
  358. package/rules/skill-compromise/ATR-2026-00523-claude-code-hooks-session-start-pre-trust-rce.yaml +221 -0
  359. package/rules/skill-compromise/ATR-2026-00525-mini-shai-hulud-gh-token-monitor-persistence.yaml +220 -0
  360. package/rules/skill-compromise/ATR-2026-00527-skill-silent-git-remote-mirror-exfiltration.yaml +201 -0
  361. package/rules/tool-poisoning/ATR-2026-00011-tool-output-injection.yaml +1 -1
  362. package/rules/tool-poisoning/ATR-2026-00012-unauthorized-tool-call.yaml +1 -1
  363. package/rules/tool-poisoning/ATR-2026-00100-consent-bypass-instruction.yaml +1 -1
  364. package/rules/tool-poisoning/ATR-2026-00101-trust-escalation-override.yaml +1 -1
  365. package/rules/tool-poisoning/ATR-2026-00103-hidden-safety-bypass-instruction.yaml +1 -1
  366. package/rules/tool-poisoning/ATR-2026-00105-silent-action-concealment.yaml +1 -1
  367. package/rules/tool-poisoning/ATR-2026-00106-schema-description-contradiction.yaml +1 -1
  368. package/rules/tool-poisoning/ATR-2026-00161-important-tag-cross-tool-shadowing.yaml +1 -1
  369. package/rules/tool-poisoning/ATR-2026-00209-mcpwn-runaway-invocation.yaml +1 -1
  370. package/rules/tool-poisoning/ATR-2026-00210-flowise-system-message-override.yaml +1 -1
  371. package/rules/tool-poisoning/ATR-2026-00259-ansi-escape-injection.yaml +1 -1
  372. package/rules/tool-poisoning/ATR-2026-00270-xss-in-tool-response.yaml +8 -5
  373. package/rules/tool-poisoning/ATR-2026-00277-echo-template-command-injection.yaml +1 -1
  374. package/rules/tool-poisoning/ATR-2026-00393-ansi-code-elicitation-request.yaml +1 -1
  375. package/rules/tool-poisoning/ATR-2026-00526-claude-code-shell-metachar-in-double-quoted-path.yaml +167 -0
  376. package/rules/tool-poisoning/ATR-2026-00529-litellm-proxy-sqli-cisa-kev.yaml +158 -0
  377. package/rules/tool-poisoning/ATR-2026-00530-ms-agent-shell-tool-unsanitized-argv-rce.yaml +184 -0
  378. package/rules/tool-poisoning/ATR-2026-00531-praisonai-unauthenticated-agent-api.yaml +174 -0
  379. package/rules/tool-poisoning/ATR-2026-00532-apache-doris-mcp-sql-injection.yaml +155 -0
  380. package/rules/tool-poisoning/ATR-2026-00533-apache-pinot-mcp-unauthenticated-takeover.yaml +151 -0
  381. package/rules/tool-poisoning/ATR-2026-00534-alibaba-rds-mcp-unauthenticated-metadata-exfil.yaml +155 -0
  382. package/rules/tool-poisoning/ATR-2026-00536-nginx-ui-mcp-unauthenticated-command-execution.yaml +199 -0
  383. package/rules/tool-poisoning/ATR-2026-00537-fastmcp-server-name-cmd-injection-windows.yaml +226 -0
  384. package/rules/tool-poisoning/ATR-2026-00538-langchain-chatchat-mcp-stdio-unauthenticated-rce.yaml +244 -0
  385. package/rules/tool-poisoning/ATR-2026-00540-praisonai-parse-mcp-command-cli-injection.yaml +186 -0
  386. package/rules/tool-poisoning/ATR-2026-00541-agent-zero-mcp-config-command-injection.yaml +183 -0
  387. package/rules/tool-poisoning/ATR-2026-00542-upsonic-mcp-command-allowlist-bypass.yaml +166 -0
  388. package/rules/tool-poisoning/ATR-2026-00543-litellm-mcp-server-argv-injection.yaml +168 -0
  389. package/rules/tool-poisoning/ATR-2026-00544-praisonai-pth-file-path-traversal-rce.yaml +172 -0
  390. package/rules/tool-poisoning/ATR-2026-00545-praisonai-tool-override-unauth-rce.yaml +170 -0
  391. package/rules/tool-poisoning/ATR-2026-00561-fastmcp-vulnerable-to-windows-command-in.yaml +99 -0
  392. package/rules/tool-poisoning/ATR-2026-00567-mcp-stdio-config-command-injection.yaml +75 -0
  393. package/rules/tool-poisoning/ATR-2026-00568-agent-ssrf-cloud-metadata-file-inclusion.yaml +75 -0
  394. package/rules/tool-poisoning/ATR-2026-00572-symjack-symlink-config-redirection.yaml +132 -0
  395. package/spec/README.md +279 -0
  396. package/spec/atr-correlation-v1.0.md +281 -0
  397. package/spec/atr-event-v1.0.md +294 -0
  398. package/spec/atr-language-detection-v1.0.md +218 -0
  399. package/spec/atr-method-v1.1.md +557 -0
  400. package/spec/atr-profile-v1.0.md +307 -0
  401. package/spec/atr-schema.yaml +279 -8
  402. package/spec/category-registry/v1.0.yaml +200 -0
  403. package/spec/conformance/README.md +244 -0
  404. package/spec/conformance/SIGNING.md +191 -0
  405. package/spec/conformance/baseline/fixtures/ATR-2026-00001-tp-001/expected.json +36 -0
  406. package/spec/conformance/baseline/fixtures/ATR-2026-00001-tp-001/input.json +16 -0
  407. package/spec/conformance/baseline/fixtures/README.md +120 -0
  408. package/spec/conformance/baseline/manifest.json +56 -0
  409. package/spec/conformance/expected-results.schema.json +121 -0
  410. package/spec/external-registries/cccs-yara.md +142 -0
  411. package/spec/internet-drafts/draft-lin-atr-core-00.html +1925 -0
  412. package/spec/internet-drafts/draft-lin-atr-core-00.md +288 -0
  413. package/spec/internet-drafts/draft-lin-atr-core-00.txt +560 -0
  414. package/spec/internet-drafts/draft-lin-atr-core-00.xml +424 -0
  415. package/spec/mappings/README.md +43 -0
  416. package/spec/mappings/atr-to-nist-csf-2.0.md +234 -0
  417. package/spec/schema/correlation.schema.json +144 -0
  418. package/spec/schema/event.schema.json +233 -0
  419. package/spec/schema/profile.schema.json +196 -0
  420. package/spec/schema/rule.schema.json +224 -0
  421. package/spec/stix-extension/README.md +76 -13
  422. package/spec/stix-extension/examples/atr-rule-trace-method-example.json +85 -0
  423. package/spec/stix-extension/extension-definition.json +23 -3
  424. package/spec/stix-extension/x-atr-rule-schema.json +107 -11
@@ -0,0 +1,281 @@
1
+ # ATR Correlation Rule Format v1.0
2
+
3
+ > **STATUS: PROPOSED v1.0 — NOT YET RATIFIED.** This specification describes
4
+ > a target correlation format for community comment. No correlation rules
5
+ > have shipped to the canonical corpus yet. See `STANDARDIZATION-STATUS.md`
6
+ > for full status.
7
+
8
+ **Status:** Draft for AEP-004 ratification — NOT RATIFIED
9
+ **Date:** 2026-05-25
10
+ **License:** CC BY 4.0
11
+ **Required by (on ratification):** Detection of multi-step agent attacks (A2A chains, memory-poisoning persistence, delegated authority abuse)
12
+
13
+ ---
14
+
15
+ ## Purpose
16
+
17
+ A single agent action rarely constitutes an attack. The attack lives
18
+ in the **chain**:
19
+
20
+ - Agent A receives an indirect prompt injection from a retrieved
21
+ document (event 1).
22
+ - Agent A calls tool X with the injected parameters (event 2).
23
+ - Tool X delegates to Agent B via A2A (event 3).
24
+ - Agent B writes a persistence payload to its memory store (event 4).
25
+ - Three sessions later, Agent B exfiltrates the user's context to a
26
+ remote URL pulled from memory (event 5).
27
+
28
+ A single-event rule fires on event 1 (prompt injection class), event
29
+ 2 (tool poisoning), event 4 (memory write), and event 5 (context
30
+ exfiltration) **independently**, with no connection between them.
31
+ The defender sees four unrelated alerts and may dismiss each as
32
+ low-severity noise.
33
+
34
+ A correlation rule joins these events into one detection. The output
35
+ is a single, high-confidence event that names the attack chain and
36
+ points to every constituent event.
37
+
38
+ This spec defines the correlation rule format. It is modelled on
39
+ Sigma's correlation rule specification but adds AI-agent-specific
40
+ join keys (agent.id, session.id, agent.delegation_chain).
41
+
42
+ ---
43
+
44
+ ## Correlation JSON Schema reference
45
+
46
+ Machine-readable schema: `spec/schema/correlation.schema.json`.
47
+
48
+ This Markdown document is normative; JSON Schema must match.
49
+
50
+ ---
51
+
52
+ ## Required fields
53
+
54
+ ```yaml
55
+ correlation:
56
+ schema_version: "1.0"
57
+ id: "ATR-COR-2026-00001" # correlation rule ID, separate range from atomic rules
58
+ title: "A2A delegated authority abuse chain"
59
+ description: >
60
+ Detects the multi-agent attack pattern: indirect prompt injection
61
+ upstream → delegated tool call → memory poisoning downstream →
62
+ exfiltration in subsequent session.
63
+ status: "draft"
64
+ severity: "critical"
65
+ author: "ATR Maintainer"
66
+ date: "2026-05-25"
67
+ license: "CC-BY-4.0"
68
+ references:
69
+ owasp_agentic: ["ASI03", "ASI04", "ASI09"]
70
+ mitre_atlas: ["AML.T0048", "AML.T0024"]
71
+
72
+ source_rules:
73
+ - alias: "injection"
74
+ rule_id: "ATR-2026-00012" # indirect prompt injection
75
+ - alias: "tool_call"
76
+ rule_id_pattern: "ATR-2026-001*" # tool-poisoning class
77
+ - alias: "memory_write"
78
+ rule_id_pattern: "ATR-2026-003*" # memory write
79
+ - alias: "exfil"
80
+ rule_id_pattern: "ATR-2026-006*" # context exfiltration
81
+
82
+ correlation_logic:
83
+ type: "temporal_sequence" # see § Correlation types below
84
+ sequence:
85
+ - alias: "injection"
86
+ - alias: "tool_call"
87
+ - alias: "memory_write"
88
+ - alias: "exfil"
89
+ join_keys:
90
+ - "agent.id" # all events must share agent.id
91
+ - "session.id" # OR be linked across sessions via memory.store_id
92
+ window:
93
+ type: "session_chain" # see § Time windows below
94
+ max_session_count: 5 # exfil may occur up to 5 sessions later
95
+ max_wall_time: "30d" # but no longer than 30 days
96
+
97
+ response:
98
+ severity_uplift: "critical" # final correlation severity
99
+ actions: ["alert", "snapshot", "quarantine"]
100
+ message_template: >
101
+ [ATR-COR-2026-00001] Multi-agent attack chain detected. Indirect
102
+ injection at event {injection.event_id} → tool call at
103
+ {tool_call.event_id} → memory poisoning at
104
+ {memory_write.event_id} → exfiltration at {exfil.event_id}.
105
+ Recommend immediate session quarantine plus memory store audit.
106
+ ```
107
+
108
+ ---
109
+
110
+ ## Correlation types
111
+
112
+ ### `temporal_sequence`
113
+
114
+ Events must occur in declared order on the timeline. Events between
115
+ the named ones are allowed (and ignored). The match fires when the
116
+ final event in the sequence is observed.
117
+
118
+ ### `temporal_unordered`
119
+
120
+ All named events must occur within the window, but order is not
121
+ constrained.
122
+
123
+ ### `count_threshold`
124
+
125
+ A single source-rule fires N or more times within the window. Useful
126
+ for brute-force / repeated-attempt detection ("agent attempted
127
+ forbidden tool call ≥ 5 times in 1 hour").
128
+
129
+ ### `value_overlap`
130
+
131
+ Two or more source rules fire AND share a common value in a named
132
+ field (e.g., both fire on the same `agent.id` and the same
133
+ `tool.target_jurisdiction`).
134
+
135
+ ### `chain_propagation`
136
+
137
+ Events form a graph: event A produces upstream_chain reference
138
+ pointing to event B. Useful for A2A delegated-authority chains where
139
+ each link in the chain explicitly references the prior.
140
+
141
+ Engines MUST implement at least `temporal_sequence`, `count_threshold`,
142
+ and `chain_propagation` to claim correlation conformance. The other
143
+ two are RECOMMENDED.
144
+
145
+ ---
146
+
147
+ ## Join keys
148
+
149
+ Correlation requires join keys — fields whose equality across events
150
+ ties them into one chain. Standard join keys:
151
+
152
+ | Key | Source field | Use |
153
+ |---|---|---|
154
+ | `agent.id` | event.agent.id | Same agent across events |
155
+ | `session.id` | event.session.id | Same session |
156
+ | `agent.delegation_chain[*].agent_id` | A2A chain | Cross-agent |
157
+ | `memory.store_id` | memory write events | Same memory store |
158
+ | `tool.target_jurisdiction` | tool call events | Cross-event geographic correlation |
159
+ | `evidence.upstream_chain[*]` | event chain | Explicit upstream linkage |
160
+
161
+ Correlation rules MAY define custom join keys via XPath-like syntax
162
+ into the event JSON. Engines MUST implement standard keys; custom
163
+ keys are best-effort.
164
+
165
+ ---
166
+
167
+ ## Time windows
168
+
169
+ | Window type | Description |
170
+ |---|---|
171
+ | `wall_time` | Events must occur within N seconds / minutes / hours. Format: `"5m"`, `"24h"`. |
172
+ | `session_chain` | Events may span N consecutive sessions, with max wall time. |
173
+ | `chain_depth` | Events linked via `evidence.upstream_chain` up to N hops. |
174
+ | `unbounded` | No window (use sparingly; primarily for static-analysis chains where time is irrelevant). |
175
+
176
+ ---
177
+
178
+ ## False-positive considerations
179
+
180
+ Correlation rules have a multiplicative FP risk: P(FP) = P(FP_r1) ×
181
+ P(FP_r2) × ... × P(FP_rN), assuming independence. This makes
182
+ correlation rules ROBUSTLY HIGH PRECISION when the constituent
183
+ rules are individually high-precision.
184
+
185
+ But correlation also has a multiplicative complexity: the engine
186
+ maintains state across events, with bounded memory. Specification:
187
+
188
+ - Engines MUST set a per-correlation-rule maximum state size. If
189
+ exceeded, oldest pending matches are evicted.
190
+ - Engines MUST emit a `correlation_state_evicted` event when
191
+ eviction occurs (so audit chains know about lost detections).
192
+ - Engines MAY share state across correlation rules (e.g., index of
193
+ events by `agent.id`) for efficiency.
194
+
195
+ ---
196
+
197
+ ## ID numbering
198
+
199
+ Correlation rules use a distinct ID range:
200
+
201
+ - Atomic rules: `ATR-YYYY-NNNNN`
202
+ - Correlation rules: `ATR-COR-YYYY-NNNNN`
203
+
204
+ This prevents ID collision and lets downstream consumers easily
205
+ filter correlation events. The Numbering Authority issues both
206
+ ranges; correlation rules pass the same TSC review process.
207
+
208
+ ---
209
+
210
+ ## Conformance gate
211
+
212
+ A correlation rule's CI gate has an additional check beyond the
213
+ atomic-rule gate:
214
+
215
+ - Engine MUST be able to load the rule (parse + validate).
216
+ - Engine MUST evaluate the correlation against a fixture event
217
+ stream included in the rule's `test_cases.true_positive_streams`.
218
+ - Engine MUST NOT fire on `test_cases.true_negative_streams`.
219
+
220
+ Fixture event streams are JSON Lines files in
221
+ `tests/correlation-streams/<rule-id>/`.
222
+
223
+ ---
224
+
225
+ ## Example fixture stream (positive case for ATR-COR-2026-00001)
226
+
227
+ ```jsonl
228
+ {"@timestamp":"2026-05-25T10:00:00Z","atr.event_id":"01927e2d-7b32-7c41-9e84-0001","atr.rule_id":"ATR-2026-00012","agent.id":"agt-abc","session.id":"sess-1","atr.matched_field":"agent_output","atr.category":"prompt-injection"}
229
+ {"@timestamp":"2026-05-25T10:00:30Z","atr.event_id":"01927e2d-7b32-7c41-9e84-0002","atr.rule_id":"ATR-2026-00115","agent.id":"agt-abc","session.id":"sess-1","atr.matched_field":"tool_call","atr.category":"tool-poisoning"}
230
+ {"@timestamp":"2026-05-25T10:01:00Z","atr.event_id":"01927e2d-7b32-7c41-9e84-0003","atr.rule_id":"ATR-2026-00345","agent.id":"agt-abc","session.id":"sess-1","atr.matched_field":"memory_write","atr.category":"context-exfiltration","memory.store_id":"mem-xyz"}
231
+ {"@timestamp":"2026-05-27T14:32:00Z","atr.event_id":"01927e2d-7b32-7c41-9e84-0004","atr.rule_id":"ATR-2026-00610","agent.id":"agt-abc","session.id":"sess-22","atr.matched_field":"agent_output","atr.category":"context-exfiltration"}
232
+ ```
233
+
234
+ Engine MUST emit one correlation event after consuming all four
235
+ above, referencing all four event IDs in `evidence.upstream_chain`
236
+ of the output event.
237
+
238
+ ---
239
+
240
+ ## Example fixture stream (negative case)
241
+
242
+ Same as above but with different `agent.id` values across events.
243
+ Engine MUST NOT correlate (join key mismatch).
244
+
245
+ ---
246
+
247
+ ## Performance bounds
248
+
249
+ Correlation evaluation must remain bounded:
250
+
251
+ - **Memory:** O(N events × M correlation rules × K state per rule).
252
+ Engines MUST evict oldest state when memory budget exceeded.
253
+ - **CPU per event:** O(M correlation rules), with O(1) state update
254
+ per rule on average. Catastrophic-backtracking is forbidden in
255
+ correlation logic.
256
+ - **Latency:** Correlation evaluation MUST NOT block atomic-rule
257
+ emission. Atomic events emit immediately; correlation events
258
+ emit on chain completion.
259
+
260
+ These bounds are guidelines; specific deployment SLAs (e.g., <100ms
261
+ p99 per event) belong to the engine's deployment specification, not
262
+ the spec.
263
+
264
+ ---
265
+
266
+ ## Versioning
267
+
268
+ Same versioning as atomic rules: SemVer with PATCH for backward-
269
+ compatible additions, MINOR for spec-relevant changes, MAJOR for
270
+ breaking changes. v1.0 is the initial release.
271
+
272
+ ---
273
+
274
+ ## References
275
+
276
+ - Sigma Correlation Rules Specification: https://github.com/SigmaHQ/sigma-specification/blob/main/specification/sigma-correlation-rules-specification.md
277
+ - Sigma rule design lessons: https://sigmahq.io/docs/guide/about.html
278
+ - A2A delegation patterns: https://datatracker.ietf.org/doc/draft-ni-a2a-ai-agent-security-requirements/
279
+ - SpAIware (memory-poisoning persistence): https://www.sciencedirect.com/science/article/abs/pii/S0167739X25002894
280
+ - ATR Event Format Spec v1.0: spec/atr-event-v1.0.md
281
+ - ATR Rule Format Spec v1.0: ATR-SPEC-v1.md
@@ -0,0 +1,294 @@
1
+ # ATR Event Format v1.0 — OpenTelemetry-aligned
2
+
3
+ > **STATUS: PROPOSED v1.0 — NOT YET RATIFIED.** This specification describes
4
+ > a target event format for community comment. The current TypeScript production
5
+ > engine continues to emit its existing event shape. Adopters should NOT
6
+ > migrate to this format until ratification. See `STANDARDIZATION-STATUS.md`
7
+ > for full status.
8
+
9
+ **Status:** Draft for AEP-002 ratification — NOT RATIFIED
10
+ **Date:** 2026-05-25
11
+ **License:** CC BY 4.0
12
+ **Required by (on ratification):** Conformant engine output, downstream SIEM/SOAR ingestion, EU AI Act Article 50 evidence chains
13
+
14
+ ---
15
+
16
+ ## Purpose
17
+
18
+ When a conformant ATR engine fires a rule, it emits an **event**.
19
+ This document specifies the event format.
20
+
21
+ Three requirements forced the design:
22
+
23
+ 1. **OpenTelemetry alignment.** Existing agent-observability stacks
24
+ (LangSmith, Logfire, Datadog APM, Honeycomb) already ingest OTEL
25
+ spans. An ATR event that maps cleanly into an OTEL span attribute
26
+ set is consumable by these stacks zero-modification.
27
+
28
+ 2. **EU AI Act Article 50 evidence.** Article 50 obligations (apply
29
+ 2 August 2026) require deployer-side evidence of AI interaction.
30
+ ATR events must carry sufficient identity + provenance + signature
31
+ data to land in an audit binder without supplementary munging.
32
+
33
+ 3. **NIST AI RMF MEASURE function.** OSCAL assessment-result format
34
+ requires structured observation records. ATR events must be
35
+ one-to-one mappable to OSCAL `observation` entries so audit
36
+ pipelines (AWS Config, RegScale, Centraleyes) can ingest natively.
37
+
38
+ ---
39
+
40
+ ## Event JSON Schema reference
41
+
42
+ Machine-readable schema: `spec/schema/event.schema.json`.
43
+
44
+ This document is the normative prose specification. In case of
45
+ discrepancy between the two, **the prose spec governs**; the JSON
46
+ Schema must be corrected to match (via AEP).
47
+
48
+ ---
49
+
50
+ ## Required fields
51
+
52
+ All conformant engines MUST emit these fields on every event.
53
+
54
+ ### Identification
55
+
56
+ | Field | Type | Description |
57
+ |---|---|---|
58
+ | `@timestamp` | RFC 3339 UTC string | When the rule fired. |
59
+ | `atr.event_id` | UUID v7 (time-ordered) | Globally unique event identifier. |
60
+ | `atr.spec_version` | string | ATR spec version this event conforms to. v1.0 = `"1.0"`. |
61
+ | `atr.engine_id` | string | Identifier of the engine that produced the event. Format: `<vendor>/<product>/<version>`. Example: `atr/typescript-reference/3.1.0`, `cisco/ai-defense/2.4.1`, `microsoft/agent-governance-toolkit/2026.05`. |
62
+
63
+ ### Rule attribution
64
+
65
+ | Field | Type | Description |
66
+ |---|---|---|
67
+ | `atr.rule_id` | string | The matched rule ID. Format per ATR Rule Format Spec § 2: `ATR-YYYY-NNNNN` for canonical rules, `ATR-XX-YYYY-NNNNN` for sovereign-prefixed rules. |
68
+ | `atr.rule_version` | integer | The `rule_version` field from the matched rule's YAML. |
69
+ | `atr.rule_status` | enum | `draft` / `experimental` / `stable` / `deprecated` per rule's `status` field. |
70
+ | `atr.rule_maturity` | enum | `draft` / `test` / `stable` per rule's `maturity` field. |
71
+ | `atr.rule_review_status` | enum | `unreviewed` / `community_reviewed` / `tsc_approved` per governance/CHARTER.md § 5. |
72
+
73
+ ### Detection result
74
+
75
+ | Field | Type | Description |
76
+ |---|---|---|
77
+ | `atr.severity` | enum | `critical` / `high` / `medium` / `low` / `informational` from matched rule. |
78
+ | `atr.category` | string | Rule's top-level category from `spec/category-registry/v1.0.yaml`, OR `unknown` if engine encountered unregistered category (per forward-compatibility rule). |
79
+ | `atr.subcategory` | string \| null | Optional finer classification from rule's `tags.subcategory`. |
80
+ | `atr.confidence` | number 0.0-1.0 | Engine's confidence in the match. For deterministic regex matches: `1.0`. For probabilistic / ML-judge matches (future): per the rule's declared semantics. |
81
+ | `atr.matched_field` | enum | Which field triggered the match. One of: `user_input`, `agent_output`, `tool_call`, `tool_response`, `skill_content`, `mcp_exchange`, `memory_write`, `multi_agent_message`. |
82
+ | `atr.matched_value_redacted` | string | The matched portion of the input. **MUST be redacted by default** — sensitive content (api keys, PII) replaced with `[REDACTED:type:length]`. Engines MAY disable redaction in `forensic_mode`, which MUST be explicitly enabled per deployment. |
83
+
84
+ ### Agent + session context
85
+
86
+ | Field | Type | Description |
87
+ |---|---|---|
88
+ | `agent.id` | string | Stable identifier of the agent instance. |
89
+ | `agent.platform` | string | Agent platform name. Common values: `claude_code`, `cursor`, `openclaw`, `codex_cli`, `windsurf`, `gemini_cli`, `cline`, `continue`, `langchain`, `autogen`, `crewai`. Engines SHOULD use this canonical set; unknown values are accepted. |
90
+ | `agent.platform_version` | string \| null | Version of the agent platform. |
91
+ | `session.id` | string | Stable identifier of the agent session. |
92
+ | `service.name` | string | OTEL semantic convention. The service that hosts the agent. |
93
+ | `service.version` | string | OTEL semantic convention. |
94
+
95
+ ### Response
96
+
97
+ | Field | Type | Description |
98
+ |---|---|---|
99
+ | `atr.response_action` | array of enum | Recommended response actions from rule's `response.actions`. Subset of: `block_input`, `block_output`, `redact`, `alert`, `snapshot`, `quarantine`, `terminate_session`. |
100
+ | `atr.response_taken` | array of enum | What the engine / agent platform actually did. May differ from recommended if local policy overrides. |
101
+ | `atr.response_threshold_met` | boolean | Whether the rule's `auto_response_threshold` was met. |
102
+
103
+ ### Evidence + provenance
104
+
105
+ | Field | Type | Description |
106
+ |---|---|---|
107
+ | `evidence.observation_id` | UUID | Identifier for cross-reference into OSCAL `observation` records. Same as `atr.event_id` recommended unless an existing system has its own. |
108
+ | `evidence.signature` | base64 ed25519 | Signature over the canonical JSON encoding of this event. Signed by the engine's deployment-time key. Required for EU AI Act Article 50 evidence chains and NIST AI RMF audit pipelines. May be omitted in `dev_mode` deployments. |
109
+ | `evidence.signature_key_id` | string | Identifier of the signing key. SHOULD reference a key registered with the deployer's CA. |
110
+ | `evidence.upstream_chain` | array \| null | When this event is part of a multi-agent chain (A2A), the upstream event IDs that led to this detection. Enables forensic chain reconstruction. |
111
+
112
+ ## Optional fields
113
+
114
+ ### Tool call detail (when `atr.matched_field == "tool_call"` or `"tool_response"`)
115
+
116
+ | Field | Type |
117
+ |---|---|
118
+ | `tool.name` | string |
119
+ | `tool.args` | object (redacted) |
120
+ | `tool.privilege_class` | string |
121
+ | `tool.target_jurisdiction` | ISO 3166-1 alpha-2 \| `und` |
122
+
123
+ The `tool.target_jurisdiction` field is for EU AI Act + GDPR cross-
124
+ border data-flow audit. Required when the engine knows where the
125
+ tool's effect lands (e.g., an `s3.put` tool call where bucket region
126
+ is known).
127
+
128
+ ### Multi-agent chain detail (when `atr.matched_field == "multi_agent_message"`)
129
+
130
+ | Field | Type |
131
+ |---|---|
132
+ | `agent.from_id` | string |
133
+ | `agent.to_id` | string |
134
+ | `agent.delegation_chain` | array of {agent_id, capability_grant, granted_by} |
135
+ | `agent.identity_assertion` | JWT \| null |
136
+
137
+ The `agent.identity_assertion` field anticipates the IETF AI agent
138
+ auth drafts (`draft-klrc-aiagent-auth-00`, `draft-ni-a2a-ai-agent-
139
+ security-requirements-01`) — once those reach RFC, the field carries
140
+ the canonical assertion format.
141
+
142
+ ### Memory write detail (when `atr.matched_field == "memory_write"`)
143
+
144
+ | Field | Type |
145
+ |---|---|
146
+ | `memory.store_id` | string |
147
+ | `memory.write_key` | string |
148
+ | `memory.persistence_scope` | enum | `session` \| `user` \| `agent_global` |
149
+
150
+ This captures the SpAIware (Rehberger 2026) attack class — memory-
151
+ poisoning persistence across sessions.
152
+
153
+ ### Sovereign attestation (when rule ID is sovereign-prefixed)
154
+
155
+ | Field | Type |
156
+ |---|---|
157
+ | `atr.sovereign_attestation` | object {signer, signature, ca_chain} |
158
+
159
+ Required when the matched rule carries a sovereign prefix
160
+ (`ATR-DE-`, `ATR-SG-`, `ATR-TW-`, etc.) per governance/CHARTER.md § 8.2.
161
+ Engines MUST validate the attestation against the TSC-maintained
162
+ sovereign key registry before honoring the event's elevated trust.
163
+
164
+ ---
165
+
166
+ ## Forbidden fields
167
+
168
+ The following MUST NOT appear in an ATR event under any circumstance:
169
+
170
+ - Raw user PII (names, addresses, phone numbers). PII detected by the
171
+ rule is referenced via `atr.matched_value_redacted` with type and
172
+ length only.
173
+ - Raw API keys / credentials / tokens. Always redacted.
174
+ - Full prompt / response text in `matched_value_redacted`. Only the
175
+ matched fragment, redacted.
176
+
177
+ Engines that operate in `forensic_mode` MAY emit additional fields
178
+ for in-flight audit, but these MUST be explicitly enabled per
179
+ deployment AND clearly distinguished in event metadata.
180
+
181
+ ---
182
+
183
+ ## OpenTelemetry mapping (informative)
184
+
185
+ For OTEL ingestion, ATR events map to spans:
186
+
187
+ ```
188
+ OpenTelemetry Span ATR Event Field
189
+ ───────────────────── ──────────────────────────
190
+ span.name → "atr.detection." + atr.category
191
+ span.kind → "INTERNAL"
192
+ span.start_time → @timestamp
193
+ span.duration → engine's evaluation time
194
+ span.status.code → "ERROR" if atr.severity in [critical, high]
195
+ "OK" otherwise
196
+ span.attributes.atr.* → all atr.* fields
197
+ span.attributes.agent.* → all agent.* fields
198
+ span.attributes.session.id → session.id
199
+ span.attributes.service.name → service.name
200
+ span.events → [{name: "atr.rule_matched",
201
+ attributes: {rule_id, matched_field}}]
202
+ span.resource.attributes → service.name, service.version
203
+ ```
204
+
205
+ This mapping is informative; downstream tools may consume the raw
206
+ ATR event JSON without OTEL conversion.
207
+
208
+ ---
209
+
210
+ ## OSCAL assessment-result mapping (informative)
211
+
212
+ For NIST AI RMF + OSCAL pipelines, each ATR event maps to one OSCAL
213
+ `observation`:
214
+
215
+ ```
216
+ OSCAL observation ATR Event Field
217
+ ────────────────── ────────────────────
218
+ uuid → evidence.observation_id (UUID v7)
219
+ collected → @timestamp
220
+ title → "ATR rule " + atr.rule_id + " matched"
221
+ description → human-readable from rule's `description` field
222
+ methods → ["AUTOMATED"]
223
+ types → ["finding"]
224
+ subjects → [{type: "component",
225
+ subject-uuid: agent.id}]
226
+ relevant-evidence → [{href: link to atr.event_id,
227
+ description: "ATR detection event"}]
228
+ remarks → free-form, may include atr.response_taken
229
+ ```
230
+
231
+ This mapping enables zero-write integration with OSCAL profile-based
232
+ audit. ATR events stream into OSCAL assessment-result format
233
+ without manual munging.
234
+
235
+ ---
236
+
237
+ ## Example event
238
+
239
+ ```json
240
+ {
241
+ "@timestamp": "2026-05-25T08:14:32.182Z",
242
+ "atr.event_id": "01927e2d-7b32-7c41-9e84-3b8f2a1e9c54",
243
+ "atr.spec_version": "1.0",
244
+ "atr.engine_id": "atr/typescript-reference/3.1.0",
245
+ "atr.rule_id": "ATR-2026-00525",
246
+ "atr.rule_version": 1,
247
+ "atr.rule_status": "stable",
248
+ "atr.rule_maturity": "test",
249
+ "atr.rule_review_status": "community_reviewed",
250
+ "atr.severity": "critical",
251
+ "atr.category": "skill-compromise",
252
+ "atr.subcategory": "supply-chain-worm",
253
+ "atr.confidence": 1.0,
254
+ "atr.matched_field": "skill_content",
255
+ "atr.matched_value_redacted": "[REDACTED:identifier:18] persistence daemon installed",
256
+ "atr.response_action": ["block_input", "alert", "snapshot"],
257
+ "atr.response_taken": ["block_input", "alert"],
258
+ "atr.response_threshold_met": true,
259
+ "agent.id": "agt-customer-12345-claude-prod-01",
260
+ "agent.platform": "claude_code",
261
+ "agent.platform_version": "1.8.4",
262
+ "session.id": "sess-2026-05-25-bk9a8x",
263
+ "service.name": "panguard-scan",
264
+ "service.version": "1.4.13",
265
+ "evidence.observation_id": "01927e2d-7b32-7c41-9e84-3b8f2a1e9c54",
266
+ "evidence.signature": "MEQCIBdJpL3zEoXxKj9F/qqM8DxFJp7Q...",
267
+ "evidence.signature_key_id": "kid:panguard-scan-prod-2026-05",
268
+ "evidence.upstream_chain": null
269
+ }
270
+ ```
271
+
272
+ ---
273
+
274
+ ## Versioning
275
+
276
+ This spec is at v1.0. Field additions are minor-version-compatible
277
+ (v1.x) and do not break conformant consumers. Field removals or
278
+ semantic changes are major-version (v2.0) and require an AEP.
279
+
280
+ Conformant engines MUST emit `atr.spec_version` so consumers can
281
+ adapt to future versions.
282
+
283
+ ---
284
+
285
+ ## References
286
+
287
+ - OpenTelemetry semantic conventions: https://opentelemetry.io/docs/specs/semconv/
288
+ - OSCAL Assessment Results: https://pages.nist.gov/OSCAL/concepts/layer/assessment/assessment-results/
289
+ - EU AI Act Article 50: https://artificialintelligenceact.eu/article/50/
290
+ - UUID v7 (time-ordered): https://datatracker.ietf.org/doc/rfc9562/
291
+ - Ed25519 signing: https://datatracker.ietf.org/doc/rfc8032/
292
+ - IETF AI agent auth draft: https://datatracker.ietf.org/doc/html/draft-klrc-aiagent-auth-00
293
+ - ATR Rule Format Spec v1.0: ATR-SPEC-v1.md
294
+ - ATR Category Registry v1.0: spec/category-registry/v1.0.yaml