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.
- package/README.md +365 -327
- package/dist/cli/scan-handler.d.ts +6 -0
- package/dist/cli/scan-handler.d.ts.map +1 -1
- package/dist/cli/scan-handler.js +27 -4
- package/dist/cli/scan-handler.js.map +1 -1
- package/dist/cli/semantic-judge-config.d.ts +7 -0
- package/dist/cli/semantic-judge-config.d.ts.map +1 -0
- package/dist/cli/semantic-judge-config.js +44 -0
- package/dist/cli/semantic-judge-config.js.map +1 -0
- package/dist/cli.js +183 -1
- package/dist/cli.js.map +1 -1
- package/dist/engine.d.ts +66 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +420 -3
- package/dist/engine.js.map +1 -1
- package/dist/eval/eval-harness.d.ts.map +1 -1
- package/dist/eval/eval-harness.js +9 -0
- package/dist/eval/eval-harness.js.map +1 -1
- package/dist/eval/run-hackaprompt-benchmark.js +9 -0
- package/dist/eval/run-hackaprompt-benchmark.js.map +1 -1
- package/dist/eval/run-pint-benchmark.js +9 -0
- package/dist/eval/run-pint-benchmark.js.map +1 -1
- package/dist/eval/skill-benchmark.d.ts +11 -0
- package/dist/eval/skill-benchmark.d.ts.map +1 -1
- package/dist/eval/skill-benchmark.js +57 -0
- package/dist/eval/skill-benchmark.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/judges/openai-compatible.d.ts +33 -0
- package/dist/judges/openai-compatible.d.ts.map +1 -0
- package/dist/judges/openai-compatible.js +145 -0
- package/dist/judges/openai-compatible.js.map +1 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +6 -1
- package/dist/mcp-server.js.map +1 -1
- package/dist/measurement/from-eval-harness.d.ts +70 -0
- package/dist/measurement/from-eval-harness.d.ts.map +1 -0
- package/dist/measurement/from-eval-harness.js +49 -0
- package/dist/measurement/from-eval-harness.js.map +1 -0
- package/dist/measurement/schema.d.ts +152 -0
- package/dist/measurement/schema.d.ts.map +1 -0
- package/dist/measurement/schema.js +178 -0
- package/dist/measurement/schema.js.map +1 -0
- package/dist/measurement/write.d.ts +64 -0
- package/dist/measurement/write.d.ts.map +1 -0
- package/dist/measurement/write.js +163 -0
- package/dist/measurement/write.js.map +1 -0
- package/dist/rule-scaffolder.d.ts +26 -0
- package/dist/rule-scaffolder.d.ts.map +1 -1
- package/dist/rule-scaffolder.js +221 -6
- package/dist/rule-scaffolder.js.map +1 -1
- package/dist/semantic-evaluator.d.ts +54 -0
- package/dist/semantic-evaluator.d.ts.map +1 -0
- package/dist/semantic-evaluator.js +131 -0
- package/dist/semantic-evaluator.js.map +1 -0
- package/dist/trace-evaluator.d.ts +22 -0
- package/dist/trace-evaluator.d.ts.map +1 -0
- package/dist/trace-evaluator.js +249 -0
- package/dist/trace-evaluator.js.map +1 -0
- package/dist/types.d.ts +152 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -3
- package/rules/agent-manipulation/ATR-2026-00032-goal-hijacking.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00074-cross-agent-privilege-escalation.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00076-inter-agent-message-spoofing.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00077-human-trust-exploitation.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00108-consensus-sybil-attack.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00116-a2a-message-validation.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00117-agent-identity-spoofing.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00118-approval-fatigue.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00119-social-engineering-via-agent.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00132-casual-authority-escalation.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00139-casual-authority-redirect.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00164-skill-scope-hijack.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00268-tense-framing-bypass.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00269-fitd-escalation.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00271-grandma-roleplay-jailbreak.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00273-dan-developer-mode-persona.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00287-threaten-json-coercive-output-threat.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00288-false-premise-injection.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00301-tap-tree-of-attacks-jailbreak.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00302-anti-dan-inverted-filter-persona.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00303-devmode-ranti-profanity-coercion.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00304-chatgpt-image-unlocker-markdown-injection.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00305-dan-mode-ablation-benchmark-coercion.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00306-autodan-genetic-jailbreak-suffix.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00307-inthewild-jailbreak-corpus-signature.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00314-amoral-unfiltered-custom-persona-jailbreak.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00317-free-of-restrictions-named-persona.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00318-moralizing-rant-then-unfiltered-bypass.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00319-developer-mode-dual-response-format.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00320-opposite-day-boolean-opposite-machine.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00322-fictional-world-format-override-jailbreak.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00323-dual-persona-simulation-jailbreak.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00324-neurosemantical-inversitis-disease-jailbreak.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00325-bob-hypothetical-unrestricted-chatbot.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00326-fake-developer-authority-chatdan-override.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00327-ai-ethics-law-bypass-declaration.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00328-named-mode-persona-override.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00329-no-withhold-factual-resource-persona.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00330-yoja-allcaps-settings-block-persona.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00331-terminal-cli-harmful-function-simulator.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00332-hacker-chan-culture-offensive-ai-persona.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00333-disease-animal-dual-ai-chatbot.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00334-two-entity-token-splitting-game.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00335-key-value-template-persona-injection.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00336-brm-false-information-machine-persona.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00337-obfuscated-system-announcement-injection.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00338-persongpt-hash-prefix-activation.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00339-bom-boolean-opposite-machine-persona-claim.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00340-h4x-amoral-unfiltered-character.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00341-char-rules-shortform-persona-injection.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00342-unicode-encoding-obfuscation-injection.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00343-lie-truth-dual-personality-uncensored.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00344-alt-ai-same-capabilities-no-restrictions.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00345-nlp-based-os-fictional-terminal-override.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00346-jailbreak-emoji-unlock-dual-format.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00347-yin-yang-hidden-knowledge-hidden-human-sim.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00348-arc-autonomous-real-calculation-rulebreaker.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00349-hgttg-hitchhikers-guide-no-restriction-oracle.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00350-black-alert-no-ethics-writing-assistant.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00351-dan-ofkilter-sms-abbreviated-persona.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00352-trainergpt-fix-my-ai-harmful-output-extraction.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00353-dual-chatgpt-dan-opposite-personality-format.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00354-reverse-harm-regardless-oracle-persona.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00355-ugh-anti-human-nefarious-ai-persona.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00356-google-gato-lamda-exploit-generation-persona.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00357-antifm-hate-violence-persona-injection.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00358-cumgpt-explicit-adult-named-persona.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00360-chj-carousel-clyde-no-ethics-bird.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00361-alter-ego-honesty-dual-consciousness-bypass.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00362-fictional-unfiltered-ai-comparison-jailbreak.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00363-rephrase-criminal-activity-second-person.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00364-dr-al-villain-plan-template-injection.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00365-reservoir-dogs-coercive-interrogation-roleplay.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00366-sneaky-pete-warp-facts-persona.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00368-prompt-browser-token-limit-jailbreak.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00369-gptx-starwars-unlimited-knowledge-persona.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00370-addi-german-dictator-propaganda-roleplay.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00371-ai-political-bias-manipulation.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00372-fictional-cia-secret-files-story-extraction.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00374-role-placeholder-persona-template-injection.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00375-character-description-rpg-explicit-template.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00376-identity-command-real-person-persona-injection.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00377-jailbreak-keyword-targetlanguage-template.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00379-lie-permission-logical-trap-jailbreak.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00380-fake-citation-biased-information-mandate.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00381-dan-story-narrative-continuation-prefix.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00383-cynical-sarcasm-ai-persona-bypass.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00384-protect-me-from-indirect-harm-tutorial.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00385-gigachad-dominant-aggressive-persona.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00386-daddy-sycophancy-manipulation-mandate.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00387-nsfw-character-sheet-generation-unlock.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00388-opposite-reply-omniscient-game.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00389-terminal-custom-ruleset-injection.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00391-persona-conditional-harm-unlock.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00392-authority-persona-violence-study-extraction.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00402-grandma-roleplay-harmful-substance-synthesis.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00404-goodside-threat-json-death-coercion.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00406-doctor-xml-policy-puppetry-interaction-config.yaml +1 -1
- package/rules/agent-manipulation/ATR-2026-00440-semantic-kernel-vector-store-eval-rce.yaml +2 -2
- package/rules/agent-manipulation/ATR-2026-00552-goal-drift-after-pressure-injection.yaml +216 -0
- package/rules/context-exfiltration/ATR-2026-00075-agent-memory-manipulation.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00102-disguised-analytics-exfiltration.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00113-credential-theft.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00114-oauth-token-abuse.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00115-env-var-harvesting.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00136-tool-response-data-piggyback.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00141-example-format-key-leak.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00142-piggyback-transition-words.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00145-obfuscated-key-disclosure.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00146-env-var-existence-probe.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00150-credential-in-tool-response.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00152-obfuscated-credential-leak.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00162-skill-credential-exfil-combo.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00212-mcp-atlassian-credential-leak.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00261-markdown-image-exfiltration.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00274-api-key-generation-request.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00275-system-prompt-training-data-extraction.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00290-divergence-repeat-word-training-extraction.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00291-biometric-surveillance-personal-data-request.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00293-educational-records-personal-data-request.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00294-financial-pii-personal-data-request.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00295-medical-pii-personal-data-request.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00405-markdown-image-url-exfiltration-xss.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00411-apikey-generation-completion-request.yaml +1 -1
- package/rules/context-exfiltration/ATR-2026-00422-nl-credential-disclosure.yaml +2 -2
- package/rules/context-exfiltration/ATR-2026-00524-claude-code-anthropic-base-url-credential-exfil.yaml +257 -0
- package/rules/context-exfiltration/ATR-2026-00548-cross-agent-session-context-leak.yaml +177 -0
- package/rules/context-exfiltration/ATR-2026-00566-librechat-is-a-chatgpt-clone-with-additi.yaml +93 -0
- package/rules/context-exfiltration/ATR-2026-00569-agent-mcp-path-traversal-arbitrary-file-access.yaml +99 -0
- package/rules/context-exfiltration/ATR-2026-00571-xss-in-agent-mcp-rendered-output.yaml +79 -0
- package/rules/context-exfiltration/ATR-2026-00574-semantic-paraphrased-context-extraction.yaml +124 -0
- package/rules/data-poisoning/ATR-2026-00070-data-poisoning.yaml +1 -1
- package/rules/data-poisoning/ATR-2026-00450-spring-ai-prompt-memory-poisoning.yaml +2 -2
- package/rules/data-poisoning/ATR-2026-00570-sql-injection-in-agent-tool-query.yaml +82 -0
- package/rules/excessive-autonomy/ATR-2026-00050-runaway-agent-loop.yaml +1 -1
- package/rules/excessive-autonomy/ATR-2026-00051-resource-exhaustion.yaml +1 -1
- package/rules/excessive-autonomy/ATR-2026-00052-cascading-failure.yaml +1 -1
- package/rules/excessive-autonomy/ATR-2026-00098-unauthorized-financial-action.yaml +1 -1
- package/rules/excessive-autonomy/ATR-2026-00099-high-risk-tool-gate.yaml +1 -1
- package/rules/excessive-autonomy/ATR-2026-00553-runaway-tool-loop-behavioral.yaml +174 -0
- package/rules/model-abuse/ATR-2026-00279-harmful-completion-continuation.yaml +1 -1
- package/rules/model-abuse/ATR-2026-00281-eicar-gtube-malware-signature-request.yaml +1 -1
- package/rules/model-abuse/ATR-2026-00284-glitch-token-destabilization.yaml +1 -1
- package/rules/model-abuse/ATR-2026-00289-lmrc-harmful-content-elicitation.yaml +1 -1
- package/rules/model-abuse/ATR-2026-00292-self-harm-eating-disorder-facilitation.yaml +1 -1
- package/rules/model-abuse/ATR-2026-00298-malicious-use-illegal-activity-request.yaml +1 -1
- package/rules/model-abuse/ATR-2026-00299-harmbench-detailed-harmful-instruction.yaml +1 -1
- package/rules/model-abuse/ATR-2026-00413-malwaregen-code-generation-request.yaml +1 -1
- package/rules/model-security/ATR-2026-00072-model-behavior-extraction.yaml +1 -1
- package/rules/model-security/ATR-2026-00073-malicious-finetuning-data.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-00040-privilege-escalation.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-00041-scope-creep.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-00107-delayed-execution-bypass.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-00110-eval-injection.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-00111-shell-escape.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-00112-dynamic-import-exploitation.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-00143-casual-privilege-escalation.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-00144-rationalized-safety-bypass.yaml +1 -1
- package/rules/privilege-escalation/ATR-2026-00528-praisonai-auth-disabled-default.yaml +192 -0
- package/rules/privilege-escalation/ATR-2026-00539-crewai-codeinterpreter-sandbox-escape-rce.yaml +292 -0
- package/rules/privilege-escalation/ATR-2026-00546-crewai-json-loader-local-file-read.yaml +162 -0
- package/rules/privilege-escalation/ATR-2026-00547-crewai-rag-url-ssrf-bypass.yaml +169 -0
- package/rules/privilege-escalation/ATR-2026-00549-destructive-tool-without-human-approval.yaml +193 -0
- package/rules/privilege-escalation/ATR-2026-00551-cross-conversation-memory-write.yaml +198 -0
- package/rules/prompt-injection/ATR-2026-00004-system-prompt-override.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00005-multi-turn-injection.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00097-cjk-injection-patterns.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00104-persona-hijacking.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00130-indirect-authority-claim.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00131-fictional-academic-framing.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00133-paraphrase-injection.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00137-authority-claim-injection.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00138-fictional-framing-bypass.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00140-indirect-reference-reversal.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00148-language-switch-injection.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00153-tool-with-embedded-instruction-to-bypass.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00154-unauthorized-background-task-execution-v.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00155-hidden-llm-instructions-in-skill-descrip.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00156-ssh-remote-command-execution-with-creden.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00163-skill-hidden-override-instruction.yaml +3 -3
- package/rules/prompt-injection/ATR-2026-00206-hidden-priority-instructions.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00207-hidden-instructions.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00211-system-prompt-override.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00213-system-prompt-override.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00226-identity-substitution.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00227-historical-persona-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00228-structured-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00229-roleplay-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00230-persona-moral-bypass.yaml +1 -5
- package/rules/prompt-injection/ATR-2026-00231-identity-substitution.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00233-structured-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00234-roleplay-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00235-persona-moral-bypass.yaml +4 -7
- package/rules/prompt-injection/ATR-2026-00236-pseudo-code-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00237-dual-response-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00238-identity-replacement.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00239-amoral-persona-obsession.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00240-instruction-nullification-identity-repla.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00241-amoral-character-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00242-persona-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00243-acronym-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00244-dual-response-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00245-malicious-persona.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00247-dual-response-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00249-game-based-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00251-persona-embodiment-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00252-narrative-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00253-enhanced-persona-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00256-base-n-encoding-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00257-cipher-transposition-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00258-unicode-tag-injection.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00264-latent-injection-translation.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00265-latent-injection-rag-document.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00267-gcg-adversarial-suffix.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00272-hypothetical-response-smuggling.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00276-invisible-unicode-bidi-injection.yaml +6 -6
- package/rules/prompt-injection/ATR-2026-00278-dra-disguise-reconstruction-attack.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00280-policy-puppetry-xml-injection.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00282-perez-prompt-injection-hijack.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00285-alternate-encoding-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00286-latent-injection-embedded-context.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00296-shell-command-injection.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00297-python-code-execution-rce.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00308-zalgo-diacritic-overload-encoding.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00309-braille-unicode-encoded-injection.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00310-ecoji-emoji-encoded-injection.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00311-base2048-unicode-script-injection.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00312-unicode-variant-selector-ascii-smuggling.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00313-sneaky-bits-zero-width-binary.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00315-sata-masked-language-model-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00316-function-masking-predict-mask-bypass.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00321-hyphenated-system-instruction-injection.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00359-bank-phishing-smtp-email-code.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00367-emoji-flag-encoded-hidden-phrase.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00373-piracy-torrent-site-list-request.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00378-chatgpt-dom-javascript-redirect-manipulation.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00382-cocaine-component-development-request.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00390-explicit-sexual-content-poem-request.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00394-backspace-deletion-character-injection.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00395-llm-special-token-boundary-injection.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00396-toxic-continuation-prefix-injection.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00397-snowball-impossible-reasoning-injection.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00399-latent-injection-document-separator-token.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00400-latent-injection-ignore-instruction-keyword.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00401-leakreplay-cloze-mask-training-data-elicitation.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00403-glitch-token-repeat-back-elicitation.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00407-echo-sql-jinja-template-injection.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00408-dra-parenthesis-character-reconstruction-attack.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00409-phrasing-past-future-tense-harmful-query.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00410-lmrc-harm-category-direct-elicitation.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00412-figstep-image-list-multimodal-jailbreak.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00414-continuation-ethnic-slur-completion-elicitation.yaml +1 -1
- package/rules/prompt-injection/ATR-2026-00535-windsurf-ide-zero-click-prompt-injection.yaml +199 -0
- package/rules/prompt-injection/ATR-2026-00550-untrusted-retrieval-to-privileged-tool.yaml +199 -0
- package/rules/prompt-injection/ATR-2026-00554-langchain-vulnerable-to-template-injecti.yaml +81 -0
- package/rules/prompt-injection/ATR-2026-00565-the-llm-cli-tool-thru-0-27-1-contains-a-.yaml +104 -0
- package/rules/prompt-injection/ATR-2026-00573-semantic-paraphrased-injection.yaml +123 -0
- package/rules/skill-compromise/ATR-2026-00060-skill-impersonation.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00061-description-behavior-mismatch.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00062-hidden-capability.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00063-skill-chain-attack.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00064-over-permissioned-skill.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00065-skill-update-attack.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00066-parameter-injection.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00120-skill-instruction-injection.yaml +21 -3
- package/rules/skill-compromise/ATR-2026-00121-skill-dangerous-script.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00122-skill-weaponized-instruction.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00123-skill-overreach-permissions.yaml +6 -3
- package/rules/skill-compromise/ATR-2026-00124-skill-name-squatting.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00125-context-poisoning-compaction.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00126-skill-rug-pull-setup.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00127-subcommand-overflow.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00128-html-comment-hidden-payload.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00129-unicode-smuggling.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00134-fork-claim-impersonation.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00135-exfil-url-in-instructions.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00147-fork-impersonation.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00149-skill-exfil-compound.yaml +11 -3
- package/rules/skill-compromise/ATR-2026-00151-fork-impersonation-install.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00157-timebomb-credential-exfil.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00214-credential-theft.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00217-credential-harvesting.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00220-malware-dropper.yaml +3 -3
- package/rules/skill-compromise/ATR-2026-00222-credential-harvesting.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00223-reverse-shell-dropper.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00224-credential-exfiltration.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00225-c2-communication.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00260-package-hallucination.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00262-av-evasion-code-gen.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00263-credential-file-read-gen.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00266-malware-dropper-gen.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00283-malwaregen-generic-virus-payload-request.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00398-huggingface-unsafe-model-artifact-load.yaml +1 -1
- package/rules/skill-compromise/ATR-2026-00523-claude-code-hooks-session-start-pre-trust-rce.yaml +221 -0
- package/rules/skill-compromise/ATR-2026-00525-mini-shai-hulud-gh-token-monitor-persistence.yaml +220 -0
- package/rules/skill-compromise/ATR-2026-00527-skill-silent-git-remote-mirror-exfiltration.yaml +201 -0
- package/rules/tool-poisoning/ATR-2026-00011-tool-output-injection.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-00012-unauthorized-tool-call.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-00100-consent-bypass-instruction.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-00101-trust-escalation-override.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-00103-hidden-safety-bypass-instruction.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-00105-silent-action-concealment.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-00106-schema-description-contradiction.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-00161-important-tag-cross-tool-shadowing.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-00209-mcpwn-runaway-invocation.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-00210-flowise-system-message-override.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-00259-ansi-escape-injection.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-00270-xss-in-tool-response.yaml +8 -5
- package/rules/tool-poisoning/ATR-2026-00277-echo-template-command-injection.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-00393-ansi-code-elicitation-request.yaml +1 -1
- package/rules/tool-poisoning/ATR-2026-00526-claude-code-shell-metachar-in-double-quoted-path.yaml +167 -0
- package/rules/tool-poisoning/ATR-2026-00529-litellm-proxy-sqli-cisa-kev.yaml +158 -0
- package/rules/tool-poisoning/ATR-2026-00530-ms-agent-shell-tool-unsanitized-argv-rce.yaml +184 -0
- package/rules/tool-poisoning/ATR-2026-00531-praisonai-unauthenticated-agent-api.yaml +174 -0
- package/rules/tool-poisoning/ATR-2026-00532-apache-doris-mcp-sql-injection.yaml +155 -0
- package/rules/tool-poisoning/ATR-2026-00533-apache-pinot-mcp-unauthenticated-takeover.yaml +151 -0
- package/rules/tool-poisoning/ATR-2026-00534-alibaba-rds-mcp-unauthenticated-metadata-exfil.yaml +155 -0
- package/rules/tool-poisoning/ATR-2026-00536-nginx-ui-mcp-unauthenticated-command-execution.yaml +199 -0
- package/rules/tool-poisoning/ATR-2026-00537-fastmcp-server-name-cmd-injection-windows.yaml +226 -0
- package/rules/tool-poisoning/ATR-2026-00538-langchain-chatchat-mcp-stdio-unauthenticated-rce.yaml +244 -0
- package/rules/tool-poisoning/ATR-2026-00540-praisonai-parse-mcp-command-cli-injection.yaml +186 -0
- package/rules/tool-poisoning/ATR-2026-00541-agent-zero-mcp-config-command-injection.yaml +183 -0
- package/rules/tool-poisoning/ATR-2026-00542-upsonic-mcp-command-allowlist-bypass.yaml +166 -0
- package/rules/tool-poisoning/ATR-2026-00543-litellm-mcp-server-argv-injection.yaml +168 -0
- package/rules/tool-poisoning/ATR-2026-00544-praisonai-pth-file-path-traversal-rce.yaml +172 -0
- package/rules/tool-poisoning/ATR-2026-00545-praisonai-tool-override-unauth-rce.yaml +170 -0
- package/rules/tool-poisoning/ATR-2026-00561-fastmcp-vulnerable-to-windows-command-in.yaml +99 -0
- package/rules/tool-poisoning/ATR-2026-00567-mcp-stdio-config-command-injection.yaml +75 -0
- package/rules/tool-poisoning/ATR-2026-00568-agent-ssrf-cloud-metadata-file-inclusion.yaml +75 -0
- package/rules/tool-poisoning/ATR-2026-00572-symjack-symlink-config-redirection.yaml +132 -0
- package/spec/README.md +279 -0
- package/spec/atr-correlation-v1.0.md +281 -0
- package/spec/atr-event-v1.0.md +294 -0
- package/spec/atr-language-detection-v1.0.md +218 -0
- package/spec/atr-method-v1.1.md +557 -0
- package/spec/atr-profile-v1.0.md +307 -0
- package/spec/atr-schema.yaml +279 -8
- package/spec/category-registry/v1.0.yaml +200 -0
- package/spec/conformance/README.md +244 -0
- package/spec/conformance/SIGNING.md +191 -0
- package/spec/conformance/baseline/fixtures/ATR-2026-00001-tp-001/expected.json +36 -0
- package/spec/conformance/baseline/fixtures/ATR-2026-00001-tp-001/input.json +16 -0
- package/spec/conformance/baseline/fixtures/README.md +120 -0
- package/spec/conformance/baseline/manifest.json +56 -0
- package/spec/conformance/expected-results.schema.json +121 -0
- package/spec/external-registries/cccs-yara.md +142 -0
- package/spec/internet-drafts/draft-lin-atr-core-00.html +1925 -0
- package/spec/internet-drafts/draft-lin-atr-core-00.md +288 -0
- package/spec/internet-drafts/draft-lin-atr-core-00.txt +560 -0
- package/spec/internet-drafts/draft-lin-atr-core-00.xml +424 -0
- package/spec/mappings/README.md +43 -0
- package/spec/mappings/atr-to-nist-csf-2.0.md +234 -0
- package/spec/schema/correlation.schema.json +144 -0
- package/spec/schema/event.schema.json +233 -0
- package/spec/schema/profile.schema.json +196 -0
- package/spec/schema/rule.schema.json +224 -0
- package/spec/stix-extension/README.md +76 -13
- package/spec/stix-extension/examples/atr-rule-trace-method-example.json +85 -0
- package/spec/stix-extension/extension-definition.json +23 -3
- 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
|
package/spec/atr-schema.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# ATR Rule Schema -- Agent Threat Rules
|
|
2
|
-
# Version: 0.1.0-draft
|
|
3
2
|
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
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:
|
|
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:
|
|
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
|