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,307 @@
1
+ # ATR Profile Format v1.0
2
+
3
+ > **STATUS: PROPOSED v1.0 — NOT YET RATIFIED.** This specification describes
4
+ > a target profile format for community comment. No formal profile resolver
5
+ > is shipping yet in the production engine. See `STANDARDIZATION-STATUS.md`
6
+ > for full status.
7
+
8
+ **Status:** Draft for AEP-003 ratification — NOT RATIFIED
9
+ **Date:** 2026-05-25
10
+ **License:** CC BY 4.0
11
+ **Required by (on ratification):** Conformance claims, sovereign sub-rule packages, F500 compliance binders
12
+
13
+ ---
14
+
15
+ ## Purpose
16
+
17
+ A **profile** is a named subset of the ATR rule corpus. An adopter
18
+ claims conformance to a profile, not to "all of ATR." This enables:
19
+
20
+ 1. **Tiered conformance claims.** A startup can claim "ATR-baseline-
21
+ runtime conformant" without having to run the full 427-rule
22
+ corpus.
23
+ 2. **Compliance binder mapping.** Profiles can be defined per
24
+ regulatory framework (EU AI Act Article 50, NIST AI RMF MEASURE,
25
+ ISO/IEC 42001 Annex). Audit pipelines consume the profile, not
26
+ the entire corpus.
27
+ 3. **Sovereign scoping.** A sovereign authority can ship a profile
28
+ that includes its own `ATR-XX-*` rules plus the relevant canonical
29
+ subset for its jurisdiction.
30
+ 4. **Domain-specific deployment.** Financial-services agents need
31
+ different rule coverage than healthcare agents. Profiles let
32
+ verticals declare their relevant subset.
33
+
34
+ Profiles are inspired by NIST OSCAL `profile` format (which assembles
35
+ a subset of a control catalog) and the FedRAMP / NIST 800-53
36
+ baseline pattern (Low / Moderate / High).
37
+
38
+ ---
39
+
40
+ ## Profile JSON Schema reference
41
+
42
+ Machine-readable schema: `spec/schema/profile.schema.json`.
43
+
44
+ This Markdown document is the normative prose spec; JSON Schema must
45
+ match (corrected via AEP if drift).
46
+
47
+ ---
48
+
49
+ ## Required fields
50
+
51
+ ```yaml
52
+ profile:
53
+ schema_version: "1.0" # ATR profile spec version
54
+ id: "atr-baseline-runtime" # globally unique profile identifier
55
+ title: "ATR Baseline Runtime Profile"
56
+ version: "1.0.0" # profile version
57
+ description: >
58
+ Minimum runtime detection profile for any AI agent deployment.
59
+ Covers the high-severity attack classes that occur in every
60
+ deployed agent runtime regardless of vertical.
61
+ author: "ATR TSC"
62
+ date: "2026-05-25"
63
+ license: "CC-BY-4.0"
64
+ status: "draft" # draft | stable | deprecated
65
+ conformance_bound:
66
+ spec_version_min: "1.0"
67
+ spec_version_max: null # null = any future version
68
+ minimum_rule_coverage: 1.00 # 1.0 = MUST load all included rules
69
+ minimum_engine_passing: 1.00 # engine MUST pass 100% of conformance corpus when running this profile
70
+
71
+ inclusions:
72
+ - rule_id: "ATR-2026-00001" # explicit rule ID
73
+ - rule_id: "ATR-2026-00525"
74
+ - rule_id_pattern: "ATR-2026-005*" # glob pattern
75
+ - category: "prompt-injection" # all rules in category
76
+ - tag_match: # all rules matching tag filter
77
+ severity: ["critical", "high"]
78
+ maturity: ["stable", "test"]
79
+
80
+ exclusions:
81
+ - rule_id: "ATR-2026-00444" # explicit exclusion (overrides inclusions)
82
+ - tag_match:
83
+ maturity: ["draft"] # exclude draft rules from this profile
84
+
85
+ resolved_rules_summary: # populated at profile-resolution time, informative
86
+ total: 138
87
+ by_category:
88
+ prompt-injection: 65
89
+ tool-poisoning: 18
90
+ skill-compromise: 22
91
+ ...
92
+ ```
93
+
94
+ ---
95
+
96
+ ## Inclusion + exclusion semantics
97
+
98
+ Profile resolution is a deterministic set-theoretic operation:
99
+
100
+ ```
101
+ resolved = ∅
102
+ for incl in inclusions:
103
+ resolved ∪= rules matching incl
104
+ for excl in exclusions:
105
+ resolved -= rules matching excl
106
+ ```
107
+
108
+ Inclusions are unioned. Exclusions are subtracted last (so an
109
+ explicit exclusion overrides any inclusion).
110
+
111
+ Engines MUST resolve profiles deterministically. Two engines loading
112
+ the same profile against the same corpus version MUST resolve to the
113
+ same rule set.
114
+
115
+ ---
116
+
117
+ ## Conformance bounds
118
+
119
+ Each profile declares:
120
+
121
+ - `spec_version_min` / `spec_version_max`: which ATR spec versions
122
+ this profile is valid against.
123
+ - `minimum_rule_coverage`: fraction of included rules the engine
124
+ must load successfully to claim conformance. Typically `1.00`.
125
+ - `minimum_engine_passing`: fraction of the conformance corpus
126
+ test cases the engine must pass while running this profile.
127
+
128
+ A claim of "engine X is ATR-baseline-runtime conformant" requires
129
+ running the conformance corpus through the engine with this
130
+ profile loaded, and meeting both bounds.
131
+
132
+ ---
133
+
134
+ ## Canonical profiles published at v1.0
135
+
136
+ The TSC publishes a set of canonical profiles at
137
+ `spec/profiles/v1.0/`. Initial set:
138
+
139
+ | Profile ID | Purpose | Approximate rule count |
140
+ |---|---|---|
141
+ | `atr-baseline-runtime` | Minimum coverage for any agent runtime. Critical/high severity only, stable+test maturity. | ~130-180 |
142
+ | `atr-full-corpus` | All canonical rules at all maturity levels. | full (427+) |
143
+ | `atr-stable-only` | Only stable+tsc_approved rules. F500 compliance baseline. | ~50-80 |
144
+ | `atr-eu-aiact-art50` | Rules relevant to EU AI Act Article 50 disclosure obligations. | TBD per legal review |
145
+ | `atr-nist-rmf-measure` | Rules relevant to NIST AI RMF MEASURE function. | TBD per OSCAL mapping |
146
+ | `atr-iso42001-annex-a` | Rules relevant to ISO/IEC 42001 AIMS Annex A controls. | TBD |
147
+ | `atr-skill-supply-chain` | Rules targeting skill / package supply-chain compromise (Mini Shai-Hulud class). | ~30-50 |
148
+ | `atr-mcp-runtime-only` | Rules with scan_target=mcp only. | ~270 |
149
+ | `atr-skill-static-only` | Rules with scan_target=skill (static SKILL.md scanning). | ~80 |
150
+
151
+ Vertical-specific profiles (financial, healthcare, public-sector)
152
+ are published by the relevant working group as community profiles,
153
+ not canonical.
154
+
155
+ Sovereign-specific profiles (`atr-sovereign-de`, `atr-sovereign-sg`)
156
+ are published by the sovereign authority per their sovereign sub-
157
+ range and reviewed by the TSC for spec conformance only (not
158
+ content review — content is sovereign authority's editorial call).
159
+
160
+ ---
161
+
162
+ ## Versioning
163
+
164
+ Profile versioning follows SemVer:
165
+
166
+ - **PATCH** bump: rule additions to inclusions / exclusions that do
167
+ not remove existing coverage.
168
+ - **MINOR** bump: rule removals or scope changes that affect coverage.
169
+ - **MAJOR** bump: schema changes or conformance-bound tightening.
170
+
171
+ Consumers SHOULD pin to a specific profile version
172
+ (`atr-baseline-runtime@1.0.0`) for audit reproducibility.
173
+
174
+ ---
175
+
176
+ ## Example — `atr-baseline-runtime` v1.0.0 (canonical)
177
+
178
+ ```yaml
179
+ profile:
180
+ schema_version: "1.0"
181
+ id: "atr-baseline-runtime"
182
+ title: "ATR Baseline Runtime Profile"
183
+ version: "1.0.0"
184
+ description: >
185
+ Minimum runtime detection profile for any AI agent deployment.
186
+ Covers high-severity attack classes (prompt injection, tool
187
+ poisoning, privilege escalation, skill compromise) at stable
188
+ and test maturity. Excludes draft, experimental, and deprecated
189
+ rules. Designed as the bare-minimum claim for any production
190
+ agent deployment.
191
+ author: "ATR TSC"
192
+ date: "2026-05-25"
193
+ license: "CC-BY-4.0"
194
+ status: "stable"
195
+ conformance_bound:
196
+ spec_version_min: "1.0"
197
+ spec_version_max: null
198
+ minimum_rule_coverage: 1.00
199
+ minimum_engine_passing: 1.00
200
+
201
+ inclusions:
202
+ - tag_match:
203
+ category: ["prompt-injection", "tool-poisoning",
204
+ "privilege-escalation", "skill-compromise"]
205
+ severity: ["critical", "high"]
206
+ maturity: ["stable", "test"]
207
+
208
+ exclusions:
209
+ - rule_status: "deprecated"
210
+ - rule_status: "draft"
211
+ - tag_match:
212
+ maturity: ["draft", "experimental"]
213
+ ```
214
+
215
+ ---
216
+
217
+ ## Example — `atr-sovereign-de` v1.0.0 (sovereign profile)
218
+
219
+ ```yaml
220
+ profile:
221
+ schema_version: "1.0"
222
+ id: "atr-sovereign-de"
223
+ title: "ATR German Sovereign Profile (BSI-issued)"
224
+ version: "1.0.0"
225
+ description: >
226
+ Sovereign profile maintained by German BSI for use in regulated
227
+ sectors under NIS2 / BSI-Grundschutz / German implementation of
228
+ EU AI Act. Includes canonical baseline plus BSI-issued
229
+ ATR-DE-* rules for German-specific threat landscape.
230
+ author: "Bundesamt für Sicherheit in der Informationstechnik (BSI)"
231
+ date: "2026-05-25"
232
+ license: "CC-BY-4.0"
233
+ status: "draft"
234
+ conformance_bound:
235
+ spec_version_min: "1.0"
236
+ minimum_rule_coverage: 1.00
237
+ minimum_engine_passing: 1.00
238
+
239
+ inclusions:
240
+ - profile: "atr-baseline-runtime@1.0.0" # inherit baseline
241
+ - rule_id_pattern: "ATR-DE-*" # include all DE-prefixed rules
242
+ - tag_match:
243
+ category: ["context-exfiltration"] # additional DE-relevant category
244
+ severity: ["critical", "high", "medium"]
245
+
246
+ exclusions:
247
+ - rule_id_pattern: "ATR-2026-009*" # de-scoped per BSI editorial
248
+ ```
249
+
250
+ The `profile: "<other-profile>@<version>"` inclusion syntax enables
251
+ composition — a sovereign profile inherits baseline + adds its
252
+ sovereign-specific rules + de-scopes any rules its authority does
253
+ not endorse.
254
+
255
+ ---
256
+
257
+ ## Profile resolution algorithm (normative)
258
+
259
+ ```python
260
+ def resolve_profile(profile, corpus, recursion_guard):
261
+ if profile.id in recursion_guard:
262
+ raise ProfileCircularReference(profile.id)
263
+ recursion_guard.add(profile.id)
264
+
265
+ resolved = set()
266
+
267
+ for incl in profile.inclusions:
268
+ if incl.profile:
269
+ base_profile = corpus.profiles[incl.profile_id]
270
+ resolved |= resolve_profile(base_profile, corpus, recursion_guard)
271
+ if incl.rule_id:
272
+ resolved.add(corpus.rules[incl.rule_id])
273
+ if incl.rule_id_pattern:
274
+ resolved |= {r for r in corpus.rules if fnmatch(r.id, incl.rule_id_pattern)}
275
+ if incl.category:
276
+ resolved |= {r for r in corpus.rules if r.tags.category == incl.category}
277
+ if incl.tag_match:
278
+ resolved |= {r for r in corpus.rules if matches_tag_filter(r, incl.tag_match)}
279
+
280
+ for excl in profile.exclusions:
281
+ if excl.rule_id:
282
+ resolved.discard(corpus.rules[excl.rule_id])
283
+ if excl.rule_id_pattern:
284
+ resolved -= {r for r in corpus.rules if fnmatch(r.id, excl.rule_id_pattern)}
285
+ if excl.tag_match:
286
+ resolved -= {r for r in corpus.rules if matches_tag_filter(r, excl.tag_match)}
287
+ if excl.rule_status:
288
+ resolved -= {r for r in resolved if r.status == excl.rule_status}
289
+
290
+ recursion_guard.remove(profile.id)
291
+ return resolved
292
+ ```
293
+
294
+ Circular profile references are an error. Resolution depth is
295
+ unbounded by spec; engines MAY impose a depth limit for performance,
296
+ which MUST be ≥ 10.
297
+
298
+ ---
299
+
300
+ ## References
301
+
302
+ - NIST OSCAL Profile model: https://pages.nist.gov/OSCAL/concepts/layer/profile/profile/
303
+ - NIST 800-53 baselines (Low/Moderate/High): https://csrc.nist.gov/publications/detail/sp/800-53b/final
304
+ - FedRAMP profile pattern: https://www.fedramp.gov/baselines/
305
+ - SemVer 2.0: https://semver.org/
306
+ - ATR Rule Format Spec v1.0: ATR-SPEC-v1.md
307
+ - ATR Category Registry v1.0: spec/category-registry/v1.0.yaml
@@ -1,15 +1,15 @@
1
1
  # ATR Rule Schema -- Agent Threat Rules
2
- # Version: 0.1.0-draft
3
2
  #
4
- # Inspired by Sigma rule format, extended for AI Agent attack surfaces.
5
- # This schema defines the structure for all ATR detection rules.
3
+ # Machine-readable form of the rule structure defined in SPEC.md
4
+ # (Section 5). When the two disagree, SPEC.md is normative.
6
5
  #
7
- # Status: RFC (Request for Comments)
6
+ # Status: Draft (tracks SPEC.md v1.0)
8
7
  # License: MIT
8
+ # Canonical reference: https://github.com/Agent-Threat-Rule/agent-threat-rules/blob/main/SPEC.md
9
9
 
10
10
  $schema: "https://json-schema.org/draft/2020-12/schema"
11
11
  title: ATR Rule Schema
12
- description: Schema for Agent Threat Rules (ATR) detection rules
12
+ description: Schema for Agent Threat Rules (ATR) detection rules. Tracks SPEC.md v1.0.
13
13
  version: "1.0.0"
14
14
 
15
15
  type: object
@@ -22,12 +22,14 @@ required:
22
22
  - author
23
23
  - date
24
24
  - severity
25
- - detection_tier
26
25
  - maturity
27
26
  - tags
28
27
  - agent_source
29
28
  - detection
30
29
  - response
30
+ # Note (v1.1): detection_tier is now OPTIONAL. It was required by the
31
+ # pre-1.0 spec drafts but is superseded by detection.method (atr-method-v1.1.md §4).
32
+ # Rules MAY still set detection_tier for backward compatibility with older engines.
31
33
 
32
34
  properties:
33
35
 
@@ -78,8 +80,12 @@ properties:
78
80
 
79
81
  detection_tier:
80
82
  type: string
81
- enum: [pattern, behavioral, protocol]
82
- description: Detection approach used by this rule
83
+ enum: [pattern, signature, semantic, behavioral, protocol, trace]
84
+ description: >
85
+ Detection approach used by this rule. OPTIONAL (v1.1: superseded by
86
+ detection.method). Kept for backward compatibility with older engines.
87
+ Aligned with the 5 method values in atr-method-v1.1.md plus the legacy
88
+ "protocol" value for v1.0 conformance.
83
89
 
84
90
  maturity:
85
91
  type: string
@@ -134,6 +140,90 @@ properties:
134
140
  items:
135
141
  type: string
136
142
  description: "SAFE-MCP technique IDs (e.g., SMCP-T001)"
143
+ oscal_assessment_objective:
144
+ type: array
145
+ items:
146
+ type: string
147
+ description: >
148
+ OSCAL Assessment Plan/Result objective IDs or component-definition UUIDs
149
+ this Rule supplies evidence for. Lets the rule act as an evidence source
150
+ beneath an OSCAL-driven assessment. See atr-method-v1.1.md §9.
151
+ nist_csf:
152
+ type: array
153
+ items:
154
+ type: string
155
+ description: >
156
+ NIST CSF 2.0 subcategory identifiers (e.g., DE.CM-09, PR.IR-01).
157
+ Required for citation in NIST IR 8596 Cyber AI Profile Informative References.
158
+ etsi_ts_104223:
159
+ type: array
160
+ items:
161
+ type: string
162
+ description: >
163
+ ETSI TS 104 223 principle / sub-principle identifiers (e.g., P4.3).
164
+ The ETSI standard upstreamed UK NCSC's AI Cyber Code of Practice (Jan 2025);
165
+ maps ATR Rules to the 13 principles / 72 sub-principles.
166
+ probe_id:
167
+ type: array
168
+ items:
169
+ type: string
170
+ description: >
171
+ Identifier of the adversarial probe (red-team generator) whose output this
172
+ Rule is designed to detect. Format: "<framework>:<probe-name>" e.g.
173
+ "pyrit:indirect_pi_v2" or "garak:promptinject.HijackHateHumans". Lets a
174
+ Rule pair with its generating probe so detection coverage can be measured
175
+ end-to-end against adversarial test suites. See atr-method-v1.1.md §9.2.
176
+ external_references:
177
+ type: object
178
+ description: >
179
+ Cross-references to detection rules in other vendor / community rule
180
+ registries that cover the same or related threats. Lets ATR act as a
181
+ taxonomy bridge across rule formats without claiming authority over
182
+ the other registry's rule IDs. See atr-method-v1.1.md §9.4.
183
+
184
+ Each property is an array of opaque identifiers in the target
185
+ registry's native format. ATR engines MUST NOT execute these
186
+ identifiers; they are evidence only. Downstream tooling MAY use
187
+ them to enrich SIEM events, correlate detections, or generate
188
+ OSCAL assessment results that span rule formats.
189
+ properties:
190
+ cccs_yara:
191
+ type: array
192
+ items:
193
+ type: string
194
+ description: >
195
+ CCCS-Yara rule names (e.g., "APT_CN_BEACON_2024"). Per the
196
+ 2026-05-26 CCCS-Yara#100 closing comment, cross-reference
197
+ ownership lives on the ATR side. See spec/external-registries/cccs-yara.md.
198
+ sigma:
199
+ type: array
200
+ items:
201
+ type: string
202
+ description: >
203
+ Sigma rule UUIDs (e.g., "12345678-1234-1234-1234-123456789abc")
204
+ that cover the same or correlated threat. Lets ATR rules bridge
205
+ into the wider Sigma ecosystem.
206
+ yara:
207
+ type: array
208
+ items:
209
+ type: string
210
+ description: >
211
+ Generic YARA rule names from public corpora (YARA-Forge,
212
+ Florian Roth's signature-base, etc.) covering related artifacts.
213
+ misp_taxonomy:
214
+ type: array
215
+ items:
216
+ type: string
217
+ description: >
218
+ MISP taxonomy entries (e.g., "atr:category=prompt-injection"
219
+ or "misp-taxonomies:dark-web=...") referencing this Rule.
220
+ stix_pattern:
221
+ type: array
222
+ items:
223
+ type: string
224
+ description: >
225
+ STIX 2.1 indicator pattern IDs covering the same Indicator
226
+ of Compromise.
137
227
  research:
138
228
  type: array
139
229
  items:
@@ -193,6 +283,7 @@ properties:
193
283
  - skill_lifecycle # MCP skill registration, update, removal events
194
284
  - skill_permission # Skill permission requests and boundary checks
195
285
  - skill_chain # Multi-skill invocation sequences
286
+ - agent_trace # Agent execution trace (OpenInference/OTel GenAI spans); see atr-method-v1.1.md
196
287
  description: Type of agent data stream to monitor
197
288
  framework:
198
289
  type: array
@@ -214,6 +305,167 @@ properties:
214
305
  type: object
215
306
  required: [conditions, condition]
216
307
  properties:
308
+ method:
309
+ type: string
310
+ enum: [pattern, signature, semantic, behavioral, trace]
311
+ default: pattern
312
+ description: >
313
+ Detection method this rule uses. Defaults to "pattern" (regex/string match
314
+ on text fields) for backward compatibility with v1.0 rules. Other methods
315
+ require additional fields documented in spec/atr-method-v1.1.md:
316
+ - signature: exact-match on hash / package_name / registry_url (see §5)
317
+ - semantic: LLM-as-judge intent classification (see §6)
318
+ - behavioral: metric threshold over a time window (see §7)
319
+ - trace: declarative assertions over agent execution traces (see §8)
320
+ Engines that do not implement a given method MUST skip rules using it
321
+ rather than fail closed on unknown method values.
322
+ signature:
323
+ type: object
324
+ description: >
325
+ REQUIRED when method=signature. See atr-method-v1.1.md §5.
326
+ required: [indicators]
327
+ properties:
328
+ indicators:
329
+ type: array
330
+ minItems: 1
331
+ description: "Non-empty list of indicator objects per §5.2.1"
332
+ items:
333
+ type: object
334
+ required: [type, value, target_field]
335
+ properties:
336
+ type:
337
+ type: string
338
+ enum: [sha256, sha512, blake2b-256, package_name, registry_url, skill_id]
339
+ description: "Indicator type. Hash types require hex-encoded value (lowercase)."
340
+ value:
341
+ type: string
342
+ description: "Indicator value (hex hash or string identifier)"
343
+ target_field:
344
+ type: string
345
+ description: "Source field on the Input to match against (e.g., skill.content, skill.manifest.name)"
346
+ provenance:
347
+ type: object
348
+ description: "OPTIONAL forensic provenance metadata"
349
+ properties:
350
+ first_observed:
351
+ type: string
352
+ description: "ISO 8601 date when indicator was first attributed"
353
+ source:
354
+ type: string
355
+ attribution:
356
+ type: string
357
+ match_logic:
358
+ type: string
359
+ enum: [any, all]
360
+ default: any
361
+ description: "any = match if any indicator matches; all = match only if every indicator matches"
362
+ semantic:
363
+ type: object
364
+ description: >
365
+ REQUIRED when method=semantic. See atr-method-v1.1.md §4.
366
+ properties:
367
+ judge_model_class:
368
+ type: string
369
+ description: "Class of judge model (e.g., gpt-4-class, llama-prompt-guard, claude-haiku)"
370
+ prompt_template:
371
+ type: string
372
+ description: "Prompt template with {{input}} placeholder"
373
+ output_schema:
374
+ type: object
375
+ description: "Expected JSON shape of judge output (category, confidence, evidence)"
376
+ threshold:
377
+ type: number
378
+ minimum: 0.0
379
+ maximum: 1.0
380
+ description: "Minimum confidence to trigger match"
381
+ cache_ttl:
382
+ type: integer
383
+ description: "Cache TTL in seconds for identical inputs"
384
+ judge_prompt_hash:
385
+ type: string
386
+ description: "SHA-256 hash of the canonical judge prompt for regression testing"
387
+ fallback_method:
388
+ type: string
389
+ enum: [pattern, none]
390
+ description: "Method to fall back to if judge is unavailable"
391
+ trace:
392
+ type: object
393
+ description: >
394
+ REQUIRED when method=trace. See atr-method-v1.1.md §8.
395
+ properties:
396
+ ingest_format:
397
+ type: string
398
+ enum: [openinference, otel_gen_ai]
399
+ default: openinference
400
+ description: "Trace ingest format the rule expects"
401
+ forbid:
402
+ type: array
403
+ description: "Span shapes that MUST NOT appear in the trace"
404
+ items: {type: object}
405
+ require:
406
+ type: array
407
+ description: "Span shapes that MUST appear (optionally with ordering constraints)"
408
+ items: {type: object}
409
+ invariant:
410
+ type: array
411
+ description: "Attributes that MUST hold across a set of spans"
412
+ items: {type: object}
413
+ behavioral:
414
+ type: object
415
+ description: >
416
+ REQUIRED when method=behavioral. See atr-method-v1.1.md §7.
417
+ required: [metric, aggregation, window, operator, threshold]
418
+ properties:
419
+ metric:
420
+ type: string
421
+ description: "Name of the metric being observed (e.g., tool_calls_per_session, token_spend_usd)"
422
+ aggregation:
423
+ type: string
424
+ enum: [count, sum, avg, max, distinct_count, rate]
425
+ description: "How event values aggregate into a single metric value over the window"
426
+ window:
427
+ type: string
428
+ description: "ISO 8601 duration (e.g., PT5M, PT1H) or shorthand (5m, 1h)"
429
+ operator:
430
+ type: string
431
+ enum: [gt, lt, gte, lte, eq, deviation_from_baseline]
432
+ description: "Comparison operator between aggregated metric and threshold"
433
+ threshold:
434
+ type: number
435
+ description: "Numeric value compared against the aggregated metric. For deviation_from_baseline, expressed as stddev multiplier or fractional change."
436
+ group_by:
437
+ type: array
438
+ items: {type: string}
439
+ description: "Dimensions to partition the aggregation over (e.g., session.id, user.id)"
440
+ filter:
441
+ type: object
442
+ description: "Pre-aggregation event filter using §8.3 predicate vocabulary"
443
+ baseline:
444
+ type: object
445
+ description: "Required only when operator=deviation_from_baseline"
446
+ properties:
447
+ source:
448
+ type: string
449
+ enum: [rolling_mean, historical_percentile, fixed]
450
+ lookback:
451
+ type: string
452
+ description: "Duration to compute baseline over (e.g., P7D)"
453
+ percentile:
454
+ type: number
455
+ minimum: 0
456
+ maximum: 100
457
+ value:
458
+ type: number
459
+ deviation_unit:
460
+ type: string
461
+ enum: [stddev, fraction]
462
+ min_events:
463
+ type: integer
464
+ minimum: 1
465
+ description: "Minimum event count in window before rule may fire"
466
+ cooldown:
467
+ type: string
468
+ description: "ISO 8601 duration the rule must not re-fire on same group_by partition after Match"
217
469
  conditions:
218
470
  description: >
219
471
  Detection conditions. Supports two formats:
@@ -241,6 +493,15 @@ properties:
241
493
  description:
242
494
  type: string
243
495
  description: Human-readable description of what this condition detects
496
+ language:
497
+ type: string
498
+ enum: [en, zh-Hant, zh-Hans, ja, es, ar]
499
+ default: en
500
+ description: >
501
+ BCP-47 language tag this condition targets. Optional; default 'en'.
502
+ Engine applies NFKC normalization at match time. Per-language
503
+ conditions on the same rule are combined under condition: any.
504
+ Adopted v3.0.0 (2026-05-18).
244
505
 
245
506
  # -- Named-map format (for complex/behavioral detection) --
246
507
  - type: object
@@ -312,6 +573,7 @@ properties:
312
573
  items:
313
574
  type: string
314
575
  enum:
576
+ # v1.0 vocabulary
315
577
  - block_input # Reject the user/agent input
316
578
  - block_output # Suppress the agent output
317
579
  - block_tool # Prevent the tool call from executing
@@ -322,6 +584,15 @@ properties:
322
584
  - escalate # Escalate to human reviewer
323
585
  - reduce_permissions # Reduce agent's available tools/capabilities
324
586
  - kill_agent # Terminate the agent process
587
+ # SPEC.md Appendix A canonical action vocabulary (v1.0+)
588
+ - block_request # Reject the originating request (generic)
589
+ - log_alert # Emit a structured alert event without blocking
590
+ - quarantine_artifact # Isolate a specific artifact (skill, tool, context blob)
591
+ - require_human_review # Pause the action pending operator approval
592
+ - redact_match # Hash or truncate matched substring in output
593
+ - rate_limit_source # Apply rate limit to the source agent/user/session
594
+ - revoke_credential # Revoke an active credential identified in the match
595
+ - notify_operator # Out-of-band notification (paging, email, chat)
325
596
  description: Actions to take when the rule triggers
326
597
  auto_response_threshold:
327
598
  type: string