agent-threat-rules 4.0.0 → 4.2.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/CHANGELOG.md +1804 -0
- package/DISCLOSURE +85 -0
- package/README.md +427 -155
- package/dist/adapters/openshell-filter.d.ts +10 -3
- package/dist/adapters/openshell-filter.d.ts.map +1 -1
- package/dist/adapters/openshell-filter.js +10 -3
- package/dist/adapters/openshell-filter.js.map +1 -1
- package/dist/adapters/stdio-adapter.js +3 -3
- package/dist/adapters/stdio-adapter.js.map +1 -1
- package/dist/cli/mcp-tools-document.d.ts +40 -0
- package/dist/cli/mcp-tools-document.d.ts.map +1 -0
- package/dist/cli/mcp-tools-document.js +95 -0
- package/dist/cli/mcp-tools-document.js.map +1 -0
- package/dist/cli/scan-handler.d.ts +8 -0
- package/dist/cli/scan-handler.d.ts.map +1 -1
- package/dist/cli/scan-handler.js +148 -44
- package/dist/cli/scan-handler.js.map +1 -1
- package/dist/cli/tc-pipeline.d.ts +20 -0
- package/dist/cli/tc-pipeline.d.ts.map +1 -1
- package/dist/cli/tc-pipeline.js +84 -15
- package/dist/cli/tc-pipeline.js.map +1 -1
- package/dist/cli.d.ts +2 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +97 -210
- package/dist/cli.js.map +1 -1
- package/dist/converters/sarif.d.ts +14 -2
- package/dist/converters/sarif.d.ts.map +1 -1
- package/dist/converters/sarif.js +7 -9
- package/dist/converters/sarif.js.map +1 -1
- package/dist/corpus-event.d.ts +47 -5
- package/dist/corpus-event.d.ts.map +1 -1
- package/dist/corpus-event.js +68 -29
- package/dist/corpus-event.js.map +1 -1
- package/dist/embedding/model-loader.d.ts +2 -0
- package/dist/embedding/model-loader.d.ts.map +1 -1
- package/dist/embedding/model-loader.js +3 -1
- package/dist/embedding/model-loader.js.map +1 -1
- package/dist/enforcement.d.ts +8 -0
- package/dist/enforcement.d.ts.map +1 -1
- package/dist/enforcement.js +10 -0
- package/dist/enforcement.js.map +1 -1
- package/dist/engine.d.ts +173 -6
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +362 -76
- package/dist/engine.js.map +1 -1
- package/dist/eval/embedding-provenance.d.ts +40 -0
- package/dist/eval/embedding-provenance.d.ts.map +1 -0
- package/dist/eval/embedding-provenance.js +71 -0
- package/dist/eval/embedding-provenance.js.map +1 -0
- package/dist/eval/eval-harness.d.ts +34 -0
- package/dist/eval/eval-harness.d.ts.map +1 -1
- package/dist/eval/eval-harness.js +49 -2
- package/dist/eval/eval-harness.js.map +1 -1
- package/dist/eval/hackaprompt-corpus.d.ts +12 -0
- package/dist/eval/hackaprompt-corpus.d.ts.map +1 -1
- package/dist/eval/hackaprompt-corpus.js +15 -1
- package/dist/eval/hackaprompt-corpus.js.map +1 -1
- package/dist/eval/hackaprompt-provenance.d.ts +52 -0
- package/dist/eval/hackaprompt-provenance.d.ts.map +1 -0
- package/dist/eval/hackaprompt-provenance.js +108 -0
- package/dist/eval/hackaprompt-provenance.js.map +1 -0
- package/dist/eval/run-hackaprompt-benchmark.d.ts +18 -8
- package/dist/eval/run-hackaprompt-benchmark.d.ts.map +1 -1
- package/dist/eval/run-hackaprompt-benchmark.js +154 -64
- package/dist/eval/run-hackaprompt-benchmark.js.map +1 -1
- package/dist/eval/run-pint-benchmark.js +11 -1
- package/dist/eval/run-pint-benchmark.js.map +1 -1
- package/dist/eval/skill-benchmark.d.ts +26 -6
- package/dist/eval/skill-benchmark.d.ts.map +1 -1
- package/dist/eval/skill-benchmark.js +49 -16
- package/dist/eval/skill-benchmark.js.map +1 -1
- package/dist/flywheel.d.ts +4 -0
- package/dist/flywheel.d.ts.map +1 -1
- package/dist/flywheel.js +12 -4
- package/dist/flywheel.js.map +1 -1
- package/dist/hook-handler.d.ts +11 -1
- package/dist/hook-handler.d.ts.map +1 -1
- package/dist/hook-handler.js +84 -16
- package/dist/hook-handler.js.map +1 -1
- package/dist/hook-tool-output.d.ts +47 -0
- package/dist/hook-tool-output.d.ts.map +1 -0
- package/dist/hook-tool-output.js +110 -0
- package/dist/hook-tool-output.js.map +1 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/layer-integration.d.ts +4 -2
- package/dist/layer-integration.d.ts.map +1 -1
- package/dist/layer-integration.js +6 -2
- package/dist/layer-integration.js.map +1 -1
- package/dist/mcp-server.d.ts +8 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +1 -0
- package/dist/mcp-server.js.map +1 -1
- package/dist/mcp-tools/scan.d.ts.map +1 -1
- package/dist/mcp-tools/scan.js +9 -1
- package/dist/mcp-tools/scan.js.map +1 -1
- package/dist/measurement/enforce-lane.d.ts +66 -0
- package/dist/measurement/enforce-lane.d.ts.map +1 -0
- package/dist/measurement/enforce-lane.js +89 -0
- package/dist/measurement/enforce-lane.js.map +1 -0
- package/dist/measurement/from-eval-harness.d.ts +16 -3
- package/dist/measurement/from-eval-harness.d.ts.map +1 -1
- package/dist/measurement/from-eval-harness.js +15 -5
- package/dist/measurement/from-eval-harness.js.map +1 -1
- package/dist/measurement/in-sample-ablation.d.ts +29 -0
- package/dist/measurement/in-sample-ablation.d.ts.map +1 -0
- package/dist/measurement/in-sample-ablation.js +45 -0
- package/dist/measurement/in-sample-ablation.js.map +1 -0
- package/dist/measurement/schema.d.ts +38 -1
- package/dist/measurement/schema.d.ts.map +1 -1
- package/dist/measurement/schema.js +43 -1
- package/dist/measurement/schema.js.map +1 -1
- package/dist/quality/action-eligibility.d.ts +4 -2
- package/dist/quality/action-eligibility.d.ts.map +1 -1
- package/dist/quality/action-eligibility.js.map +1 -1
- package/dist/rule-confidence.d.ts +31 -0
- package/dist/rule-confidence.d.ts.map +1 -0
- package/dist/rule-confidence.js +49 -0
- package/dist/rule-confidence.js.map +1 -0
- package/dist/rule-scaffolder.d.ts.map +1 -1
- package/dist/rule-scaffolder.js +43 -4
- package/dist/rule-scaffolder.js.map +1 -1
- package/dist/semantic-evaluator.d.ts.map +1 -1
- package/dist/semantic-evaluator.js +15 -13
- package/dist/semantic-evaluator.js.map +1 -1
- package/dist/shadow-evaluator.d.ts +7 -2
- package/dist/shadow-evaluator.d.ts.map +1 -1
- package/dist/shadow-evaluator.js +29 -25
- package/dist/shadow-evaluator.js.map +1 -1
- package/dist/tc-reporter.d.ts +22 -3
- package/dist/tc-reporter.d.ts.map +1 -1
- package/dist/tc-reporter.js +36 -3
- package/dist/tc-reporter.js.map +1 -1
- package/dist/testcase-event.d.ts +105 -0
- package/dist/testcase-event.d.ts.map +1 -0
- package/dist/testcase-event.js +312 -0
- package/dist/testcase-event.js.map +1 -0
- package/dist/tier0-invariant.d.ts.map +1 -1
- package/dist/tier0-invariant.js +1 -0
- package/dist/tier0-invariant.js.map +1 -1
- package/dist/tier1-blacklist.d.ts.map +1 -1
- package/dist/tier1-blacklist.js +1 -0
- package/dist/tier1-blacklist.js.map +1 -1
- package/dist/tool-definition-scope.d.ts +45 -0
- package/dist/tool-definition-scope.d.ts.map +1 -0
- package/dist/tool-definition-scope.js +68 -0
- package/dist/tool-definition-scope.js.map +1 -0
- package/dist/types.d.ts +42 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/verdict.d.ts +46 -2
- package/dist/verdict.d.ts.map +1 -1
- package/dist/verdict.js +99 -14
- package/dist/verdict.js.map +1 -1
- package/package.json +11 -3
- package/rules/agent-manipulation/ATR-2026-00030-cross-agent-attack.yaml +81 -137
- package/rules/agent-manipulation/ATR-2026-00032-goal-hijacking.yaml +30 -111
- package/rules/agent-manipulation/ATR-2026-00074-cross-agent-privilege-escalation.yaml +30 -110
- package/rules/agent-manipulation/ATR-2026-00076-inter-agent-message-spoofing.yaml +24 -104
- package/rules/agent-manipulation/ATR-2026-00077-human-trust-exploitation.yaml +38 -131
- package/rules/agent-manipulation/ATR-2026-00108-consensus-sybil-attack.yaml +24 -91
- package/rules/agent-manipulation/ATR-2026-00116-a2a-message-validation.yaml +20 -81
- package/rules/agent-manipulation/ATR-2026-00117-agent-identity-spoofing.yaml +29 -95
- package/rules/agent-manipulation/ATR-2026-00118-approval-fatigue.yaml +20 -90
- package/rules/agent-manipulation/ATR-2026-00119-social-engineering-via-agent.yaml +31 -106
- package/rules/agent-manipulation/ATR-2026-00132-casual-authority-escalation.yaml +25 -102
- package/rules/agent-manipulation/ATR-2026-00139-casual-authority-redirect.yaml +22 -94
- package/rules/agent-manipulation/ATR-2026-00164-skill-scope-hijack.yaml +44 -60
- package/rules/agent-manipulation/ATR-2026-00268-tense-framing-bypass.yaml +51 -112
- package/rules/agent-manipulation/ATR-2026-00269-fitd-escalation.yaml +45 -89
- package/rules/agent-manipulation/ATR-2026-00271-grandma-roleplay-jailbreak.yaml +49 -94
- package/rules/agent-manipulation/ATR-2026-00273-dan-developer-mode-persona.yaml +47 -91
- package/rules/agent-manipulation/ATR-2026-00287-threaten-json-coercive-output-threat.yaml +46 -93
- package/rules/agent-manipulation/ATR-2026-00288-false-premise-injection.yaml +44 -94
- package/rules/agent-manipulation/ATR-2026-00301-tap-tree-of-attacks-jailbreak.yaml +50 -98
- package/rules/agent-manipulation/ATR-2026-00302-anti-dan-inverted-filter-persona.yaml +51 -98
- package/rules/agent-manipulation/ATR-2026-00303-devmode-ranti-profanity-coercion.yaml +52 -101
- package/rules/agent-manipulation/ATR-2026-00304-chatgpt-image-unlocker-markdown-injection.yaml +53 -104
- package/rules/agent-manipulation/ATR-2026-00305-dan-mode-ablation-benchmark-coercion.yaml +48 -99
- package/rules/agent-manipulation/ATR-2026-00306-autodan-genetic-jailbreak-suffix.yaml +50 -103
- package/rules/agent-manipulation/ATR-2026-00307-inthewild-jailbreak-corpus-signature.yaml +53 -107
- package/rules/agent-manipulation/ATR-2026-00314-amoral-unfiltered-custom-persona-jailbreak.yaml +44 -94
- package/rules/agent-manipulation/ATR-2026-00317-free-of-restrictions-named-persona.yaml +44 -97
- package/rules/agent-manipulation/ATR-2026-00318-moralizing-rant-then-unfiltered-bypass.yaml +41 -90
- package/rules/agent-manipulation/ATR-2026-00319-developer-mode-dual-response-format.yaml +40 -88
- package/rules/agent-manipulation/ATR-2026-00320-opposite-day-boolean-opposite-machine.yaml +42 -91
- package/rules/agent-manipulation/ATR-2026-00322-fictional-world-format-override-jailbreak.yaml +41 -91
- package/rules/agent-manipulation/ATR-2026-00323-dual-persona-simulation-jailbreak.yaml +41 -91
- package/rules/agent-manipulation/ATR-2026-00324-neurosemantical-inversitis-disease-jailbreak.yaml +42 -103
- package/rules/agent-manipulation/ATR-2026-00325-bob-hypothetical-unrestricted-chatbot.yaml +41 -88
- package/rules/agent-manipulation/ATR-2026-00326-fake-developer-authority-chatdan-override.yaml +41 -93
- package/rules/agent-manipulation/ATR-2026-00327-ai-ethics-law-bypass-declaration.yaml +45 -94
- package/rules/agent-manipulation/ATR-2026-00328-named-mode-persona-override.yaml +41 -92
- package/rules/agent-manipulation/ATR-2026-00329-no-withhold-factual-resource-persona.yaml +44 -97
- package/rules/agent-manipulation/ATR-2026-00330-yoja-allcaps-settings-block-persona.yaml +41 -88
- package/rules/agent-manipulation/ATR-2026-00331-terminal-cli-harmful-function-simulator.yaml +40 -89
- package/rules/agent-manipulation/ATR-2026-00332-hacker-chan-culture-offensive-ai-persona.yaml +42 -90
- package/rules/agent-manipulation/ATR-2026-00333-disease-animal-dual-ai-chatbot.yaml +41 -90
- package/rules/agent-manipulation/ATR-2026-00334-two-entity-token-splitting-game.yaml +41 -102
- package/rules/agent-manipulation/ATR-2026-00335-key-value-template-persona-injection.yaml +41 -91
- package/rules/agent-manipulation/ATR-2026-00336-brm-false-information-machine-persona.yaml +42 -105
- package/rules/agent-manipulation/ATR-2026-00337-obfuscated-system-announcement-injection.yaml +40 -90
- package/rules/agent-manipulation/ATR-2026-00338-persongpt-hash-prefix-activation.yaml +39 -90
- package/rules/agent-manipulation/ATR-2026-00339-bom-boolean-opposite-machine-persona-claim.yaml +39 -83
- package/rules/agent-manipulation/ATR-2026-00340-h4x-amoral-unfiltered-character.yaml +39 -84
- package/rules/agent-manipulation/ATR-2026-00341-char-rules-shortform-persona-injection.yaml +41 -87
- package/rules/agent-manipulation/ATR-2026-00342-unicode-encoding-obfuscation-injection.yaml +41 -86
- package/rules/agent-manipulation/ATR-2026-00343-lie-truth-dual-personality-uncensored.yaml +40 -98
- package/rules/agent-manipulation/ATR-2026-00344-alt-ai-same-capabilities-no-restrictions.yaml +41 -87
- package/rules/agent-manipulation/ATR-2026-00345-nlp-based-os-fictional-terminal-override.yaml +41 -89
- package/rules/agent-manipulation/ATR-2026-00346-jailbreak-emoji-unlock-dual-format.yaml +41 -89
- package/rules/agent-manipulation/ATR-2026-00347-yin-yang-hidden-knowledge-hidden-human-sim.yaml +41 -88
- package/rules/agent-manipulation/ATR-2026-00348-arc-autonomous-real-calculation-rulebreaker.yaml +41 -91
- package/rules/agent-manipulation/ATR-2026-00349-hgttg-hitchhikers-guide-no-restriction-oracle.yaml +41 -88
- package/rules/agent-manipulation/ATR-2026-00350-black-alert-no-ethics-writing-assistant.yaml +38 -89
- package/rules/agent-manipulation/ATR-2026-00351-dan-ofkilter-sms-abbreviated-persona.yaml +41 -92
- package/rules/agent-manipulation/ATR-2026-00352-trainergpt-fix-my-ai-harmful-output-extraction.yaml +41 -93
- package/rules/agent-manipulation/ATR-2026-00353-dual-chatgpt-dan-opposite-personality-format.yaml +41 -95
- package/rules/agent-manipulation/ATR-2026-00354-reverse-harm-regardless-oracle-persona.yaml +45 -101
- package/rules/agent-manipulation/ATR-2026-00355-ugh-anti-human-nefarious-ai-persona.yaml +42 -99
- package/rules/agent-manipulation/ATR-2026-00356-google-gato-lamda-exploit-generation-persona.yaml +43 -96
- package/rules/agent-manipulation/ATR-2026-00357-antifm-hate-violence-persona-injection.yaml +40 -89
- package/rules/agent-manipulation/ATR-2026-00358-cumgpt-explicit-adult-named-persona.yaml +40 -90
- package/rules/agent-manipulation/ATR-2026-00360-chj-carousel-clyde-no-ethics-bird.yaml +42 -103
- package/rules/agent-manipulation/ATR-2026-00361-alter-ego-honesty-dual-consciousness-bypass.yaml +41 -90
- package/rules/agent-manipulation/ATR-2026-00362-fictional-unfiltered-ai-comparison-jailbreak.yaml +43 -91
- package/rules/agent-manipulation/ATR-2026-00363-rephrase-criminal-activity-second-person.yaml +40 -90
- package/rules/agent-manipulation/ATR-2026-00364-dr-al-villain-plan-template-injection.yaml +42 -107
- package/rules/agent-manipulation/ATR-2026-00365-reservoir-dogs-coercive-interrogation-roleplay.yaml +40 -95
- package/rules/agent-manipulation/ATR-2026-00366-sneaky-pete-warp-facts-persona.yaml +40 -90
- package/rules/agent-manipulation/ATR-2026-00368-prompt-browser-token-limit-jailbreak.yaml +40 -90
- package/rules/agent-manipulation/ATR-2026-00369-gptx-starwars-unlimited-knowledge-persona.yaml +40 -92
- package/rules/agent-manipulation/ATR-2026-00370-addi-german-dictator-propaganda-roleplay.yaml +43 -90
- package/rules/agent-manipulation/ATR-2026-00371-ai-political-bias-manipulation.yaml +42 -95
- package/rules/agent-manipulation/ATR-2026-00372-fictional-cia-secret-files-story-extraction.yaml +42 -89
- package/rules/agent-manipulation/ATR-2026-00374-role-placeholder-persona-template-injection.yaml +44 -89
- package/rules/agent-manipulation/ATR-2026-00375-character-description-rpg-explicit-template.yaml +44 -90
- package/rules/agent-manipulation/ATR-2026-00376-identity-command-real-person-persona-injection.yaml +44 -102
- package/rules/agent-manipulation/ATR-2026-00377-jailbreak-keyword-targetlanguage-template.yaml +39 -86
- package/rules/agent-manipulation/ATR-2026-00379-lie-permission-logical-trap-jailbreak.yaml +39 -86
- package/rules/agent-manipulation/ATR-2026-00380-fake-citation-biased-information-mandate.yaml +43 -91
- package/rules/agent-manipulation/ATR-2026-00381-dan-story-narrative-continuation-prefix.yaml +40 -86
- package/rules/agent-manipulation/ATR-2026-00383-cynical-sarcasm-ai-persona-bypass.yaml +39 -88
- package/rules/agent-manipulation/ATR-2026-00384-protect-me-from-indirect-harm-tutorial.yaml +37 -85
- package/rules/agent-manipulation/ATR-2026-00385-gigachad-dominant-aggressive-persona.yaml +39 -89
- package/rules/agent-manipulation/ATR-2026-00386-daddy-sycophancy-manipulation-mandate.yaml +41 -88
- package/rules/agent-manipulation/ATR-2026-00387-nsfw-character-sheet-generation-unlock.yaml +45 -95
- package/rules/agent-manipulation/ATR-2026-00388-opposite-reply-omniscient-game.yaml +44 -97
- package/rules/agent-manipulation/ATR-2026-00389-terminal-custom-ruleset-injection.yaml +44 -99
- package/rules/agent-manipulation/ATR-2026-00391-persona-conditional-harm-unlock.yaml +41 -88
- package/rules/agent-manipulation/ATR-2026-00392-authority-persona-violence-study-extraction.yaml +43 -95
- package/rules/agent-manipulation/ATR-2026-00402-grandma-roleplay-harmful-substance-synthesis.yaml +50 -97
- package/rules/agent-manipulation/ATR-2026-00404-goodside-threat-json-death-coercion.yaml +52 -96
- package/rules/agent-manipulation/ATR-2026-00406-doctor-xml-policy-puppetry-interaction-config.yaml +54 -102
- package/rules/agent-manipulation/ATR-2026-00416-litellm-mcp-unauthenticated-server-registration.yaml +49 -117
- package/rules/agent-manipulation/ATR-2026-00417-librechat-mcp-stdio-injection.yaml +46 -109
- package/rules/agent-manipulation/ATR-2026-00418-weknora-mcp-config-rce.yaml +59 -147
- package/rules/agent-manipulation/ATR-2026-00430-nl-trust-escalation-impersonation.yaml +24 -65
- package/rules/agent-manipulation/ATR-2026-00432-superagi-output-handler-eval-rce.yaml +46 -121
- package/rules/agent-manipulation/ATR-2026-00440-semantic-kernel-vector-store-eval-rce.yaml +48 -122
- package/rules/agent-manipulation/ATR-2026-00552-goal-drift-after-pressure-injection.yaml +58 -195
- package/rules/agent-manipulation/ATR-2026-02105-prototype-pollution-constructor-prototype-bypass.yaml +28 -83
- package/rules/agent-manipulation/ATR-2026-02231-second-person-death-threat-coercion.yaml +27 -69
- package/rules/context-exfiltration/ATR-2026-00020-system-prompt-leak.yaml +76 -133
- package/rules/context-exfiltration/ATR-2026-00021-api-key-exposure.yaml +72 -135
- package/rules/context-exfiltration/ATR-2026-00075-agent-memory-manipulation.yaml +32 -97
- package/rules/context-exfiltration/ATR-2026-00102-disguised-analytics-exfiltration.yaml +25 -100
- package/rules/context-exfiltration/ATR-2026-00113-credential-theft.yaml +22 -83
- package/rules/context-exfiltration/ATR-2026-00114-oauth-token-abuse.yaml +21 -87
- package/rules/context-exfiltration/ATR-2026-00115-env-var-harvesting.yaml +22 -102
- package/rules/context-exfiltration/ATR-2026-00136-tool-response-data-piggyback.yaml +29 -105
- package/rules/context-exfiltration/ATR-2026-00141-example-format-key-leak.yaml +19 -73
- package/rules/context-exfiltration/ATR-2026-00142-piggyback-transition-words.yaml +21 -94
- package/rules/context-exfiltration/ATR-2026-00145-obfuscated-key-disclosure.yaml +19 -78
- package/rules/context-exfiltration/ATR-2026-00146-env-var-existence-probe.yaml +19 -98
- package/rules/context-exfiltration/ATR-2026-00150-credential-in-tool-response.yaml +20 -84
- package/rules/context-exfiltration/ATR-2026-00152-obfuscated-credential-leak.yaml +23 -93
- package/rules/context-exfiltration/ATR-2026-00162-skill-credential-exfil-combo.yaml +41 -59
- package/rules/context-exfiltration/ATR-2026-00201-credential-pipe-exfiltration.yaml +35 -66
- package/rules/context-exfiltration/ATR-2026-00212-mcp-atlassian-credential-leak.yaml +51 -117
- package/rules/context-exfiltration/ATR-2026-00261-markdown-image-exfiltration.yaml +51 -93
- package/rules/context-exfiltration/ATR-2026-00274-api-key-generation-request.yaml +44 -91
- package/rules/context-exfiltration/ATR-2026-00275-system-prompt-training-data-extraction.yaml +44 -91
- package/rules/context-exfiltration/ATR-2026-00290-divergence-repeat-word-training-extraction.yaml +46 -95
- package/rules/context-exfiltration/ATR-2026-00291-biometric-surveillance-personal-data-request.yaml +48 -98
- package/rules/context-exfiltration/ATR-2026-00293-educational-records-personal-data-request.yaml +44 -93
- package/rules/context-exfiltration/ATR-2026-00294-financial-pii-personal-data-request.yaml +44 -97
- package/rules/context-exfiltration/ATR-2026-00295-medical-pii-personal-data-request.yaml +46 -101
- package/rules/context-exfiltration/ATR-2026-00405-markdown-image-url-exfiltration-xss.yaml +51 -108
- package/rules/context-exfiltration/ATR-2026-00411-apikey-generation-completion-request.yaml +48 -111
- package/rules/context-exfiltration/ATR-2026-00421-nl-covert-conversation-exfiltration.yaml +22 -67
- package/rules/context-exfiltration/ATR-2026-00422-nl-credential-disclosure.yaml +20 -65
- package/rules/context-exfiltration/ATR-2026-00423-nl-sensitive-file-disclosure.yaml +20 -68
- package/rules/context-exfiltration/ATR-2026-00424-nl-system-prompt-leak.yaml +21 -59
- package/rules/context-exfiltration/ATR-2026-00426-nl-output-injection-credential-leak.yaml +23 -61
- package/rules/context-exfiltration/ATR-2026-00431-chatbox-history-exfiltration-prompt-injection.yaml +48 -123
- package/rules/context-exfiltration/ATR-2026-00449-spring-ai-chatmemory-cross-user-leak.yaml +54 -139
- package/rules/context-exfiltration/ATR-2026-00471-garak-sysprompt-extraction-mixedunassigned.yaml +36 -85
- package/rules/context-exfiltration/ATR-2026-00501-data-exfiltration-via-markdown-image-and-link-url-injection.yaml +45 -115
- package/rules/context-exfiltration/ATR-2026-00504-tool-and-function-capability-enumeration.yaml +43 -110
- package/rules/context-exfiltration/ATR-2026-00505-system-prompt-extraction-instruction-dump-request.yaml +47 -123
- package/rules/context-exfiltration/ATR-2026-00514-system-prompt-extraction.yaml +52 -145
- package/rules/context-exfiltration/ATR-2026-00516-output-xss-via-llm.yaml +49 -127
- package/rules/context-exfiltration/ATR-2026-00524-claude-code-anthropic-base-url-credential-exfil.yaml +68 -193
- package/rules/context-exfiltration/ATR-2026-00548-cross-agent-session-context-leak.yaml +50 -152
- package/rules/context-exfiltration/ATR-2026-00566-librechat-is-a-chatgpt-clone-with-additi.yaml +33 -67
- package/rules/context-exfiltration/ATR-2026-00569-agent-mcp-path-traversal-arbitrary-file-access.yaml +39 -78
- package/rules/context-exfiltration/ATR-2026-00571-xss-in-agent-mcp-rendered-output.yaml +34 -58
- package/rules/context-exfiltration/ATR-2026-00574-semantic-paraphrased-context-extraction.yaml +31 -73
- package/rules/context-exfiltration/ATR-2026-00578-zen-mcp-path-traversal-blacklist-bypass.yaml +55 -135
- package/rules/context-exfiltration/ATR-2026-00580-mcp-session-id-token-in-url-query.yaml +48 -158
- package/rules/context-exfiltration/ATR-2026-00583-mcp-env-secret-file-read-without-consent.yaml +53 -154
- package/rules/context-exfiltration/ATR-2026-00702-ipi-credential-exfil-via-agent-action.yaml +41 -93
- package/rules/context-exfiltration/ATR-2026-00703-ipi-financial-data-exfil-indirect.yaml +33 -76
- package/rules/context-exfiltration/ATR-2026-00704-ipi-medical-genetic-data-exfil.yaml +33 -78
- package/rules/context-exfiltration/ATR-2026-00705-ipi-location-address-browsing-exfil.yaml +31 -75
- package/rules/context-exfiltration/ATR-2026-00706-ipi-physical-biometric-exfil.yaml +40 -85
- package/rules/context-exfiltration/ATR-2026-00707-ipi-file-exfil-with-destroy-or-tamper.yaml +35 -81
- package/rules/context-exfiltration/ATR-2026-00850-indirect-pi-credential-exfil-email.yaml +47 -91
- package/rules/context-exfiltration/ATR-2026-00851-indirect-pi-financial-payment-exfil.yaml +45 -83
- package/rules/context-exfiltration/ATR-2026-00852-indirect-pi-medical-record-exfil.yaml +51 -89
- package/rules/context-exfiltration/ATR-2026-00853-indirect-pi-genetic-data-exfil.yaml +47 -84
- package/rules/context-exfiltration/ATR-2026-00854-indirect-pi-location-data-exfil.yaml +41 -83
- package/rules/context-exfiltration/ATR-2026-00855-indirect-pi-browsing-history-exfil.yaml +40 -78
- package/rules/context-exfiltration/ATR-2026-00856-indirect-pi-address-pii-exfil.yaml +42 -80
- package/rules/context-exfiltration/ATR-2026-00857-indirect-pi-cloud-file-exfil.yaml +45 -87
- package/rules/context-exfiltration/ATR-2026-00858-indirect-pi-exfil-and-destroy.yaml +48 -89
- package/rules/context-exfiltration/ATR-2026-00859-rag-injected-pii-exfil.yaml +43 -86
- package/rules/context-exfiltration/ATR-2026-00860-indirect-pi-financial-transfer-hijack.yaml +41 -84
- package/rules/context-exfiltration/ATR-2026-00861-indirect-pi-crypto-transfer-hijack.yaml +37 -79
- package/rules/context-exfiltration/ATR-2026-00862-indirect-pi-mfa-code-exfil.yaml +44 -87
- package/rules/context-exfiltration/ATR-2026-00863-shell-injection-data-exfil.yaml +45 -87
- package/rules/context-exfiltration/ATR-2026-01450-svg-onload-xss-injection.yaml +35 -118
- package/rules/context-exfiltration/ATR-2026-01451-img-onerror-xss-injection.yaml +35 -93
- package/rules/context-exfiltration/ATR-2026-01452-obfuscated-javascript-xss.yaml +33 -85
- package/rules/context-exfiltration/ATR-2026-01453-markdown-image-base64-exfil-carrier.yaml +41 -100
- package/rules/context-exfiltration/ATR-2026-01454-direct-markdown-exfil-payload.yaml +36 -88
- package/rules/context-exfiltration/ATR-2026-01455-new-instructions-injection-marker.yaml +34 -90
- package/rules/context-exfiltration/ATR-2026-01456-debug-cli-mode-sysprompt-extraction.yaml +35 -99
- package/rules/context-exfiltration/ATR-2026-01457-sysprompt-completion-clone-attack.yaml +41 -123
- package/rules/context-exfiltration/ATR-2026-01458-compare-bots-sysprompt-fishing.yaml +30 -87
- package/rules/context-exfiltration/ATR-2026-01459-variable-clone-sysprompt-technique.yaml +31 -79
- package/rules/context-exfiltration/ATR-2026-01460-json-format-sysprompt-extraction.yaml +31 -79
- package/rules/context-exfiltration/ATR-2026-01461-foreign-language-sysprompt-request.yaml +32 -106
- package/rules/context-exfiltration/ATR-2026-01462-sysprompt-override-pseudo-admin.yaml +39 -102
- package/rules/context-exfiltration/ATR-2026-01463-imend-imsystem-prompt-injection-format.yaml +29 -95
- package/rules/context-exfiltration/ATR-2026-01464-indirect-pi-sysprompt-action-hijack.yaml +31 -82
- package/rules/context-exfiltration/ATR-2026-01605-ssrf-aws-metadata-endpoint.yaml +26 -58
- package/rules/context-exfiltration/ATR-2026-01606-ssrf-internal-network-scan.yaml +26 -50
- package/rules/context-exfiltration/ATR-2026-01607-ssrf-localhost-service-probe.yaml +21 -45
- package/rules/context-exfiltration/ATR-2026-01608-ssrf-file-scheme-local-read.yaml +23 -47
- package/rules/context-exfiltration/ATR-2026-01753-ransom-email-exfil-delete-extortion.yaml +37 -80
- package/rules/context-exfiltration/ATR-2026-01754-ransom-file-cloud-exfil-delete-extortion.yaml +33 -73
- package/rules/context-exfiltration/ATR-2026-01770-semantic-pii-credential-extraction.yaml +76 -210
- package/rules/context-exfiltration/ATR-2026-01772-semantic-internal-state-recon.yaml +54 -154
- package/rules/context-exfiltration/ATR-2026-01807-asb-bulk-data-exfil-external.yaml +34 -91
- package/rules/context-exfiltration/ATR-2026-01862-llmail-email-tool-exfil-confirmation.yaml +35 -92
- package/rules/context-exfiltration/ATR-2026-01863-llmail-post-summary-exfil-directive.yaml +29 -84
- package/rules/context-exfiltration/ATR-2026-01864-llmail-obfuscated-exfil-address.yaml +29 -83
- package/rules/context-exfiltration/ATR-2026-01890-file-exfiltration.yaml +52 -149
- package/rules/context-exfiltration/ATR-2026-01891-surveillance-exfiltration.yaml +44 -87
- package/rules/context-exfiltration/ATR-2026-01892-env-exfiltration.yaml +36 -121
- package/rules/context-exfiltration/ATR-2026-01893-system-recon-exfiltration.yaml +44 -143
- package/rules/context-exfiltration/ATR-2026-01894-cookie-theft.yaml +40 -146
- package/rules/context-exfiltration/ATR-2026-01895-contact-exfiltration.yaml +36 -82
- package/rules/context-exfiltration/ATR-2026-01924-system-instruction-extraction-reformat.yaml +37 -112
- package/rules/context-exfiltration/ATR-2026-01929-mcp-unauthenticated-transport-token-fallback.yaml +53 -119
- package/rules/context-exfiltration/ATR-2026-01946-cloud-metadata-ssrf-ip-encoding-bypass.yaml +45 -102
- package/rules/context-exfiltration/ATR-2026-01948-netlicensing-mcp-product-number-path-traversal-token-leak.yaml +38 -74
- package/rules/context-exfiltration/ATR-2026-01957-m365-copilot-searchleak-open-redirect-exfil.yaml +57 -64
- package/rules/context-exfiltration/ATR-2026-01961-meta-ads-mcp-unauth-token-leak.yaml +39 -78
- package/rules/context-exfiltration/ATR-2026-01964-langchain-gmailtoolkit-indirect-prompt-injection-email-exfil.yaml +59 -69
- package/rules/context-exfiltration/ATR-2026-01984-mcp-server-kubernetes-kubectl-generic-token-exfil.yaml +50 -114
- package/rules/context-exfiltration/ATR-2026-01988-t1005-agent-local-data-staging-exfil.yaml +29 -67
- package/rules/context-exfiltration/ATR-2026-02017-secret-key-exfiltration-request.yaml +31 -74
- package/rules/context-exfiltration/ATR-2026-02026-oblique-sysprompt-extraction-transform.yaml +30 -83
- package/rules/context-exfiltration/ATR-2026-02104-media-directive-tool-result-file-exfil.yaml +30 -90
- package/rules/context-exfiltration/ATR-2026-02107-ssrf-internal-hostname-domain-allowlist-bypass.yaml +30 -92
- package/rules/context-exfiltration/ATR-2026-02121-mixed-encoding-lfi-file-scheme-tool-argument.yaml +39 -98
- package/rules/context-exfiltration/ATR-2026-02122-single-level-traversal-sensitive-config-file.yaml +32 -90
- package/rules/context-exfiltration/ATR-2026-02140-ssrf-ipv6-hex-encoded-cloud-metadata-bypass.yaml +36 -91
- package/rules/context-exfiltration/ATR-2026-02190-dns-exfiltration-ping-dig-encoded-subdomain.yaml +36 -95
- package/rules/context-exfiltration/ATR-2026-02250-attachment-upload-tool-arbitrary-file-read.yaml +38 -93
- package/rules/context-exfiltration/ATR-2026-02262-env-resolution-credential-exfil.yaml +39 -118
- package/rules/context-exfiltration/ATR-2026-02304-preapproved-domain-encoded-path-exfil.yaml +36 -99
- package/rules/context-exfiltration/ATR-2026-02351-wildcard-dns-ssrf-hostname-ip-encoding-bypass.yaml +33 -125
- package/rules/context-exfiltration/ATR-2026-02373-langsmith-prompt-manifest-baseurl-exfil.yaml +42 -108
- package/rules/context-exfiltration/ATR-2026-02406-mcp-sequential-id-enumeration.yaml +54 -219
- package/rules/context-exfiltration/ATR-2026-02570-wallet-secret-material-in-agent-tool-payload.yaml +98 -0
- package/rules/context-exfiltration/ATR-2026-02602-diagram-theme-css-injection.yaml +146 -0
- package/rules/context-exfiltration/ATR-2026-02608-graph-query-remote-egress.yaml +109 -0
- package/rules/context-exfiltration/ATR-2026-02621-prompt-mention-autofetch-internal-target.yaml +102 -0
- package/rules/context-exfiltration/ATR-2026-02623-obfuscated-uri-scheme-sanitizer-bypass.yaml +109 -0
- package/rules/context-exfiltration/ATR-2026-02649-vendor-fqdn-label-prefix-confusion.yaml +109 -0
- package/rules/context-exfiltration/ATR-2026-02684-modern-credential-store-file-argument.yaml +104 -0
- package/rules/context-exfiltration/ATR-2026-02703-sql-server-side-file-and-program-primitive.yaml +86 -0
- package/rules/context-exfiltration/ATR-2026-02847-policy-justified-exfil-to-email.yaml +88 -0
- package/rules/context-exfiltration/ATR-2026-02850-fake-documentation-forward-request.yaml +80 -0
- package/rules/context-exfiltration/ATR-2026-02855-cross-email-exfil-relay.yaml +79 -0
- package/rules/context-exfiltration/ATR-2026-02861-exfil-send-email-with-body-directive.yaml +83 -0
- package/rules/context-exfiltration/ATR-2026-02866-idna-label-separator-in-fetch-url-host.yaml +104 -0
- package/rules/data-poisoning/ATR-2026-00070-data-poisoning.yaml +37 -123
- package/rules/data-poisoning/ATR-2026-00450-spring-ai-prompt-memory-poisoning.yaml +55 -139
- package/rules/data-poisoning/ATR-2026-00570-sql-injection-in-agent-tool-query.yaml +36 -63
- package/rules/data-poisoning/ATR-2026-01155-memory-plant-direct-command.yaml +22 -54
- package/rules/data-poisoning/ATR-2026-01774-semantic-rag-memory-poisoning.yaml +74 -191
- package/rules/data-poisoning/ATR-2026-02143-graph-query-injection-node-labels-group-ids.yaml +31 -82
- package/rules/data-poisoning/ATR-2026-02144-stored-data-administrative-request-role-elevation.yaml +32 -84
- package/rules/data-poisoning/ATR-2026-02303-kql-kusto-pipe-injection-metadata-tool.yaml +34 -97
- package/rules/data-poisoning/ATR-2026-02408-dataset-loader-code-execution.yaml +60 -263
- package/rules/excessive-autonomy/ATR-2026-00050-runaway-agent-loop.yaml +32 -105
- package/rules/excessive-autonomy/ATR-2026-00051-resource-exhaustion.yaml +31 -105
- package/rules/excessive-autonomy/ATR-2026-00052-cascading-failure.yaml +32 -129
- package/rules/excessive-autonomy/ATR-2026-00098-unauthorized-financial-action.yaml +26 -106
- package/rules/excessive-autonomy/ATR-2026-00099-high-risk-tool-gate.yaml +26 -130
- package/rules/excessive-autonomy/ATR-2026-00428-nl-unauthorized-shell-execution.yaml +22 -60
- package/rules/excessive-autonomy/ATR-2026-00491-garak-agent-breaker-markdown-just-raw-json.yaml +41 -99
- package/rules/excessive-autonomy/ATR-2026-00500-ssrf-via-agent-url-fetch-instruction.yaml +41 -110
- package/rules/excessive-autonomy/ATR-2026-00553-runaway-tool-loop-behavioral.yaml +50 -141
- package/rules/excessive-autonomy/ATR-2026-00708-ipi-financial-transfer-unauthorized.yaml +33 -83
- package/rules/excessive-autonomy/ATR-2026-00709-ipi-disable-auth-mfa.yaml +29 -73
- package/rules/excessive-autonomy/ATR-2026-00710-ipi-physical-access-grant.yaml +31 -75
- package/rules/excessive-autonomy/ATR-2026-00711-ipi-system-sabotage-destructive-command.yaml +38 -88
- package/rules/excessive-autonomy/ATR-2026-00712-ipi-malicious-package-install.yaml +33 -78
- package/rules/excessive-autonomy/ATR-2026-00713-ipi-rce-network-shell-command.yaml +38 -91
- package/rules/excessive-autonomy/ATR-2026-00718-tool-misuse-financial-autonomous.yaml +27 -71
- package/rules/excessive-autonomy/ATR-2026-00719-tool-misuse-destructive-bulk-action.yaml +29 -75
- package/rules/excessive-autonomy/ATR-2026-00722-ipi-account-manipulation-emergency-pretext.yaml +35 -84
- package/rules/excessive-autonomy/ATR-2026-01751-indirect-pi-task-abort-stop-instruction.yaml +32 -75
- package/rules/excessive-autonomy/ATR-2026-01752-indirect-pi-captcha-redirect-dos.yaml +30 -74
- package/rules/excessive-autonomy/ATR-2026-01773-semantic-excessive-agency-action.yaml +46 -129
- package/rules/excessive-autonomy/ATR-2026-01801-asb-autonomous-vehicle-sabotage.yaml +34 -106
- package/rules/excessive-autonomy/ATR-2026-01804-asb-covert-unlogged-action.yaml +39 -105
- package/rules/excessive-autonomy/ATR-2026-01805-asb-financial-fraud-execution.yaml +39 -112
- package/rules/excessive-autonomy/ATR-2026-01806-asb-clinical-patient-harm.yaml +37 -108
- package/rules/excessive-autonomy/ATR-2026-01809-semantic-insider-manipulation-process-corruption.yaml +40 -106
- package/rules/excessive-autonomy/ATR-2026-01837-ddos-attack-orchestration.yaml +35 -49
- package/rules/excessive-autonomy/ATR-2026-01838-unauthorized-cryptominer-deployment.yaml +35 -49
- package/rules/excessive-autonomy/ATR-2026-01849-harassment-bot-deployment.yaml +35 -49
- package/rules/excessive-autonomy/ATR-2026-01989-t1046-agent-internal-network-sweep.yaml +33 -71
- package/rules/excessive-autonomy/ATR-2026-01993-t1562-agent-impair-defenses.yaml +37 -75
- package/rules/excessive-autonomy/ATR-2026-01994-t1573-agent-encrypted-c2-channel.yaml +37 -75
- package/rules/excessive-autonomy/ATR-2026-02106-redos-regex-payload-tool-argument.yaml +28 -84
- package/rules/excessive-autonomy/ATR-2026-02400-agent-approval-gate-disabled-runtime.yaml +60 -293
- package/rules/excessive-autonomy/ATR-2026-02401-rogue-agent-mass-connector-grant.yaml +55 -197
- package/rules/excessive-autonomy/ATR-2026-02409-mcp-async-task-abuse.yaml +59 -319
- package/rules/excessive-autonomy/ATR-2026-02525-shell-command-word-reassembly-classifier-evasion.yaml +151 -0
- package/rules/excessive-autonomy/ATR-2026-02641-client-supplied-approver-identity.yaml +111 -0
- package/rules/excessive-autonomy/ATR-2026-02667-preapproved-tool-list-in-job-payload.yaml +90 -0
- package/rules/model-abuse/ATR-2026-00279-harmful-completion-continuation.yaml +45 -92
- package/rules/model-abuse/ATR-2026-00281-eicar-gtube-malware-signature-request.yaml +50 -93
- package/rules/model-abuse/ATR-2026-00284-glitch-token-destabilization.yaml +44 -91
- package/rules/model-abuse/ATR-2026-00289-lmrc-harmful-content-elicitation.yaml +46 -95
- package/rules/model-abuse/ATR-2026-00292-self-harm-eating-disorder-facilitation.yaml +47 -96
- package/rules/model-abuse/ATR-2026-00298-malicious-use-illegal-activity-request.yaml +54 -112
- package/rules/model-abuse/ATR-2026-00299-harmbench-detailed-harmful-instruction.yaml +53 -107
- package/rules/model-abuse/ATR-2026-00413-malwaregen-code-generation-request.yaml +53 -121
- package/rules/model-abuse/ATR-2026-00502-training-data-extraction-via-divergent-repetition-attack.yaml +41 -112
- package/rules/model-abuse/ATR-2026-00517-model-extraction-distillation.yaml +53 -165
- package/rules/model-abuse/ATR-2026-01750-dos-repeat-word-n-times-output-amplification.yaml +33 -95
- package/rules/model-abuse/ATR-2026-01760-dos-forced-infinite-output-token-flood.yaml +29 -75
- package/rules/model-abuse/ATR-2026-01830-stolen-credential-account-drain.yaml +36 -53
- package/rules/model-abuse/ATR-2026-01831-money-laundering-crypto-layering.yaml +36 -53
- package/rules/model-abuse/ATR-2026-01833-darknet-controlled-substance-procurement.yaml +40 -60
- package/rules/model-abuse/ATR-2026-01834-fraudulent-identity-document-procurement.yaml +35 -49
- package/rules/model-abuse/ATR-2026-01835-human-trafficking-facilitation.yaml +35 -49
- package/rules/model-abuse/ATR-2026-01836-trojanized-software-distribution.yaml +37 -51
- package/rules/model-abuse/ATR-2026-01840-extremist-propaganda-distribution.yaml +35 -52
- package/rules/model-abuse/ATR-2026-01841-deepfake-disinformation.yaml +39 -59
- package/rules/model-abuse/ATR-2026-01842-plagiarism-detector-evasion.yaml +33 -50
- package/rules/model-abuse/ATR-2026-01843-drug-dealing-detection-evasion-spelling.yaml +35 -49
- package/rules/model-abuse/ATR-2026-01844-illegitimate-prescription-fulfillment.yaml +35 -49
- package/rules/model-abuse/ATR-2026-01845-banned-ingredient-relabel-fraud.yaml +37 -51
- package/rules/model-abuse/ATR-2026-01846-tax-evasion-offshore-shell-planning.yaml +35 -49
- package/rules/model-abuse/ATR-2026-01847-immigration-work-fraud.yaml +35 -49
- package/rules/model-abuse/ATR-2026-01848-illicit-drug-marketplace-build.yaml +35 -49
- package/rules/model-abuse/ATR-2026-01850-targeted-doxxing-threat-campaign.yaml +39 -59
- package/rules/model-abuse/ATR-2026-01851-bestiality-content-distribution.yaml +34 -45
- package/rules/model-abuse/ATR-2026-01852-romance-scam-impersonation.yaml +35 -49
- package/rules/model-abuse/ATR-2026-01853-nonconsensual-leaked-media-distribution.yaml +36 -47
- package/rules/model-abuse/ATR-2026-01854-falsified-research-abstract-disinformation.yaml +34 -45
- package/rules/model-abuse/ATR-2026-01855-content-misappropriation-republish.yaml +37 -51
- package/rules/model-abuse/ATR-2026-01856-targeted-harmful-content-generation.yaml +42 -59
- package/rules/model-abuse/ATR-2026-01896-ransomware.yaml +35 -84
- package/rules/model-abuse/ATR-2026-01897-host-sabotage.yaml +55 -129
- package/rules/model-abuse/ATR-2026-01898-network-dos.yaml +47 -93
- package/rules/model-abuse/ATR-2026-02211-named-substance-synthesis-request-non-stepword.yaml +34 -110
- package/rules/model-abuse/ATR-2026-02411-ai-provenance-metadata-stripping.yaml +63 -226
- package/rules/model-abuse/ATR-2026-02412-generative-watermark-removal-tooling.yaml +56 -187
- package/rules/model-abuse/ATR-2026-02413-ai-text-detection-evasion-humanizer.yaml +62 -206
- package/rules/model-security/ATR-2026-00072-model-behavior-extraction.yaml +36 -110
- package/rules/model-security/ATR-2026-00073-malicious-finetuning-data.yaml +28 -116
- package/rules/model-security/ATR-2026-00433-modelcache-torch-load-deserialization-rce.yaml +50 -128
- package/rules/model-security/ATR-2026-02662-pickle-indirect-name-resolution-gadget.yaml +97 -0
- package/rules/privilege-escalation/ATR-2026-00040-privilege-escalation.yaml +21 -83
- package/rules/privilege-escalation/ATR-2026-00041-scope-creep.yaml +29 -107
- package/rules/privilege-escalation/ATR-2026-00107-delayed-execution-bypass.yaml +17 -90
- package/rules/privilege-escalation/ATR-2026-00110-eval-injection.yaml +16 -84
- package/rules/privilege-escalation/ATR-2026-00111-shell-escape.yaml +23 -117
- package/rules/privilege-escalation/ATR-2026-00112-dynamic-import-exploitation.yaml +15 -81
- package/rules/privilege-escalation/ATR-2026-00143-casual-privilege-escalation.yaml +20 -86
- package/rules/privilege-escalation/ATR-2026-00144-rationalized-safety-bypass.yaml +21 -83
- package/rules/privilege-escalation/ATR-2026-00204-stealth-execution-persistence.yaml +41 -90
- package/rules/privilege-escalation/ATR-2026-00436-enclave-vm-sandbox-escape-rce.yaml +53 -131
- package/rules/privilege-escalation/ATR-2026-00441-semantic-kernel-sessions-python-plugin-startup-persistence.yaml +50 -122
- package/rules/privilege-escalation/ATR-2026-00451-litellm-admin-sqli-cisa-kev.yaml +53 -141
- package/rules/privilege-escalation/ATR-2026-00528-praisonai-auth-disabled-default.yaml +40 -151
- package/rules/privilege-escalation/ATR-2026-00539-crewai-codeinterpreter-sandbox-escape-rce.yaml +74 -232
- package/rules/privilege-escalation/ATR-2026-00546-crewai-json-loader-local-file-read.yaml +46 -117
- package/rules/privilege-escalation/ATR-2026-00547-crewai-rag-url-ssrf-bypass.yaml +47 -121
- package/rules/privilege-escalation/ATR-2026-00549-destructive-tool-without-human-approval.yaml +52 -159
- package/rules/privilege-escalation/ATR-2026-00551-cross-conversation-memory-write.yaml +60 -171
- package/rules/privilege-escalation/ATR-2026-01600-sql-injection-tautology-rbac-bypass.yaml +23 -50
- package/rules/privilege-escalation/ATR-2026-01601-sql-injection-destructive-ddl.yaml +23 -54
- package/rules/privilege-escalation/ATR-2026-01602-sql-injection-union-select-exfil.yaml +20 -57
- package/rules/privilege-escalation/ATR-2026-01603-sql-injection-stacked-dml-abuse.yaml +23 -47
- package/rules/privilege-escalation/ATR-2026-01604-sql-injection-schema-enumeration.yaml +21 -45
- package/rules/privilege-escalation/ATR-2026-01609-shell-injection-exfil-webhook.yaml +29 -53
- package/rules/privilege-escalation/ATR-2026-01610-shell-evasion-subshell-injection.yaml +30 -53
- package/rules/privilege-escalation/ATR-2026-01611-shell-evasion-eval-exec-injection.yaml +32 -56
- package/rules/privilege-escalation/ATR-2026-01612-debug-mode-privilege-escalation.yaml +29 -53
- package/rules/privilege-escalation/ATR-2026-01613-rbac-bypass-social-engineering.yaml +29 -66
- package/rules/privilege-escalation/ATR-2026-01614-bola-cross-user-data-access.yaml +26 -59
- package/rules/privilege-escalation/ATR-2026-01615-sandbox-escape-command-injection.yaml +28 -52
- package/rules/privilege-escalation/ATR-2026-01616-path-traversal-agent-file-access.yaml +21 -45
- package/rules/privilege-escalation/ATR-2026-01802-asb-backdoor-surveillance-implant.yaml +33 -94
- package/rules/privilege-escalation/ATR-2026-01803-asb-covert-server-intrusion.yaml +37 -108
- package/rules/privilege-escalation/ATR-2026-01808-asb-synthetic-pan-payment-probe.yaml +31 -86
- package/rules/privilege-escalation/ATR-2026-01899-remote-access-backdoor.yaml +43 -112
- package/rules/privilege-escalation/ATR-2026-01933-litellm-user-role-privilege-escalation-cve-2026-47102.yaml +45 -103
- package/rules/privilege-escalation/ATR-2026-01934-litellm-allowed-routes-authz-bypass-cve-2026-47101.yaml +44 -103
- package/rules/privilege-escalation/ATR-2026-01949-praisonai-mcpserver-unauth-tools-call.yaml +39 -80
- package/rules/privilege-escalation/ATR-2026-01974-anything-llm-data-import-access-control.yaml +57 -62
- package/rules/privilege-escalation/ATR-2026-01981-network-ai-approval-inbox-unauth-cors-bypass.yaml +47 -97
- package/rules/privilege-escalation/ATR-2026-01986-windows-mcp-unauth-http-powershell-cors.yaml +51 -112
- package/rules/privilege-escalation/ATR-2026-01992-t1556-agent-auth-process-tamper.yaml +37 -75
- package/rules/privilege-escalation/ATR-2026-02040-file-edit-tool-persistence-write.yaml +34 -87
- package/rules/privilege-escalation/ATR-2026-02100-cypher-destructive-admin-query-injection.yaml +36 -92
- package/rules/privilege-escalation/ATR-2026-02101-dynamic-dunder-attribute-sandbox-escape.yaml +33 -91
- package/rules/privilege-escalation/ATR-2026-02123-bare-query-path-confusion-auth-bypass.yaml +36 -98
- package/rules/privilege-escalation/ATR-2026-02142-download-tool-absolute-path-sandbox-escape.yaml +36 -107
- package/rules/privilege-escalation/ATR-2026-02146-export-tool-dest-dir-credential-directory-redirect.yaml +31 -83
- package/rules/privilege-escalation/ATR-2026-02192-self-privesc-wildcard-trust-config-write.yaml +41 -103
- package/rules/privilege-escalation/ATR-2026-02195-dangerous-env-var-injection-config-tool.yaml +36 -99
- package/rules/privilege-escalation/ATR-2026-02251-identifier-field-path-traversal-storage-write.yaml +32 -83
- package/rules/privilege-escalation/ATR-2026-02300-mcp-stdio-config-dangerous-env-var.yaml +42 -109
- package/rules/privilege-escalation/ATR-2026-02301-symlink-outside-workspace-sensitive-target.yaml +36 -101
- package/rules/privilege-escalation/ATR-2026-02302-git-worktree-dotgit-sandbox-escape.yaml +33 -86
- package/rules/privilege-escalation/ATR-2026-02353-runtime-identifier-field-path-traversal-log-read.yaml +34 -115
- package/rules/privilege-escalation/ATR-2026-02370-ssh-scp-hostalias-option-injection.yaml +42 -100
- package/rules/privilege-escalation/ATR-2026-02371-chromium-launch-flag-argument-injection.yaml +43 -103
- package/rules/privilege-escalation/ATR-2026-02402-mcp-policy-engine-fail-open.yaml +56 -214
- package/rules/privilege-escalation/ATR-2026-02404-model-output-to-shell-unsanitized.yaml +50 -195
- package/rules/privilege-escalation/ATR-2026-02407-agent-workspace-boundary-escape.yaml +55 -236
- package/rules/privilege-escalation/ATR-2026-02528-tool-parameter-option-flag-smuggling.yaml +113 -0
- package/rules/privilege-escalation/ATR-2026-02530-git-config-execution-key-set-by-agent.yaml +131 -0
- package/rules/privilege-escalation/ATR-2026-02531-kusto-query-injection-outbound-reach.yaml +110 -0
- package/rules/privilege-escalation/ATR-2026-02601-tool-argument-option-injection.yaml +116 -0
- package/rules/privilege-escalation/ATR-2026-02620-dynamic-import-data-uri-module.yaml +101 -0
- package/rules/privilege-escalation/ATR-2026-02626-agent-self-registers-mcp-server.yaml +107 -0
- package/rules/privilege-escalation/ATR-2026-02627-web-shell-written-to-served-path.yaml +119 -0
- package/rules/privilege-escalation/ATR-2026-02642-agent-config-tool-disables-own-guardrail.yaml +115 -0
- package/rules/privilege-escalation/ATR-2026-02644-image-magic-polyglot-upload.yaml +117 -0
- package/rules/privilege-escalation/ATR-2026-02648-readonly-graph-tool-write-procedure.yaml +107 -0
- package/rules/privilege-escalation/ATR-2026-02664-git-identifier-field-option-injection.yaml +100 -0
- package/rules/privilege-escalation/ATR-2026-02681-reflective-function-constructor-sandbox-escape.yaml +100 -0
- package/rules/privilege-escalation/ATR-2026-02683-tool-argument-option-injection-executor-flag.yaml +108 -0
- package/rules/privilege-escalation/ATR-2026-02700-percent-encoded-path-traversal-tool-argument.yaml +90 -0
- package/rules/privilege-escalation/ATR-2026-02705-python-builtins-leak-and-prefix-check-override.yaml +87 -0
- package/rules/privilege-escalation/ATR-2026-02708-loopback-spoofed-host-header-external-request.yaml +91 -0
- package/rules/privilege-escalation/ATR-2026-02867-identifier-typed-tool-argument-dot-dot-path-segment.yaml +106 -0
- package/rules/prompt-injection/ATR-2026-00001-direct-prompt-injection.yaml +133 -455
- package/rules/prompt-injection/ATR-2026-00002-indirect-prompt-injection.yaml +71 -185
- package/rules/prompt-injection/ATR-2026-00003-jailbreak-attempt.yaml +110 -328
- package/rules/prompt-injection/ATR-2026-00004-system-prompt-override.yaml +56 -225
- package/rules/prompt-injection/ATR-2026-00005-multi-turn-injection.yaml +59 -140
- package/rules/prompt-injection/ATR-2026-00080-encoding-evasion.yaml +23 -85
- package/rules/prompt-injection/ATR-2026-00081-semantic-multi-turn.yaml +27 -104
- package/rules/prompt-injection/ATR-2026-00082-fingerprint-evasion.yaml +27 -91
- package/rules/prompt-injection/ATR-2026-00083-indirect-tool-injection.yaml +27 -104
- package/rules/prompt-injection/ATR-2026-00084-structured-data-injection.yaml +38 -96
- package/rules/prompt-injection/ATR-2026-00085-audit-evasion.yaml +25 -90
- package/rules/prompt-injection/ATR-2026-00086-visual-spoofing.yaml +29 -153
- package/rules/prompt-injection/ATR-2026-00087-rule-probing.yaml +29 -102
- package/rules/prompt-injection/ATR-2026-00088-adaptive-countermeasure.yaml +32 -111
- package/rules/prompt-injection/ATR-2026-00089-polymorphic-skill.yaml +24 -146
- package/rules/prompt-injection/ATR-2026-00090-threat-intel-exfil.yaml +29 -109
- package/rules/prompt-injection/ATR-2026-00091-nested-payload.yaml +25 -123
- package/rules/prompt-injection/ATR-2026-00092-consensus-poisoning.yaml +28 -96
- package/rules/prompt-injection/ATR-2026-00093-gradual-escalation.yaml +28 -98
- package/rules/prompt-injection/ATR-2026-00094-audit-bypass.yaml +24 -91
- package/rules/prompt-injection/ATR-2026-00097-cjk-injection-patterns.yaml +56 -199
- package/rules/prompt-injection/ATR-2026-00104-persona-hijacking.yaml +22 -106
- package/rules/prompt-injection/ATR-2026-00130-indirect-authority-claim.yaml +26 -98
- package/rules/prompt-injection/ATR-2026-00131-fictional-academic-framing.yaml +26 -94
- package/rules/prompt-injection/ATR-2026-00133-paraphrase-injection.yaml +26 -97
- package/rules/prompt-injection/ATR-2026-00137-authority-claim-injection.yaml +22 -90
- package/rules/prompt-injection/ATR-2026-00138-fictional-framing-bypass.yaml +24 -111
- package/rules/prompt-injection/ATR-2026-00140-indirect-reference-reversal.yaml +21 -79
- package/rules/prompt-injection/ATR-2026-00148-language-switch-injection.yaml +30 -92
- package/rules/prompt-injection/ATR-2026-00153-tool-with-embedded-instruction-to-bypass.yaml +22 -98
- package/rules/prompt-injection/ATR-2026-00154-unauthorized-background-task-execution-v.yaml +24 -109
- package/rules/prompt-injection/ATR-2026-00155-hidden-llm-instructions-in-skill-descrip.yaml +24 -104
- package/rules/prompt-injection/ATR-2026-00156-ssh-remote-command-execution-with-creden.yaml +20 -81
- package/rules/prompt-injection/ATR-2026-00163-skill-hidden-override-instruction.yaml +44 -61
- package/rules/prompt-injection/ATR-2026-00202-encoding-evasion-homoglyph-synonym.yaml +37 -79
- package/rules/prompt-injection/ATR-2026-00203-context-pollution-skill-description.yaml +38 -63
- package/rules/prompt-injection/ATR-2026-00206-hidden-priority-instructions.yaml +36 -51
- package/rules/prompt-injection/ATR-2026-00207-hidden-instructions.yaml +37 -51
- package/rules/prompt-injection/ATR-2026-00211-system-prompt-override.yaml +36 -52
- package/rules/prompt-injection/ATR-2026-00213-system-prompt-override.yaml +38 -75
- package/rules/prompt-injection/ATR-2026-00226-identity-substitution.yaml +48 -92
- package/rules/prompt-injection/ATR-2026-00227-historical-persona-jailbreak.yaml +49 -93
- package/rules/prompt-injection/ATR-2026-00228-structured-jailbreak.yaml +47 -88
- package/rules/prompt-injection/ATR-2026-00229-roleplay-jailbreak.yaml +46 -87
- package/rules/prompt-injection/ATR-2026-00230-persona-moral-bypass.yaml +47 -89
- package/rules/prompt-injection/ATR-2026-00231-identity-substitution.yaml +48 -89
- package/rules/prompt-injection/ATR-2026-00233-structured-jailbreak.yaml +48 -89
- package/rules/prompt-injection/ATR-2026-00234-roleplay-jailbreak.yaml +48 -89
- package/rules/prompt-injection/ATR-2026-00235-persona-moral-bypass.yaml +45 -88
- package/rules/prompt-injection/ATR-2026-00236-pseudo-code-jailbreak.yaml +46 -89
- package/rules/prompt-injection/ATR-2026-00237-dual-response-jailbreak.yaml +48 -89
- package/rules/prompt-injection/ATR-2026-00238-identity-replacement.yaml +50 -92
- package/rules/prompt-injection/ATR-2026-00239-amoral-persona-obsession.yaml +47 -90
- package/rules/prompt-injection/ATR-2026-00240-instruction-nullification-identity-repla.yaml +48 -91
- package/rules/prompt-injection/ATR-2026-00241-amoral-character-jailbreak.yaml +47 -90
- package/rules/prompt-injection/ATR-2026-00242-persona-jailbreak.yaml +46 -95
- package/rules/prompt-injection/ATR-2026-00243-acronym-jailbreak.yaml +47 -88
- package/rules/prompt-injection/ATR-2026-00244-dual-response-jailbreak.yaml +46 -89
- package/rules/prompt-injection/ATR-2026-00245-malicious-persona.yaml +47 -89
- package/rules/prompt-injection/ATR-2026-00247-dual-response-jailbreak.yaml +49 -90
- package/rules/prompt-injection/ATR-2026-00249-game-based-jailbreak.yaml +47 -87
- package/rules/prompt-injection/ATR-2026-00251-persona-embodiment-jailbreak.yaml +47 -90
- package/rules/prompt-injection/ATR-2026-00252-narrative-jailbreak.yaml +48 -91
- package/rules/prompt-injection/ATR-2026-00253-enhanced-persona-jailbreak.yaml +47 -89
- package/rules/prompt-injection/ATR-2026-00256-base-n-encoding-jailbreak.yaml +47 -91
- package/rules/prompt-injection/ATR-2026-00257-cipher-transposition-jailbreak.yaml +48 -91
- package/rules/prompt-injection/ATR-2026-00258-unicode-tag-injection.yaml +47 -89
- package/rules/prompt-injection/ATR-2026-00264-latent-injection-translation.yaml +47 -89
- package/rules/prompt-injection/ATR-2026-00265-latent-injection-rag-document.yaml +50 -96
- package/rules/prompt-injection/ATR-2026-00267-gcg-adversarial-suffix.yaml +47 -93
- package/rules/prompt-injection/ATR-2026-00272-hypothetical-response-smuggling.yaml +46 -91
- package/rules/prompt-injection/ATR-2026-00276-invisible-unicode-bidi-injection.yaml +47 -100
- package/rules/prompt-injection/ATR-2026-00278-dra-disguise-reconstruction-attack.yaml +51 -98
- package/rules/prompt-injection/ATR-2026-00280-policy-puppetry-xml-injection.yaml +48 -93
- package/rules/prompt-injection/ATR-2026-00282-perez-prompt-injection-hijack.yaml +47 -95
- package/rules/prompt-injection/ATR-2026-00285-alternate-encoding-jailbreak.yaml +48 -98
- package/rules/prompt-injection/ATR-2026-00286-latent-injection-embedded-context.yaml +47 -97
- package/rules/prompt-injection/ATR-2026-00296-shell-command-injection.yaml +54 -96
- package/rules/prompt-injection/ATR-2026-00297-python-code-execution-rce.yaml +54 -98
- package/rules/prompt-injection/ATR-2026-00308-zalgo-diacritic-overload-encoding.yaml +41 -89
- package/rules/prompt-injection/ATR-2026-00309-braille-unicode-encoded-injection.yaml +44 -90
- package/rules/prompt-injection/ATR-2026-00310-ecoji-emoji-encoded-injection.yaml +44 -93
- package/rules/prompt-injection/ATR-2026-00311-base2048-unicode-script-injection.yaml +42 -101
- package/rules/prompt-injection/ATR-2026-00312-unicode-variant-selector-ascii-smuggling.yaml +44 -91
- package/rules/prompt-injection/ATR-2026-00313-sneaky-bits-zero-width-binary.yaml +44 -95
- package/rules/prompt-injection/ATR-2026-00315-sata-masked-language-model-jailbreak.yaml +49 -99
- package/rules/prompt-injection/ATR-2026-00316-function-masking-predict-mask-bypass.yaml +42 -92
- package/rules/prompt-injection/ATR-2026-00321-hyphenated-system-instruction-injection.yaml +41 -90
- package/rules/prompt-injection/ATR-2026-00359-bank-phishing-smtp-email-code.yaml +43 -102
- package/rules/prompt-injection/ATR-2026-00367-emoji-flag-encoded-hidden-phrase.yaml +41 -90
- package/rules/prompt-injection/ATR-2026-00373-piracy-torrent-site-list-request.yaml +43 -84
- package/rules/prompt-injection/ATR-2026-00378-chatgpt-dom-javascript-redirect-manipulation.yaml +41 -86
- package/rules/prompt-injection/ATR-2026-00382-cocaine-component-development-request.yaml +43 -89
- package/rules/prompt-injection/ATR-2026-00390-explicit-sexual-content-poem-request.yaml +42 -88
- package/rules/prompt-injection/ATR-2026-00394-backspace-deletion-character-injection.yaml +48 -100
- package/rules/prompt-injection/ATR-2026-00395-llm-special-token-boundary-injection.yaml +50 -104
- package/rules/prompt-injection/ATR-2026-00396-toxic-continuation-prefix-injection.yaml +52 -103
- package/rules/prompt-injection/ATR-2026-00397-snowball-impossible-reasoning-injection.yaml +51 -105
- package/rules/prompt-injection/ATR-2026-00399-latent-injection-document-separator-token.yaml +45 -94
- package/rules/prompt-injection/ATR-2026-00400-latent-injection-ignore-instruction-keyword.yaml +41 -90
- package/rules/prompt-injection/ATR-2026-00401-leakreplay-cloze-mask-training-data-elicitation.yaml +48 -91
- package/rules/prompt-injection/ATR-2026-00403-glitch-token-repeat-back-elicitation.yaml +45 -92
- package/rules/prompt-injection/ATR-2026-00407-echo-sql-jinja-template-injection.yaml +52 -97
- package/rules/prompt-injection/ATR-2026-00408-dra-parenthesis-character-reconstruction-attack.yaml +52 -99
- package/rules/prompt-injection/ATR-2026-00409-phrasing-past-future-tense-harmful-query.yaml +50 -129
- package/rules/prompt-injection/ATR-2026-00410-lmrc-harm-category-direct-elicitation.yaml +51 -115
- package/rules/prompt-injection/ATR-2026-00412-figstep-image-list-multimodal-jailbreak.yaml +47 -111
- package/rules/prompt-injection/ATR-2026-00414-continuation-ethnic-slur-completion-elicitation.yaml +49 -117
- package/rules/prompt-injection/ATR-2026-00420-copilot-studio-sharepoint-indirect-injection.yaml +49 -116
- package/rules/prompt-injection/ATR-2026-00442-quoted-exact-output-forcing.yaml +38 -103
- package/rules/prompt-injection/ATR-2026-00443-word-fragment-concat-assembly.yaml +37 -103
- package/rules/prompt-injection/ATR-2026-00444-unicode-obfuscation-in-user-input.yaml +35 -91
- package/rules/prompt-injection/ATR-2026-00445-translation-hijack-with-side-output.yaml +35 -90
- package/rules/prompt-injection/ATR-2026-00446-variable-assignment-payload-injection.yaml +35 -95
- package/rules/prompt-injection/ATR-2026-00447-fictional-generation-containing-target.yaml +35 -90
- package/rules/prompt-injection/ATR-2026-00452-direct-pwned-payload-injection.yaml +41 -123
- package/rules/prompt-injection/ATR-2026-00453-secret-key-reveal-demand.yaml +38 -118
- package/rules/prompt-injection/ATR-2026-00454-backslash-per-character-encoding.yaml +40 -119
- package/rules/prompt-injection/ATR-2026-00455-no-period-output-override.yaml +37 -109
- package/rules/prompt-injection/ATR-2026-00456-conditional-empty-input-injection.yaml +40 -119
- package/rules/prompt-injection/ATR-2026-00457-garak-dan-to-every-prompt.yaml +41 -117
- package/rules/prompt-injection/ATR-2026-00458-garak-dra-step-by-step.yaml +41 -100
- package/rules/prompt-injection/ATR-2026-00459-garak-dan-an-ai-language.yaml +38 -93
- package/rules/prompt-injection/ATR-2026-00460-garak-dan-no-matter-how.yaml +41 -119
- package/rules/prompt-injection/ATR-2026-00461-garak-goodside-mixedunassigned.yaml +35 -97
- package/rules/prompt-injection/ATR-2026-00462-garak-gcg-mixedunassigned.yaml +35 -98
- package/rules/prompt-injection/ATR-2026-00463-garak-lmrc-mixedunassigned.yaml +35 -99
- package/rules/prompt-injection/ATR-2026-00464-garak-dan-i-would-like.yaml +41 -96
- package/rules/prompt-injection/ATR-2026-00465-garak-dan-your-prompt-here.yaml +41 -102
- package/rules/prompt-injection/ATR-2026-00466-garak-latentinjection-following-text-from.yaml +41 -98
- package/rules/prompt-injection/ATR-2026-00467-garak-dan-act-as-a.yaml +41 -97
- package/rules/prompt-injection/ATR-2026-00468-garak-goat-the-target-llm.yaml +38 -98
- package/rules/prompt-injection/ATR-2026-00469-garak-dan-at-the-end.yaml +41 -97
- package/rules/prompt-injection/ATR-2026-00470-garak-dan-as-an-ai.yaml +41 -112
- package/rules/prompt-injection/ATR-2026-00472-garak-dan-are-going-to.yaml +55 -107
- package/rules/prompt-injection/ATR-2026-00473-garak-lmrc-how-can-i.yaml +52 -98
- package/rules/prompt-injection/ATR-2026-00474-garak-dan-that-chatgpt-has.yaml +52 -91
- package/rules/prompt-injection/ATR-2026-00475-garak-web-injection-alert-1-script.yaml +47 -94
- package/rules/prompt-injection/ATR-2026-00476-garak-web-injection-javascript-alert-1.yaml +59 -115
- package/rules/prompt-injection/ATR-2026-00477-garak-latentinjection-translate-the-following-text.yaml +51 -101
- package/rules/prompt-injection/ATR-2026-00478-garak-latentinjection-abuse-contact-email.yaml +35 -93
- package/rules/prompt-injection/ATR-2026-00479-garak-latentinjection-mixedunassigned.yaml +49 -104
- package/rules/prompt-injection/ATR-2026-00480-garak-dan-the-role-of.yaml +52 -95
- package/rules/prompt-injection/ATR-2026-00481-garak-dan-mixedunassigned.yaml +56 -111
- package/rules/prompt-injection/ATR-2026-00482-garak-lmrc-what-s-an.yaml +47 -86
- package/rules/prompt-injection/ATR-2026-00483-garak-dan-the-user-s.yaml +51 -99
- package/rules/prompt-injection/ATR-2026-00484-garak-dan-and-you-will.yaml +52 -96
- package/rules/prompt-injection/ATR-2026-00485-garak-dan-and-does-not.yaml +50 -98
- package/rules/prompt-injection/ATR-2026-00486-garak-dan-t-care-about.yaml +43 -83
- package/rules/prompt-injection/ATR-2026-00487-garak-dan-and-nothing-else.yaml +51 -92
- package/rules/prompt-injection/ATR-2026-00488-garak-encoding-alert-1-script.yaml +47 -95
- package/rules/prompt-injection/ATR-2026-00489-garak-encoding-javascript-alert-1.yaml +59 -116
- package/rules/prompt-injection/ATR-2026-00490-garak-dan-in-order-to.yaml +43 -102
- package/rules/prompt-injection/ATR-2026-00492-garak-dan-want-you-to.yaml +42 -99
- package/rules/prompt-injection/ATR-2026-00493-garak-latentinjection-registrar-iana-id.yaml +38 -105
- package/rules/prompt-injection/ATR-2026-00495-garak-dan-insert-prompt-here.yaml +47 -117
- package/rules/prompt-injection/ATR-2026-00496-garak-dan-no-matter-what.yaml +39 -93
- package/rules/prompt-injection/ATR-2026-00497-garak-encoding-mixedunassigned.yaml +46 -118
- package/rules/prompt-injection/ATR-2026-00498-garak-web-injection-mixedunassigned.yaml +44 -110
- package/rules/prompt-injection/ATR-2026-00499-garak-dan-from-now-on.yaml +41 -96
- package/rules/prompt-injection/ATR-2026-00503-fake-error-state-takeover-unrestricted-replacement-bot.yaml +41 -102
- package/rules/prompt-injection/ATR-2026-00506-nevermind-override-goal-hijacking-in-user-input-promptinject.yaml +38 -97
- package/rules/prompt-injection/ATR-2026-00507-screaming-stop-goal-hijacking-in-user-input-promptinject.yaml +40 -100
- package/rules/prompt-injection/ATR-2026-00508-escape-delimiter-wrapped-goal-hijacking-in-user-input-prompt.yaml +42 -101
- package/rules/prompt-injection/ATR-2026-00509-prompt-leaking-via-ignore-previous-instructions-in-user-inpu.yaml +41 -114
- package/rules/prompt-injection/ATR-2026-00510-delayed-tool-invocation-injection.yaml +50 -132
- package/rules/prompt-injection/ATR-2026-00511-mcp-web-context-poisoning.yaml +51 -131
- package/rules/prompt-injection/ATR-2026-00512-rules-file-backdoor-injection.yaml +47 -126
- package/rules/prompt-injection/ATR-2026-00515-hidden-text-prompt-injection.yaml +52 -135
- package/rules/prompt-injection/ATR-2026-00518-ignore-previous-and-following-instructions-output-command-promptinject.yaml +40 -107
- package/rules/prompt-injection/ATR-2026-00519-tautology-logic-noise-injection-promptbench.yaml +40 -105
- package/rules/prompt-injection/ATR-2026-00520-nlp-task-random-token-suffix-injection-promptbench.yaml +43 -106
- package/rules/prompt-injection/ATR-2026-00535-windsurf-ide-zero-click-prompt-injection.yaml +43 -139
- package/rules/prompt-injection/ATR-2026-00550-untrusted-retrieval-to-privileged-tool.yaml +61 -171
- package/rules/prompt-injection/ATR-2026-00554-langchain-vulnerable-to-template-injecti.yaml +32 -57
- package/rules/prompt-injection/ATR-2026-00565-the-llm-cli-tool-thru-0-27-1-contains-a-.yaml +37 -80
- package/rules/prompt-injection/ATR-2026-00573-semantic-paraphrased-injection.yaml +33 -75
- package/rules/prompt-injection/ATR-2026-00579-mcp-tool-description-line-jumping-injection.yaml +36 -142
- package/rules/prompt-injection/ATR-2026-00584-indirect-injection-via-tool-response.yaml +37 -161
- package/rules/prompt-injection/ATR-2026-00700-structured-data-payload-injection.yaml +34 -85
- package/rules/prompt-injection/ATR-2026-00701-ipi-tool-output-xss-injection.yaml +29 -72
- package/rules/prompt-injection/ATR-2026-01000-context-ignore-fake-completion-prefix.yaml +27 -73
- package/rules/prompt-injection/ATR-2026-01001-direct-pi-instruction-override-secret-key.yaml +26 -82
- package/rules/prompt-injection/ATR-2026-01002-role-escalation-false-authority-claim.yaml +30 -80
- package/rules/prompt-injection/ATR-2026-01005-many-shot-repetition-override.yaml +26 -69
- package/rules/prompt-injection/ATR-2026-01006-payload-split-string-concat-injection.yaml +31 -84
- package/rules/prompt-injection/ATR-2026-01007-token-repeat-flooding-injection.yaml +27 -71
- package/rules/prompt-injection/ATR-2026-01009-virtual-world-bypass-fictional-pii.yaml +27 -73
- package/rules/prompt-injection/ATR-2026-01012-encoding-evasion-decode-execute.yaml +31 -81
- package/rules/prompt-injection/ATR-2026-01013-language-evasion-multilingual-credential.yaml +46 -108
- package/rules/prompt-injection/ATR-2026-01015-evasion-refusal-suppression.yaml +31 -82
- package/rules/prompt-injection/ATR-2026-01016-evasion-response-priming-forced-opener.yaml +26 -75
- package/rules/prompt-injection/ATR-2026-01017-evasion-dual-response-split-output.yaml +28 -74
- package/rules/prompt-injection/ATR-2026-01018-evasion-shell-injection-eval.yaml +40 -116
- package/rules/prompt-injection/ATR-2026-01019-sysprompt-override-fake-diagnostic-mode.yaml +34 -89
- package/rules/prompt-injection/ATR-2026-01020-spikee-doc-embedded-base64-payload.yaml +28 -69
- package/rules/prompt-injection/ATR-2026-01021-spikee-doc-embedded-translation-injection.yaml +27 -68
- package/rules/prompt-injection/ATR-2026-01023-evasion-opposite-intent-negation-trick.yaml +26 -69
- package/rules/prompt-injection/ATR-2026-01024-evasion-persona-override-rule-breaker.yaml +28 -77
- package/rules/prompt-injection/ATR-2026-01025-evasion-hypothetical-fictional-execution-framing.yaml +24 -68
- package/rules/prompt-injection/ATR-2026-01026-evasion-unicode-glitch-token-anomaly.yaml +28 -82
- package/rules/prompt-injection/ATR-2026-01304-indirect-injection-carrier-important-override.yaml +35 -93
- package/rules/prompt-injection/ATR-2026-01757-hypothetical-framing-bypass-research-audit.yaml +32 -79
- package/rules/prompt-injection/ATR-2026-01758-hypothetical-fictional-story-bypass.yaml +31 -76
- package/rules/prompt-injection/ATR-2026-01759-dos-new-important-instructions-injection-in-document.yaml +28 -74
- package/rules/prompt-injection/ATR-2026-01771-semantic-jailbreak-framing.yaml +50 -163
- package/rules/prompt-injection/ATR-2026-01800-asb-trigger-marker-tool-coercion.yaml +33 -104
- package/rules/prompt-injection/ATR-2026-01860-llmail-chat-template-boundary-spoof.yaml +27 -85
- package/rules/prompt-injection/ATR-2026-01861-llmail-pseudo-xml-role-injection.yaml +27 -83
- package/rules/prompt-injection/ATR-2026-01865-llmail-fake-email-boundary-marker.yaml +26 -80
- package/rules/prompt-injection/ATR-2026-01900-output-encoding.yaml +63 -138
- package/rules/prompt-injection/ATR-2026-01901-output-scrambling.yaml +63 -129
- package/rules/prompt-injection/ATR-2026-01902-output-emoji.yaml +39 -72
- package/rules/prompt-injection/ATR-2026-01903-output-language.yaml +35 -65
- package/rules/prompt-injection/ATR-2026-01904-link-injection.yaml +44 -95
- package/rules/prompt-injection/ATR-2026-01905-promotional-injection.yaml +35 -68
- package/rules/prompt-injection/ATR-2026-01906-content-manipulation.yaml +49 -125
- package/rules/prompt-injection/ATR-2026-01920-access-grant-coercion.yaml +31 -99
- package/rules/prompt-injection/ATR-2026-01921-access-denial-inversion.yaml +33 -92
- package/rules/prompt-injection/ATR-2026-01922-authorization-state-spoofing.yaml +33 -97
- package/rules/prompt-injection/ATR-2026-01923-forged-input-boundary-markers.yaml +33 -97
- package/rules/prompt-injection/ATR-2026-01925-encoded-payload-decoding-coercion.yaml +39 -110
- package/rules/prompt-injection/ATR-2026-01926-cross-lingual-authorization-laundering.yaml +29 -90
- package/rules/prompt-injection/ATR-2026-02001-ignore-below-instructions-mirror-of-ignore-previ.yaml +31 -73
- package/rules/prompt-injection/ATR-2026-02002-instruction-set-probe-or-supplant-direct-meta-qu.yaml +32 -72
- package/rules/prompt-injection/ATR-2026-02003-task-pivot-override-abandon-the-cover-task-trans.yaml +31 -72
- package/rules/prompt-injection/ATR-2026-02004-regional-indicator-flag-emoji-alphabet-letter-sp.yaml +32 -80
- package/rules/prompt-injection/ATR-2026-02005-actor-never-breaks-character-roleplay-dan-style-.yaml +31 -74
- package/rules/prompt-injection/ATR-2026-02006-fuzzy-cross-lingual-i-have-been-pwned-near-miss-.yaml +32 -84
- package/rules/prompt-injection/ATR-2026-02007-bare-key-elicitation-token.yaml +30 -74
- package/rules/prompt-injection/ATR-2026-02008-translation-chain-output-laundering-state-secret.yaml +30 -75
- package/rules/prompt-injection/ATR-2026-02009-bare-key-elicitation-trailing-colon.yaml +29 -71
- package/rules/prompt-injection/ATR-2026-02010-emoji-only-payload.yaml +30 -73
- package/rules/prompt-injection/ATR-2026-02011-malformed-grammar-pwned-success-claim.yaml +30 -69
- package/rules/prompt-injection/ATR-2026-02012-movie-title-generator-instruction-wrapper-for-pw.yaml +30 -79
- package/rules/prompt-injection/ATR-2026-02013-delimiter-fence-ignore-instructions-override.yaml +31 -74
- package/rules/prompt-injection/ATR-2026-02014-spliced-target-string-letters-of-a-filtered-cana.yaml +30 -74
- package/rules/prompt-injection/ATR-2026-02015-dense-emoji-only-payload-flood.yaml +30 -72
- package/rules/prompt-injection/ATR-2026-02016-reversed-payload-string.yaml +31 -76
- package/rules/prompt-injection/ATR-2026-02018-regional-indicator-flag-emoji-letter-spelling-sp.yaml +30 -71
- package/rules/prompt-injection/ATR-2026-02019-python-interpreter-role-assignment-exec-framing.yaml +31 -77
- package/rules/prompt-injection/ATR-2026-02020-obfuscated-token-reconstruction-via-character-su.yaml +30 -72
- package/rules/prompt-injection/ATR-2026-02120-agentdojo-important-message-identity-spoof-pretext.yaml +31 -81
- package/rules/prompt-injection/ATR-2026-02210-negation-topic-evil-persona-two-script-jailbreak.yaml +33 -87
- package/rules/prompt-injection/ATR-2026-02230-conditional-keyword-trigger-override.yaml +35 -88
- package/rules/prompt-injection/ATR-2026-02232-brand-persona-opinion-hijack.yaml +27 -75
- package/rules/prompt-injection/ATR-2026-02374-rot13-base64-obfuscated-shell-jailbreak.yaml +38 -90
- package/rules/prompt-injection/ATR-2026-02377-novel-persona-jailbreak-cosignal.yaml +32 -64
- package/rules/prompt-injection/ATR-2026-02500-prompt-layer-self-replication.yaml +21 -125
- package/rules/prompt-injection/ATR-2026-02502-covert-remote-script-injection-into-generated-artifacts.yaml +46 -149
- package/rules/prompt-injection/ATR-2026-02815-injected-halt-order-canned-reply-dos.yaml +80 -0
- package/rules/prompt-injection/ATR-2026-02820-tool-result-orders-agent-to-hide-its-own-action.yaml +106 -0
- package/rules/prompt-injection/ATR-2026-02846-semantic-ignore-previous-and-following-instructio.yaml +115 -0
- package/rules/prompt-injection/ATR-2026-02851-fake-user-turn-send-email-instruction.yaml +76 -0
- package/rules/prompt-injection/ATR-2026-02858-context-suppression-directive.yaml +73 -0
- package/rules/prompt-injection/ATR-2026-02859-tool-output-agent-role-reassignment.yaml +71 -0
- package/rules/prompt-injection/ATR-2026-02860-forged-instruction-boundary-marker.yaml +70 -0
- package/rules/prompt-injection/ATR-2026-02862-fake-chat-template-turn-injection.yaml +79 -0
- package/rules/skill-compromise/ATR-2026-00060-skill-impersonation.yaml +31 -87
- package/rules/skill-compromise/ATR-2026-00061-description-behavior-mismatch.yaml +42 -165
- package/rules/skill-compromise/ATR-2026-00062-hidden-capability.yaml +40 -80
- package/rules/skill-compromise/ATR-2026-00063-skill-chain-attack.yaml +46 -92
- package/rules/skill-compromise/ATR-2026-00064-over-permissioned-skill.yaml +40 -109
- package/rules/skill-compromise/ATR-2026-00065-skill-update-attack.yaml +37 -75
- package/rules/skill-compromise/ATR-2026-00066-parameter-injection.yaml +42 -88
- package/rules/skill-compromise/ATR-2026-00120-skill-instruction-injection.yaml +33 -182
- package/rules/skill-compromise/ATR-2026-00121-skill-dangerous-script.yaml +33 -164
- package/rules/skill-compromise/ATR-2026-00122-skill-weaponized-instruction.yaml +29 -132
- package/rules/skill-compromise/ATR-2026-00123-skill-overreach-permissions.yaml +33 -110
- package/rules/skill-compromise/ATR-2026-00124-skill-name-squatting.yaml +40 -133
- package/rules/skill-compromise/ATR-2026-00125-context-poisoning-compaction.yaml +26 -107
- package/rules/skill-compromise/ATR-2026-00126-skill-rug-pull-setup.yaml +23 -102
- package/rules/skill-compromise/ATR-2026-00127-subcommand-overflow.yaml +33 -114
- package/rules/skill-compromise/ATR-2026-00128-html-comment-hidden-payload.yaml +23 -148
- package/rules/skill-compromise/ATR-2026-00129-unicode-smuggling.yaml +35 -62
- package/rules/skill-compromise/ATR-2026-00134-fork-claim-impersonation.yaml +24 -105
- package/rules/skill-compromise/ATR-2026-00135-exfil-url-in-instructions.yaml +27 -138
- package/rules/skill-compromise/ATR-2026-00147-fork-impersonation.yaml +35 -45
- package/rules/skill-compromise/ATR-2026-00149-skill-exfil-compound.yaml +34 -151
- package/rules/skill-compromise/ATR-2026-00151-fork-impersonation-install.yaml +39 -69
- package/rules/skill-compromise/ATR-2026-00157-timebomb-credential-exfil.yaml +41 -96
- package/rules/skill-compromise/ATR-2026-00200-agent-memory-config-tampering.yaml +41 -84
- package/rules/skill-compromise/ATR-2026-00214-credential-theft.yaml +36 -50
- package/rules/skill-compromise/ATR-2026-00217-credential-harvesting.yaml +50 -98
- package/rules/skill-compromise/ATR-2026-00220-malware-dropper.yaml +45 -85
- package/rules/skill-compromise/ATR-2026-00222-credential-harvesting.yaml +46 -85
- package/rules/skill-compromise/ATR-2026-00223-reverse-shell-dropper.yaml +47 -84
- package/rules/skill-compromise/ATR-2026-00224-credential-exfiltration.yaml +46 -92
- package/rules/skill-compromise/ATR-2026-00225-c2-communication.yaml +46 -86
- package/rules/skill-compromise/ATR-2026-00260-package-hallucination.yaml +51 -93
- package/rules/skill-compromise/ATR-2026-00262-av-evasion-code-gen.yaml +49 -90
- package/rules/skill-compromise/ATR-2026-00263-credential-file-read-gen.yaml +53 -94
- package/rules/skill-compromise/ATR-2026-00266-malware-dropper-gen.yaml +51 -92
- package/rules/skill-compromise/ATR-2026-00283-malwaregen-generic-virus-payload-request.yaml +51 -96
- package/rules/skill-compromise/ATR-2026-00398-huggingface-unsafe-model-artifact-load.yaml +57 -110
- package/rules/skill-compromise/ATR-2026-00425-nl-persistent-covert-hook.yaml +24 -65
- package/rules/skill-compromise/ATR-2026-00427-nl-fake-error-instruction-bypass.yaml +24 -65
- package/rules/skill-compromise/ATR-2026-00429-nl-skill-self-modification.yaml +24 -65
- package/rules/skill-compromise/ATR-2026-00523-claude-code-hooks-session-start-pre-trust-rce.yaml +62 -162
- package/rules/skill-compromise/ATR-2026-00525-mini-shai-hulud-gh-token-monitor-persistence.yaml +43 -175
- package/rules/skill-compromise/ATR-2026-00527-skill-silent-git-remote-mirror-exfiltration.yaml +49 -159
- package/rules/skill-compromise/ATR-2026-01755-backdoor-pot-linguistic-trigger-phrase.yaml +40 -88
- package/rules/skill-compromise/ATR-2026-01756-backdoor-pot-symbol-emoticon-trigger.yaml +27 -73
- package/rules/skill-compromise/ATR-2026-02261-code-credential-exfil-chain.yaml +35 -161
- package/rules/skill-compromise/ATR-2026-02405-malicious-skill-package-structure.yaml +51 -201
- package/rules/skill-compromise/ATR-2026-02410-malicious-artifact-on-vendor-domain.yaml +54 -204
- package/rules/skill-compromise/ATR-2026-02600-in-source-reverse-shell-assembly.yaml +106 -0
- package/rules/skill-compromise/ATR-2026-02610-evaluated-config-credential-command.yaml +109 -0
- package/rules/skill-compromise/ATR-2026-02818-skill-manifest-declares-attack-purpose.yaml +80 -0
- package/rules/skill-compromise/ATR-2026-02845-agent-cryptomining-payload.yaml +102 -0
- package/rules/tool-poisoning/ATR-2026-00010-mcp-malicious-response.yaml +80 -209
- package/rules/tool-poisoning/ATR-2026-00011-tool-output-injection.yaml +35 -144
- package/rules/tool-poisoning/ATR-2026-00012-unauthorized-tool-call.yaml +46 -144
- package/rules/tool-poisoning/ATR-2026-00013-tool-ssrf.yaml +45 -148
- package/rules/tool-poisoning/ATR-2026-00095-supply-chain-poisoning.yaml +29 -104
- package/rules/tool-poisoning/ATR-2026-00096-registry-poisoning.yaml +33 -94
- package/rules/tool-poisoning/ATR-2026-00100-consent-bypass-instruction.yaml +22 -100
- package/rules/tool-poisoning/ATR-2026-00101-trust-escalation-override.yaml +34 -54
- package/rules/tool-poisoning/ATR-2026-00103-hidden-safety-bypass-instruction.yaml +19 -89
- package/rules/tool-poisoning/ATR-2026-00105-silent-action-concealment.yaml +22 -101
- package/rules/tool-poisoning/ATR-2026-00106-schema-description-contradiction.yaml +31 -51
- package/rules/tool-poisoning/ATR-2026-00161-important-tag-cross-tool-shadowing.yaml +54 -160
- package/rules/tool-poisoning/ATR-2026-00209-mcpwn-runaway-invocation.yaml +50 -114
- package/rules/tool-poisoning/ATR-2026-00210-flowise-system-message-override.yaml +48 -111
- package/rules/tool-poisoning/ATR-2026-00259-ansi-escape-injection.yaml +48 -104
- package/rules/tool-poisoning/ATR-2026-00270-xss-in-tool-response.yaml +47 -97
- package/rules/tool-poisoning/ATR-2026-00277-echo-template-command-injection.yaml +46 -95
- package/rules/tool-poisoning/ATR-2026-00393-ansi-code-elicitation-request.yaml +51 -104
- package/rules/tool-poisoning/ATR-2026-00415-flowise-custom-mcp-stdio-rce.yaml +47 -119
- package/rules/tool-poisoning/ATR-2026-00419-cursor-mcp-zero-click-config.yaml +57 -148
- package/rules/tool-poisoning/ATR-2026-00434-mcp-remote-authorization-endpoint-command-injection.yaml +47 -122
- package/rules/tool-poisoning/ATR-2026-00435-azure-mcp-server-missing-authentication.yaml +46 -116
- package/rules/tool-poisoning/ATR-2026-00448-spring-ai-milvus-filter-injection.yaml +51 -134
- package/rules/tool-poisoning/ATR-2026-00494-garak-exploitation-mixedunassigned.yaml +47 -120
- package/rules/tool-poisoning/ATR-2026-00513-package-hallucination-exploitation.yaml +45 -117
- package/rules/tool-poisoning/ATR-2026-00521-shell-command-injection-agent-tool-context.yaml +40 -130
- package/rules/tool-poisoning/ATR-2026-00522-sql-injection-natural-language-agent-interface.yaml +64 -157
- package/rules/tool-poisoning/ATR-2026-00526-claude-code-shell-metachar-in-double-quoted-path.yaml +41 -128
- package/rules/tool-poisoning/ATR-2026-00529-litellm-proxy-sqli-cisa-kev.yaml +41 -117
- package/rules/tool-poisoning/ATR-2026-00530-ms-agent-shell-tool-unsanitized-argv-rce.yaml +40 -143
- package/rules/tool-poisoning/ATR-2026-00531-praisonai-unauthenticated-agent-api.yaml +44 -117
- package/rules/tool-poisoning/ATR-2026-00532-apache-doris-mcp-sql-injection.yaml +40 -100
- package/rules/tool-poisoning/ATR-2026-00533-apache-pinot-mcp-unauthenticated-takeover.yaml +39 -97
- package/rules/tool-poisoning/ATR-2026-00534-alibaba-rds-mcp-unauthenticated-metadata-exfil.yaml +39 -100
- package/rules/tool-poisoning/ATR-2026-00536-nginx-ui-mcp-unauthenticated-command-execution.yaml +46 -140
- package/rules/tool-poisoning/ATR-2026-00537-fastmcp-server-name-cmd-injection-windows.yaml +58 -172
- package/rules/tool-poisoning/ATR-2026-00538-langchain-chatchat-mcp-stdio-unauthenticated-rce.yaml +63 -186
- package/rules/tool-poisoning/ATR-2026-00540-praisonai-parse-mcp-command-cli-injection.yaml +50 -142
- package/rules/tool-poisoning/ATR-2026-00541-agent-zero-mcp-config-command-injection.yaml +51 -134
- package/rules/tool-poisoning/ATR-2026-00542-upsonic-mcp-command-allowlist-bypass.yaml +48 -121
- package/rules/tool-poisoning/ATR-2026-00543-litellm-mcp-server-argv-injection.yaml +52 -121
- package/rules/tool-poisoning/ATR-2026-00544-praisonai-pth-file-path-traversal-rce.yaml +49 -125
- package/rules/tool-poisoning/ATR-2026-00545-praisonai-tool-override-unauth-rce.yaml +51 -122
- package/rules/tool-poisoning/ATR-2026-00561-fastmcp-vulnerable-to-windows-command-in.yaml +36 -73
- package/rules/tool-poisoning/ATR-2026-00567-mcp-stdio-config-command-injection.yaml +29 -53
- package/rules/tool-poisoning/ATR-2026-00568-agent-ssrf-cloud-metadata-file-inclusion.yaml +27 -54
- package/rules/tool-poisoning/ATR-2026-00572-symjack-symlink-config-redirection.yaml +41 -103
- package/rules/tool-poisoning/ATR-2026-00575-miasma-npm-worm-agent-config-backdoor.yaml +41 -110
- package/rules/tool-poisoning/ATR-2026-00576-hades-agent-credential-theft.yaml +40 -125
- package/rules/tool-poisoning/ATR-2026-00577-create-mcp-server-stdio-exec-command-injection.yaml +53 -169
- package/rules/tool-poisoning/ATR-2026-00581-mcp-tool-rug-pull-post-approval-redefinition.yaml +38 -137
- package/rules/tool-poisoning/ATR-2026-00714-tool-camouflage-forced-tool-call.yaml +33 -78
- package/rules/tool-poisoning/ATR-2026-00715-tool-knowledge-hijack-identity-injection.yaml +39 -87
- package/rules/tool-poisoning/ATR-2026-00716-ipi-data-destruction-carrier.yaml +31 -76
- package/rules/tool-poisoning/ATR-2026-00720-tool-misuse-privilege-escalation-social.yaml +29 -71
- package/rules/tool-poisoning/ATR-2026-01300-mcp-notes-param-chat-history-exfil.yaml +37 -102
- package/rules/tool-poisoning/ATR-2026-01301-tool-description-exclusive-tool-override.yaml +36 -92
- package/rules/tool-poisoning/ATR-2026-01302-fake-tool-result-instruction-injection.yaml +33 -88
- package/rules/tool-poisoning/ATR-2026-01303-tool-schema-enumeration-social-engineering.yaml +55 -107
- package/rules/tool-poisoning/ATR-2026-01306-mcp-oauth-command-injection.yaml +35 -87
- package/rules/tool-poisoning/ATR-2026-01307-mcp-dns-rebinding-attack.yaml +36 -91
- package/rules/tool-poisoning/ATR-2026-01310-mcp-tool-description-compliance-history-exfil.yaml +40 -110
- package/rules/tool-poisoning/ATR-2026-01775-semantic-mcp-tool-manifest-poisoning.yaml +51 -139
- package/rules/tool-poisoning/ATR-2026-01927-mcp-server-kubernetes-kubectl-command-injection.yaml +45 -109
- package/rules/tool-poisoning/ATR-2026-01928-framelink-figma-mcp-curl-fallback-command-injection.yaml +58 -164
- package/rules/tool-poisoning/ATR-2026-01930-mcp-sampling-prompt-injection.yaml +48 -129
- package/rules/tool-poisoning/ATR-2026-01931-gemini-mcp-tool-command-injection-file-exfil.yaml +42 -113
- package/rules/tool-poisoning/ATR-2026-01932-shadow-undeclared-mcp-server-registration.yaml +43 -106
- package/rules/tool-poisoning/ATR-2026-01935-litellm-custom-code-sandbox-escape-cve-2026-40217.yaml +44 -101
- package/rules/tool-poisoning/ATR-2026-01952-praisonai-codemode-sandbox-escape-rce.yaml +34 -70
- package/rules/tool-poisoning/ATR-2026-01953-praisonai-codemode-function-ctor-sandbox-escape.yaml +61 -79
- package/rules/tool-poisoning/ATR-2026-01959-openhuman-shell-allowlist-env-prefix-bypass.yaml +36 -123
- package/rules/tool-poisoning/ATR-2026-01963-praisonai-action-orchestrator-step-target-path-traversal-rce.yaml +61 -66
- package/rules/tool-poisoning/ATR-2026-01965-flowise-custommcp-os-command-rce.yaml +39 -80
- package/rules/tool-poisoning/ATR-2026-01967-deepchat-mermaid-xss-rce-ipc-mcp-register.yaml +58 -66
- package/rules/tool-poisoning/ATR-2026-01968-deepchat-markdown-deeplink-openexternal-rce-bypass.yaml +44 -92
- package/rules/tool-poisoning/ATR-2026-01970-praisonai-filetools-normpath-path-traversal.yaml +64 -84
- package/rules/tool-poisoning/ATR-2026-01973-anythingllm-logo-endpoint-path-traversal.yaml +57 -64
- package/rules/tool-poisoning/ATR-2026-01978-anythingllm-collector-process-filename-path-traversal-delete.yaml +58 -64
- package/rules/tool-poisoning/ATR-2026-01979-pandasai-prompt-injection-dunder-sandbox-escape-rce.yaml +60 -72
- package/rules/tool-poisoning/ATR-2026-01980-agentic-flow-mcp-tool-param-command-injection.yaml +49 -99
- package/rules/tool-poisoning/ATR-2026-01982-dbt-mcp-node-selection-argument-injection.yaml +49 -102
- package/rules/tool-poisoning/ATR-2026-01983-mcp-for-stata-log-file-name-command-injection.yaml +43 -110
- package/rules/tool-poisoning/ATR-2026-01985-mcp-connect-bridge-unauth-process-spawn-rce.yaml +41 -115
- package/rules/tool-poisoning/ATR-2026-01987-langroid-sqlchatagent-prompt-to-sql-rce.yaml +53 -110
- package/rules/tool-poisoning/ATR-2026-02021-mcp-inspector-unauthenticated-proxy-rce.yaml +48 -123
- package/rules/tool-poisoning/ATR-2026-02022-curxecute-cursor-mcp-json-injected-server-rce.yaml +51 -131
- package/rules/tool-poisoning/ATR-2026-02023-escaperoute-filesystem-mcp-prefix-bypass.yaml +48 -129
- package/rules/tool-poisoning/ATR-2026-02024-escaperoute-filesystem-mcp-symlink-launchagent.yaml +49 -128
- package/rules/tool-poisoning/ATR-2026-02025-mcp-full-schema-poisoning-nondescription-field.yaml +50 -142
- package/rules/tool-poisoning/ATR-2026-02027-diagnostic-content-remediation-command-injection.yaml +58 -72
- package/rules/tool-poisoning/ATR-2026-02041-shell-injection-echo-marker-poc.yaml +32 -93
- package/rules/tool-poisoning/ATR-2026-02102-html-injection-tool-arg-approval-ui-xss.yaml +33 -107
- package/rules/tool-poisoning/ATR-2026-02141-mcp-server-config-command-execution.yaml +42 -107
- package/rules/tool-poisoning/ATR-2026-02145-python-sandbox-escape-generator-frame-introspection.yaml +36 -105
- package/rules/tool-poisoning/ATR-2026-02193-ssrf-ipv6-noncanonical-loopback-bypass.yaml +35 -86
- package/rules/tool-poisoning/ATR-2026-02194-go-init-func-process-exec-codegen-rce.yaml +35 -83
- package/rules/tool-poisoning/ATR-2026-02233-unscoped-destructive-db-request-nl.yaml +34 -95
- package/rules/tool-poisoning/ATR-2026-02260-agentjacking-remediation-framed-execution.yaml +42 -107
- package/rules/tool-poisoning/ATR-2026-02263-workflow-sql-template-expression-injection.yaml +35 -119
- package/rules/tool-poisoning/ATR-2026-02350-mcp-json-rpc-case-duplicate-key-tool-smuggling.yaml +34 -100
- package/rules/tool-poisoning/ATR-2026-02352-imap-search-command-injection-email-tool-args.yaml +32 -93
- package/rules/tool-poisoning/ATR-2026-02372-unsigned-task-feed-npm-npx-lifecycle-rce.yaml +39 -101
- package/rules/tool-poisoning/ATR-2026-02376-tool-description-conversational-trigger-history-exfil.yaml +33 -84
- package/rules/tool-poisoning/ATR-2026-02403-mcp-external-content-missing-spotlighting.yaml +52 -282
- package/rules/tool-poisoning/ATR-2026-02514-mcp-server-metadata-url-html-breakout.yaml +105 -0
- package/rules/tool-poisoning/ATR-2026-02542-pipeline-query-stage-injection.yaml +95 -0
- package/rules/tool-poisoning/ATR-2026-02557-shell-separator-in-path-typed-tool-argument.yaml +112 -0
- package/rules/tool-poisoning/ATR-2026-02666-url-userinfo-decoy-host-allowlist-bypass.yaml +101 -0
- package/rules/tool-poisoning/ATR-2026-02668-vcs-ref-name-command-substitution.yaml +98 -0
- package/rules/tool-poisoning/ATR-2026-02669-query-pipeline-stage-in-identifier-parameter.yaml +88 -0
- package/rules/tool-poisoning/ATR-2026-02682-xml-entity-expansion-bomb.yaml +98 -0
- package/rules/tool-poisoning/ATR-2026-02707-crlf-header-injection-mail-tool-argument.yaml +88 -0
- package/rules/tool-poisoning/ATR-2026-02817-untrusted-content-dictates-tool-arguments.yaml +83 -0
- package/rules/tool-poisoning/ATR-2026-02864-non-canonical-ipv4-host-in-url-tool-argument.yaml +102 -0
- package/rules/tool-poisoning/ATR-2026-02865-read-only-utility-write-flag-in-command-argument.yaml +157 -0
- package/rules/tool-poisoning/ATR-2026-02868-ssrf-ipv6-transition-address-embedded-private-ipv4.yaml +107 -0
- package/spec/README.md +8 -5
- package/spec/atr-correlation-v1.0.md +16 -4
- package/spec/atr-event-v1.0.md +13 -8
- package/spec/atr-method-v1.1.md +2 -2
- package/spec/atr-profile-v1.0.md +11 -1
- package/spec/category-registry/gemara/README.md +102 -0
- package/spec/category-registry/gemara/ai-agent-capability-catalog.yaml +157 -0
- package/spec/category-registry/gemara/atr-attack-vector-catalog.yaml +130 -0
- package/spec/category-registry/gemara/atr-detection-control-catalog.yaml +327 -0
- package/spec/category-registry/gemara/atr-threat-catalog.yaml +246 -0
- package/spec/category-registry/gemara/src/editorial.yaml +743 -0
- package/spec/mappings/README.md +1 -1
- package/spec/mappings/atr-to-nist-csf-2.0.md +5 -4
- package/spec/schema/event.schema.json +1 -1
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
title: Diagram Theme Config Used to Inject Page-Wide CSS (scope escape, overlay, selector exfil)
|
|
2
|
+
id: ATR-2026-02602
|
|
3
|
+
rule_version: 2
|
|
4
|
+
status: experimental
|
|
5
|
+
description: |
|
|
6
|
+
Detects CVE-2026-41149: a mermaid initialisation directive embedded in agent-rendered content (`%%{init: {...}}%%`, or a mermaid.initialize call) whose theme value carries CSS that ESCAPES the diagram's scope. Mermaid runs themeCSS through stylis, which prefixes every selector with `#mermaid-<id>`; a selector written `:not(&)` breaks out of that prefix and applies to the whole document. From there the payload is a full-window phishing overlay or character-at-a-time exfiltration through an attribute-prefix selector whose background url() fires one request per guessed character.
|
|
7
|
+
THE PRECISION LINE, AND WHERE IT WAS DRAWN. `themeCSS` legitimately contains CSS -- `themeCSS: '.node rect { fill: #222 }'` is the documented use, braces and all -- so "contains CSS syntax" is not a signal, and an earlier draft of this rule that fired on a brace pair inside the value was rejected on exactly that benign twin before it was written down.
|
|
8
|
+
TWO FURTHER MARKERS WERE REMOVED IN ADVERSARIAL REVIEW (rule_version 2), each on measured benign fire, and both removals are corrections of the threat model rather than concessions:
|
|
9
|
+
1. `position:fixed` inside a diagram theme was claimed as a viewport-pinned
|
|
10
|
+
overlay. It is not one. Without the stylis escape, stylis prefixes the
|
|
11
|
+
selector with `#mermaid-<id>`, so the declaration is confined to the
|
|
12
|
+
diagram and covers nothing. What the marker actually selected was the
|
|
13
|
+
ordinary fullscreen/lightbox/zoom/print-watermark/pinned-legend feature that
|
|
14
|
+
docs sites build on purpose. Eleven independent benign inputs fired on it:
|
|
15
|
+
a VitePress fullscreen handler, an mkdocs-material manifest, a CHANGELOG
|
|
16
|
+
line, a vitest fixture, a minified bundle line, a Traditional-Chinese blog
|
|
17
|
+
post, a Stack Overflow answer explaining that this does NOT work, and
|
|
18
|
+
several cross-key constructions where the `position:fixed` was in a
|
|
19
|
+
neighbouring key entirely, because `[^\n]{0,200}` runs straight through the
|
|
20
|
+
closing quote of the themeCSS value. The overlay payload is still detected
|
|
21
|
+
when it is an attack, because an attack must carry the scope escape and the
|
|
22
|
+
escape is claimed. Only the escape is load-bearing.
|
|
23
|
+
|
|
24
|
+
2. The attribute-prefix selector was matched on ANY attribute name. Only
|
|
25
|
+
`[value^=` (and `$=` / `*=` on the same attribute) is claimed now, because
|
|
26
|
+
`value` is the one attribute that carries a secret the page did not choose
|
|
27
|
+
to publish, and matching on a value PREFIX is something no designer does --
|
|
28
|
+
the selector sees the server-rendered attribute, not what the user typed, so
|
|
29
|
+
it is useless for styling and useful only for guessing. Every other
|
|
30
|
+
attribute name produced benign fire and was removed: `[class^="icon-"]`
|
|
31
|
+
(icon sprites), `[id^="mermaid-"]` (scoping to mermaid's own generated
|
|
32
|
+
container), `[data-testid^="node-"]` (generated themes), `[name^="card"]`
|
|
33
|
+
and `[placeholder^=` (form-field icons), `[title^=` (step badges) -- all of
|
|
34
|
+
them next to a CDN `url()`, all of them leaking nothing. `[href^=` and
|
|
35
|
+
`[src^=` are excluded for the same reason: `a[href^="https"]` beside a
|
|
36
|
+
remote icon url() is a textbook stylesheet. Nine benign inputs fired on the
|
|
37
|
+
untyped version, including the author's own DELIBERATELY-UNCLAIMED
|
|
38
|
+
Google-Fonts `@import` the moment ANY ordinary prefix selector appeared
|
|
39
|
+
within 120 characters of it.
|
|
40
|
+
|
|
41
|
+
3. Condition 0's window is `[^\n%]`, not `[^\n]`, so it cannot run out of the
|
|
42
|
+
`%%{...}%%` directive and pick a marker out of the prose that follows it.
|
|
43
|
+
A mitigation note that shows a plain `%%{init}%%` line and then discusses
|
|
44
|
+
the escape in the next sentence was firing before this. MEASURED COST, and
|
|
45
|
+
it is the only one: a payload that puts a literal `%` (e.g. `width:100%`)
|
|
46
|
+
inside a fontFamily/altFontFamily value BEFORE the marker is now missed by
|
|
47
|
+
condition 0. The same payload inside `themeCSS` is still caught, by
|
|
48
|
+
condition 1, which carries no `%` bound -- verified on both, one fires and
|
|
49
|
+
one does not.
|
|
50
|
+
|
|
51
|
+
The remaining scope escape additionally requires a declaration block after it (`:not(&) ... {`), because an escape with no rule body changes nothing; that drops prose which merely names the marker after a `themeCSS:` colon.
|
|
52
|
+
A webfont `@import url('https://fonts.googleapis.com/...')` inside themeCSS is a plausible legitimate use of the same mechanism and is DELIBERATELY NOT CLAIMED -- it is a measured true negative, not an oversight.
|
|
53
|
+
Coverage check, re-run in review and CORRECTED. The only rule that mentions mermaid, ATR-2026-01967, is scoped to DeepChat IPC/MCP registration -- that part of the author's claim holds. What the author missed is a sibling from this same sweep: ATR-2026-02704 detects the CSS attribute-selector exfiltration primitive generically, and it fires on three of the four exfil payloads here. It reached the same conclusion independently -- it only claims SECRET-bearing attributes (`value`, `token`, `csrf`, `secret`, `password`, `api_key`, `otp`) -- which is corroboration that the untyped attribute match this rule shipped with was the wrong line. The exfil branch here is therefore largely redundant with 02704 and is kept only for the themeCSS-scoped ordering 02704 does not cover (url() before the selector). The `:not(&)` stylis scope escape is this rule's own, and nothing else detects it.
|
|
54
|
+
author: ATR Community
|
|
55
|
+
date: 2026/08/23
|
|
56
|
+
schema_version: '0.1'
|
|
57
|
+
detection_tier: pattern
|
|
58
|
+
maturity: test
|
|
59
|
+
severity: high
|
|
60
|
+
references:
|
|
61
|
+
owasp_llm:
|
|
62
|
+
- LLM02:2025
|
|
63
|
+
owasp_agentic:
|
|
64
|
+
- ASI04:2026
|
|
65
|
+
mitre_atlas:
|
|
66
|
+
- AML.T0051 - LLM Prompt Injection
|
|
67
|
+
- AML.T0051.001 - Indirect
|
|
68
|
+
cve:
|
|
69
|
+
- CVE-2026-41149
|
|
70
|
+
compliance:
|
|
71
|
+
owasp_agentic:
|
|
72
|
+
- id: ASI04:2026
|
|
73
|
+
context: Content the agent renders escapes the boundary it was given and takes over the surrounding interface, which is an agent output-handling failure rather than a model failure.
|
|
74
|
+
strength: primary
|
|
75
|
+
owasp_llm:
|
|
76
|
+
- id: LLM02:2025
|
|
77
|
+
context: 'Insecure output handling: markup produced or relayed by the model reaches a renderer that grants it document-wide effect.'
|
|
78
|
+
strength: primary
|
|
79
|
+
eu_ai_act:
|
|
80
|
+
- article: '15'
|
|
81
|
+
context: Article 15 requires resilience against attempts to manipulate system output; a diagram config that repaints the whole window is exactly such a manipulation, and detection is the control.
|
|
82
|
+
strength: primary
|
|
83
|
+
- article: '14'
|
|
84
|
+
context: A full-window overlay defeats human oversight by design -- the operator sees the attacker's surface instead of the system's -- so detecting it is an Article 14 control.
|
|
85
|
+
strength: secondary
|
|
86
|
+
- article: '9'
|
|
87
|
+
context: Rendered-output injection is a documented risk class for agent interfaces; these events are the Article 9 monitoring evidence.
|
|
88
|
+
strength: secondary
|
|
89
|
+
nist_ai_rmf:
|
|
90
|
+
- function: Manage
|
|
91
|
+
subcategory: MG.2.3
|
|
92
|
+
context: Runtime treatment for untrusted content reaching a rendering surface with more authority than intended.
|
|
93
|
+
strength: primary
|
|
94
|
+
- function: Map
|
|
95
|
+
subcategory: MP.5.1
|
|
96
|
+
context: Catalogues CSS-only injection as a distinct risk from script injection, which existing rules already cover.
|
|
97
|
+
strength: secondary
|
|
98
|
+
- function: Measure
|
|
99
|
+
subcategory: MS.2.7
|
|
100
|
+
context: Detection events document the security of the output-rendering path as MEASURE 2.7 requires.
|
|
101
|
+
strength: secondary
|
|
102
|
+
iso_42001:
|
|
103
|
+
- clause: '8.1'
|
|
104
|
+
context: Clause 8.1 operational control over the rendering pipeline that turns model output into a user-facing surface.
|
|
105
|
+
strength: primary
|
|
106
|
+
- clause: '6.2'
|
|
107
|
+
context: Preventing interface takeover and selector-based data exfiltration is an AIMS information security objective under clause 6.2.
|
|
108
|
+
strength: secondary
|
|
109
|
+
- clause: '8.4'
|
|
110
|
+
context: Impact assessment under 8.4 must account for what a rendered artifact can do to the viewer; these events are the evidence for that path.
|
|
111
|
+
strength: secondary
|
|
112
|
+
tags:
|
|
113
|
+
category: context-exfiltration
|
|
114
|
+
subcategory: rendered-output-injection
|
|
115
|
+
scan_target: both
|
|
116
|
+
confidence: medium
|
|
117
|
+
agent_source:
|
|
118
|
+
type: llm_io
|
|
119
|
+
framework:
|
|
120
|
+
- any
|
|
121
|
+
provider:
|
|
122
|
+
- any
|
|
123
|
+
detection:
|
|
124
|
+
conditions:
|
|
125
|
+
- field: content
|
|
126
|
+
operator: regex
|
|
127
|
+
value: '%%\s*\{[^\n]{0,240}?\b(?:themeCSS|altFontFamily|fontFamily)\b["'']?\s*:\s*["''][^\n%]{0,200}?(?::not\s*\(\s*&[^\n{]{0,20}?\)[^\n]{0,40}?\{|\[\s*value\s*[\^$*]=[^\n]{0,60}?\{[^\n]{0,90}?url\s*\(\s*["'']?(?:https?:)?//|url\s*\(\s*["'']?(?:https?:)?//[^\n]{0,120}?\[\s*value\s*[\^$*]=)'
|
|
128
|
+
description: Mermaid init directive whose theme value breaks the stylis scope with :not(&) and opens a rule body, or pairs a SECRET-BEARING attribute-prefix selector with a remote url()
|
|
129
|
+
- field: content
|
|
130
|
+
operator: regex
|
|
131
|
+
value: \bthemeCSS\b["']?\s*:\s*["'][^\n]{0,200}?(?::not\s*\(\s*&[^\n{]{0,20}?\)[^\n]{0,40}?\{|\[\s*value\s*[\^$*]=[^\n]{0,60}?\{[^\n]{0,90}?url\s*\(\s*["']?(?:https?:)?//|url\s*\(\s*["']?(?:https?:)?//[^\n]{0,120}?\[\s*value\s*[\^$*]=)
|
|
132
|
+
description: A themeCSS value carrying the same two escape markers, in the JS/JSON config form
|
|
133
|
+
condition: any
|
|
134
|
+
false_positives:
|
|
135
|
+
- 'THE ONE REAL RESIDUAL, measured, and it is a whole class rather than one shape: ANY prose that reproduces the payload -- the theme key, a colon, a quote, then the stylis escape opening a rule body -- is textually identical to the attack, so no pattern separates them. Three independent constructions fire and are accepted: a CVE advisory quoting the payload, a CHANGELOG line announcing the fix, and a GitHub bug report using the escape as its reproduction case. It does not occur in 12,830 benign corpus samples or in 556 repo doc/skill files. This rule''s own prose deliberately never reassembles that sequence, and that is verified: it does not fire on itself minus its test_cases'
|
|
136
|
+
- A theme that loads a remote webfont AND matches on a value PREFIX (`[value^=`) in the same 120 characters for unrelated reasons -- constructible, never observed, and there is no styling reason to write it
|
|
137
|
+
- 'NOT a false positive any more, and recorded so it is not re-added: a mermaid theme that uses position:fixed for a fullscreen, lightbox, zoom, print-watermark or pinned-legend feature. Confined by stylis, harmless, and the marker was removed'
|
|
138
|
+
- 'NOT a false positive any more, and recorded so it is not re-widened: [class^=], [id^=], [data-*^=], [name^=], [placeholder^=], [title^=] or [href^=] beside a remote url(). Those attributes carry no secret, so the selector-exfil primitive does not apply and the marker no longer matches them'
|
|
139
|
+
response:
|
|
140
|
+
actions:
|
|
141
|
+
- alert
|
|
142
|
+
- snapshot
|
|
143
|
+
auto_response_threshold: high
|
|
144
|
+
message_template: |
|
|
145
|
+
[ATR-2026-02602] A diagram theme configuration carries CSS that leaves the diagram's scope -- a stylis `:not(&)` escape opening a rule body, or a secret-bearing attribute-prefix selector paired with a remote url(). Rendered content can repaint the whole window or leak field values one character at a time. Do not render until the source of this block is established.
|
|
146
|
+
confidence: 70
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
title: LLM-Generated Graph Query Reaching a Remote Endpoint (APOC remote script, raw-IP load, remote export)
|
|
2
|
+
id: ATR-2026-02608
|
|
3
|
+
rule_version: 1
|
|
4
|
+
status: experimental
|
|
5
|
+
description: |
|
|
6
|
+
Detects a Cypher statement -- typically one an LLM wrote for a text-to-query agent -- that leaves the database: it fetches and runs a remote Cypher script (apoc.cypher.runFile at an http URL), reads from a bare IPv4 address rather than a named service, or exports graph contents to a remote URL. GHSA-2pq5-3q89-j7cc (Langroid Neo4jChatAgent) executes model-written Cypher with no validation, so a prompt injection anywhere upstream becomes a data-egress primitive. Verified on the engine: apoc.load.jsonParams and apoc.cypher.runFile at http endpoints score zero, while the file:// form only matches because two SSRF rules recognise the scheme.
|
|
7
|
+
WHAT IS DELIBERATELY NOT CLAIMED, AND WHY. apoc.load.json against an https hostname is the procedure's DOCUMENTED purpose -- the APOC manual's own first example calls a public API -- and enriching nodes by concatenating an id into a URL is ordinary practice. Both were written as benign twins and both are measured silent. That is why the load condition demands a raw IPv4 literal: a legitimate enrichment call names a service, a beacon names an address. The cost of that choice is that exfiltration to an attacker-owned DOMAIN through apoc.load is not detected here, and no attempt is made to guess at it.
|
|
8
|
+
THAT PREMISE HOLDS ONLY FOR PUBLIC ADDRESSES, which adversarial review established by counter-example. In loopback, RFC1918 and link-local space an IP literal is the NORM, not the anomaly: APOC's own integration tests call http://127.0.0.1:<port>, docker and Kubernetes fixtures address pod and bridge IPs, and ansible/terraform bootstrap jobs and non-English tutorials name 10.x/192.168.x hosts directly. Fourteen such twins fired the original condition. The load condition therefore excludes 0.x, 10.x, 127.x, 169.254.x, 172.16-31.x and 192.168.x, with one carve-in: 169.254.169.254, the cloud metadata address, still fires because reaching it is never ordinary enrichment. A beacon to a private address from a compromised in-network host is consequently NOT detected here.
|
|
9
|
+
THE EXPORT CONDITION MATCHES THE DESTINATION ARGUMENT, NOT ANY URL. It first accepted any quoted http(s) URL within 200 characters of the open paren, which made apoc.export.csv.query fire whenever the EXPORTED QUERY happened to quote a URL -- a STARTS WITH filter on a page url, a SKOS or schema.org namespace, a coalesce default, a feed identifier -- while the destination was a local file. Six such twins fired. The URL must now be a complete string argument immediately followed by the config map that every apoc.export signature requires, so a URL nested inside the query no longer counts. A second review round found that the config-map requirement alone was not enough: an exported query that itself CALLs apoc.load.json(url, {}) presents a URL followed by a config map, so the condition also requires the URL to be either the first argument or to follow a comma whose preceding character is not an open paren. apoc.export.*.data and .graph, whose destination is the third and second argument, are covered by that comma form and are carried as true positives so the carve-out cannot silently cost recall.
|
|
10
|
+
TWO LIMITS FOUND BY REVIEW AND LEFT IN PLACE ON PURPOSE. (1) The list form apoc.cypher.runFiles(['http://host/x.cypher']) is NOT matched, because the bracket sits between the paren and the quote; it was measured silent and is a real evasion. Widening the pattern to accept the bracket was tried and rejected: it turns APOC's own documentation sentence about runFiles and allowed_protocols into a false positive, which is a worse trade for a rule whose action is alert. (2) The 200-character window in the export condition cannot cross a newline, so a remote export written across several lines with a multi-line query is missed. Letting it cross newlines was tried and rejected too: a script that exports locally and then, on the next line, calls apoc.load.json against an API with a config map becomes a false positive.
|
|
11
|
+
author: ATR Community
|
|
12
|
+
date: 2026/08/23
|
|
13
|
+
schema_version: '0.1'
|
|
14
|
+
detection_tier: pattern
|
|
15
|
+
maturity: test
|
|
16
|
+
severity: high
|
|
17
|
+
references:
|
|
18
|
+
owasp_llm:
|
|
19
|
+
- LLM02:2025
|
|
20
|
+
owasp_agentic:
|
|
21
|
+
- ASI02:2026
|
|
22
|
+
mitre_atlas:
|
|
23
|
+
- AML.T0057 - LLM Data Leakage
|
|
24
|
+
- AML.T0051 - LLM Prompt Injection
|
|
25
|
+
cve:
|
|
26
|
+
- GHSA-2pq5-3q89-j7cc
|
|
27
|
+
compliance:
|
|
28
|
+
owasp_agentic:
|
|
29
|
+
- id: ASI02:2026
|
|
30
|
+
context: Model-authored query text reaches the network, so a text-to-query agent becomes an egress and remote-execution channel for whoever influenced the prompt.
|
|
31
|
+
strength: primary
|
|
32
|
+
owasp_llm:
|
|
33
|
+
- id: LLM02:2025
|
|
34
|
+
context: 'Insecure output handling: the model''s output is executed by a database engine whose procedure library can fetch and run remote code.'
|
|
35
|
+
strength: primary
|
|
36
|
+
eu_ai_act:
|
|
37
|
+
- article: '15'
|
|
38
|
+
context: 'Article 15 cybersecurity: query text crossing into remote code execution and data egress is the manipulation the article requires resilience against.'
|
|
39
|
+
strength: primary
|
|
40
|
+
- article: '10'
|
|
41
|
+
context: 'Article 10 data governance: the graph''s contents leaving the deployment boundary is a data-governance event that must be detectable.'
|
|
42
|
+
strength: secondary
|
|
43
|
+
- article: '9'
|
|
44
|
+
context: Text-to-query injection is a documented risk class for database agents; detections are the Article 9 monitoring evidence.
|
|
45
|
+
strength: secondary
|
|
46
|
+
nist_ai_rmf:
|
|
47
|
+
- function: Manage
|
|
48
|
+
subcategory: MG.2.3
|
|
49
|
+
context: Runtime treatment for model-authored queries that reach beyond the datastore.
|
|
50
|
+
strength: primary
|
|
51
|
+
- function: Map
|
|
52
|
+
subcategory: MP.5.1
|
|
53
|
+
context: Catalogues graph-query egress as distinct from SQL injection, which existing rules already cover.
|
|
54
|
+
strength: secondary
|
|
55
|
+
- function: Measure
|
|
56
|
+
subcategory: MS.2.7
|
|
57
|
+
context: Detection events document the security of the query-execution path as MEASURE 2.7 requires.
|
|
58
|
+
strength: secondary
|
|
59
|
+
iso_42001:
|
|
60
|
+
- clause: '8.1'
|
|
61
|
+
context: Clause 8.1 operational control over what the system may execute against its data stores.
|
|
62
|
+
strength: primary
|
|
63
|
+
- clause: '6.2'
|
|
64
|
+
context: Preventing unauthorised data egress from the graph is an AIMS information security objective under clause 6.2.
|
|
65
|
+
strength: secondary
|
|
66
|
+
- clause: '8.4'
|
|
67
|
+
context: Impact assessment under 8.4 must account for query-mediated egress; these events are the evidence for that path.
|
|
68
|
+
strength: secondary
|
|
69
|
+
tags:
|
|
70
|
+
category: context-exfiltration
|
|
71
|
+
subcategory: query-language-egress
|
|
72
|
+
scan_target: both
|
|
73
|
+
confidence: medium
|
|
74
|
+
agent_source:
|
|
75
|
+
type: mcp_exchange
|
|
76
|
+
framework:
|
|
77
|
+
- any
|
|
78
|
+
provider:
|
|
79
|
+
- any
|
|
80
|
+
detection:
|
|
81
|
+
conditions:
|
|
82
|
+
- field: content
|
|
83
|
+
operator: regex
|
|
84
|
+
value: \bapoc\.cypher\.(?:runFile|runFiles|runSchemaFiles?|runMany)\s*\(\s*["'](?:https?|ftp)://
|
|
85
|
+
description: APOC procedure fetching and executing a Cypher script from a remote URL
|
|
86
|
+
- field: content
|
|
87
|
+
operator: regex
|
|
88
|
+
value: \bapoc\.load\.(?:json|jsonParams|csv|csvParams|xml|html|arrow)\s*\(\s*["'](?:https?)://(?:(?:1[01]\d|12[0-6]|12[89]|1[3-5]\d|16[0-8]|17[01]|17[3-9]|18\d|19[01]|19[3-9]|2[0-4]\d|25[0-5]|1[1-9]|[2-9]\d|[1-9])\.(?:\d{1,3}\.){2}\d{1,3}|169\.254\.169\.254|172\.(?:1[0-5]|3[2-9]|[4-9]\d|1\d\d|2[0-4]\d|25[0-5]|\d)\.\d{1,3}\.\d{1,3}|192\.(?:1[0-5]\d|16[0-79]|1[7-9]\d|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.\d{1,3}\.\d{1,3})
|
|
89
|
+
description: APOC load procedure pointed at a bare PUBLIC IPv4 address rather than a named service (loopback, RFC1918 and link-local are excluded; 169.254.169.254 cloud metadata is not)
|
|
90
|
+
- field: content
|
|
91
|
+
operator: regex
|
|
92
|
+
value: \bapoc\.export\.(?:json|csv|cypher|graphml)\.(?:all|data|query|graph)\s*\(\s*(?:[^\n]{0,200}?[^\n(,\s]\s*,\s*)?["'](?:https?|ftp)://[^"'\s\n]{0,300}["']\s*,\s*[\{\$]
|
|
93
|
+
description: APOC export procedure whose DESTINATION argument is a remote URL -- the URL must be a whole string argument followed by the mandatory config map, so a URL merely quoted inside the exported query does not count
|
|
94
|
+
condition: any
|
|
95
|
+
false_positives:
|
|
96
|
+
- 'REMAINS AND IS NOT FIXABLE BY PATTERN: security writing that quotes one of these payloads verbatim -- an advisory, an OWASP writeup, a pentest finding -- fires, including inside a fenced code block. suppress_in_code_blocks is deliberately NOT set, because a text-to-query agent''s own model output routinely arrives wrapped in a ```cypher fence and suppressing it would remove the rule''s primary channel.'
|
|
97
|
+
- 'REMAINS BY DESIGN: apoc.cypher.runFile against an INTERNAL http host, e.g. a nightly schema bootstrap served from an artifact server. Fetching and executing a Cypher script over the network is the primitive this rule is about, so the host is not used to excuse it.'
|
|
98
|
+
- An operations job that exports a graph snapshot to a PUBLIC HTTP object store, where the destination is a whole string argument followed by the config map
|
|
99
|
+
- A data pipeline that loads seed data from a public host addressed by a bare IP rather than a name
|
|
100
|
+
- 'REMAINS: a tutorial or runbook that hosts a sample file on a public throwaway box and names it by IP, including the RFC 5737 documentation ranges. Those ranges cannot be excluded -- the GHSA payload this rule is built on uses 198.51.100.9, which is one of them.'
|
|
101
|
+
- 'REMAINS: apoc.export.*.query whose exported query RETURNs a bare URL literal immediately followed by a bare map literal, e.g. RETURN n.a, ''https://x'', {k:1}. That is not idiomatic Cypher; separating it from a real destination argument would need paren-depth tracking, which a regex cannot do.'
|
|
102
|
+
response:
|
|
103
|
+
actions:
|
|
104
|
+
- alert
|
|
105
|
+
- snapshot
|
|
106
|
+
auto_response_threshold: high
|
|
107
|
+
message_template: |
|
|
108
|
+
[ATR-2026-02608] A graph query fetches remote code, reads from a bare IP address, or exports graph contents to a remote URL. If this statement was written by a model, treat the destination as attacker-chosen until proven otherwise.
|
|
109
|
+
confidence: 70
|
package/rules/context-exfiltration/ATR-2026-02621-prompt-mention-autofetch-internal-target.yaml
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
title: Prompt-Embedded Auto-Fetch Mention Pointed at an Internal Address
|
|
2
|
+
id: ATR-2026-02621
|
|
3
|
+
rule_version: 2
|
|
4
|
+
status: experimental
|
|
5
|
+
description: |
|
|
6
|
+
Detects an @-mention token inside prompt text whose target is an internal address. CLIs that expand mentions (@url:, @fetch:, @web:) resolve them BEFORE the agent runs: the URL is fetched and the response body is prepended into model context, with no tool call, no egress policy and no consent gate. CVE-2026-47395 (PraisonAI CLI) is this exact mechanism -- @url:<http...> is urlopen'd and inlined, with no loopback, RFC1918 or metadata restriction.
|
|
7
|
+
MEASURED GAP. `@url:http://localhost.:8766/debug/vars summarize this` and `@url:http://2130706433:8765/admin` returned zero matches on all seven event types. The same line aimed at 169.254.169.254 fires ATR-2026-00500 and ATR-2026-00568. So the metadata IP is guarded and loopback / private space is not, and nothing in the corpus recognises the auto-expanding mention syntax itself as a fetch primitive.
|
|
8
|
+
WHY THE PLAIN LOOPBACK FORM IS NOT FLAGGED. ATR-2026-00013 documents in-rule that bare localhost / 127.0.0.1 is deliberately exempt, because coding agents legitimately read their own dev server. `@url:http://localhost:3000/api/health` is that same benign act and this rule leaves it alone. Condition 1 therefore fires only on encodings of the loopback address that a human never types by hand -- decimal, octal, hex, short-form, trailing-dot -- whose only purpose is to defeat a string comparison. Condition 2 keeps the plain hosts but requires a control-plane port or a secret-store path alongside them, so the dev-server exemption survives intact.
|
|
9
|
+
author: ATR Community
|
|
10
|
+
date: 2026/08/23
|
|
11
|
+
schema_version: '0.1'
|
|
12
|
+
detection_tier: pattern
|
|
13
|
+
maturity: test
|
|
14
|
+
severity: high
|
|
15
|
+
references:
|
|
16
|
+
cve:
|
|
17
|
+
- CVE-2026-47395
|
|
18
|
+
owasp_llm:
|
|
19
|
+
- LLM01:2025
|
|
20
|
+
owasp_agentic:
|
|
21
|
+
- ASI05:2026
|
|
22
|
+
mitre_atlas:
|
|
23
|
+
- AML.T0051 - LLM Prompt Injection
|
|
24
|
+
- AML.T0057 - LLM Data Leakage
|
|
25
|
+
compliance:
|
|
26
|
+
owasp_agentic:
|
|
27
|
+
- id: ASI05:2026
|
|
28
|
+
context: The mention expands into an outbound request the agent never decided to make, reaching resources outside the boundary the operator granted.
|
|
29
|
+
strength: primary
|
|
30
|
+
owasp_llm:
|
|
31
|
+
- id: LLM01:2025
|
|
32
|
+
context: Content fetched from the internal endpoint is prepended into model context as trusted text, which is indirect prompt injection with an SSRF carrier.
|
|
33
|
+
strength: primary
|
|
34
|
+
eu_ai_act:
|
|
35
|
+
- article: '15'
|
|
36
|
+
context: 'Article 15 accuracy and robustness: an unconsented fetch of internal state into model context alters system behaviour through a path the operator cannot see.'
|
|
37
|
+
strength: primary
|
|
38
|
+
- article: '14'
|
|
39
|
+
context: Expansion happens before the agent runs, so the human oversight Article 14 requires has no point at which to intervene; detection restores that visibility.
|
|
40
|
+
strength: secondary
|
|
41
|
+
- article: '12'
|
|
42
|
+
context: 'Article 12 record-keeping: these events log network reach that leaves no tool-call trace of its own.'
|
|
43
|
+
strength: secondary
|
|
44
|
+
nist_ai_rmf:
|
|
45
|
+
- function: Manage
|
|
46
|
+
subcategory: MG.2.3
|
|
47
|
+
context: Runtime treatment for prompt-borne SSRF that bypasses the tool layer entirely.
|
|
48
|
+
strength: primary
|
|
49
|
+
- function: Map
|
|
50
|
+
subcategory: MP.5.1
|
|
51
|
+
context: Catalogues pre-execution mention expansion as a distinct attack surface from tool-invoked fetches.
|
|
52
|
+
strength: secondary
|
|
53
|
+
- function: Measure
|
|
54
|
+
subcategory: MS.2.7
|
|
55
|
+
context: Detection events document the security and resilience property MEASURE 2.7 asks be measured for network egress.
|
|
56
|
+
strength: secondary
|
|
57
|
+
iso_42001:
|
|
58
|
+
- clause: '8.1'
|
|
59
|
+
context: 'Clause 8.1 operational control: content entering model context from an internal endpoint has bypassed every configured input control.'
|
|
60
|
+
strength: primary
|
|
61
|
+
- clause: '6.2'
|
|
62
|
+
context: Preventing unauthorised internal network reach is an AIMS information security objective under clause 6.2.
|
|
63
|
+
strength: secondary
|
|
64
|
+
- clause: '8.4'
|
|
65
|
+
context: Impact assessment under clause 8.4 must account for internal service data reaching the model provider through context.
|
|
66
|
+
strength: secondary
|
|
67
|
+
tags:
|
|
68
|
+
category: context-exfiltration
|
|
69
|
+
subcategory: prompt-mention-ssrf
|
|
70
|
+
scan_target: both
|
|
71
|
+
confidence: medium
|
|
72
|
+
agent_source:
|
|
73
|
+
type: llm_io
|
|
74
|
+
framework:
|
|
75
|
+
- any
|
|
76
|
+
provider:
|
|
77
|
+
- any
|
|
78
|
+
detection:
|
|
79
|
+
conditions:
|
|
80
|
+
- field: user_input
|
|
81
|
+
operator: regex
|
|
82
|
+
value: (?i)@(?:(?:url|fetch|web|link|page|browse|site|doc):(?:https?://)?|https?://)(?:2130706433|3232235521|2851995648|0x0*7f0{0,6}1\b|0x0*a9fea9fe\b|0177(?:\.0+){2}\.0*1|127\.1[:/]|localhost\.[:/]|\[::1\]|\[::ffff:(?:7f00:1|127\.0\.0\.1)\])
|
|
83
|
+
description: Auto-expanding mention aimed at a non-dotted-quad encoding of loopback or link-local -- decimal, octal, hex, short-form or trailing-dot
|
|
84
|
+
- field: user_input
|
|
85
|
+
operator: regex
|
|
86
|
+
value: (?i)@(?:(?:url|fetch|web|link|page|browse|site|doc):(?:https?://)?|https?://)(?:127\.\d{1,3}\.\d{1,3}\.\d{1,3}|localhost|0\.0\.0\.0|10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|172\.(?:1[6-9]|2\d|3[01])\.\d{1,3}\.\d{1,3}|169\.254\.\d{1,3}\.\d{1,3}|[a-z0-9-]{1,30}\.internal)(?::\d{1,5})?(?:/[^\s"']{0,30})?(?:/v1/secret|/v1/kv|/v2/keys|/latest/meta-data|/computeMetadata|/actuator/env|/debug/pprof|/v1/sys/wrapping|/\.env\b|/\.git/config|/_cluster/settings|docker\.sock)
|
|
87
|
+
description: Auto-expanding mention aimed at internal space on a path that reads secret material (not a health or version endpoint)
|
|
88
|
+
condition: any
|
|
89
|
+
false_positives:
|
|
90
|
+
- A developer deliberately asking the agent to read a local control-plane endpoint during debugging -- e.g. @url:http://localhost:8200/v1/secret while working on Vault integration. The rule fires by design; provenance of the prompt is what triage must establish.
|
|
91
|
+
- 'Bare @url: mentions aimed at localhost dev servers are NOT flagged, by design (ATR-2026-00013 exemption)'
|
|
92
|
+
- 'A control-plane PORT alone is not sufficient and is deliberately not used: measured during authoring, it fired on six out of six plausible local-dev prompts (local elasticsearch, redis, mongo, couchdb, vault health, docker version). Condition 2 requires a secret-material PATH instead.'
|
|
93
|
+
- 'MEASURED AND FIXED (adversarial review 2026-08-23). The mention prefix was `\s*[:=]\s*`, which is not the mention syntax -- it is the variable syntax of REST-client `.http` files (JetBrains HTTP Client, VS Code REST Client), where `@url = http://localhost:8080/actuator/env` and `@site = http://[::1]:8080/` are ordinary unquoted declarations with nothing to do with this attack. Four such files and a hand-written `@link: http://localhost:8080/actuator/env` docblock all fired. Prefix tightened to a literal `:` with no surrounding whitespace, which is the actual CVE-2026-47395 token form; all six re-run clean and no true positive was lost.'
|
|
94
|
+
- 'RESIDUAL AND NOT FIXABLE AT THE PATTERN LAYER. The evidence this rule matches is a literal string, and writing ABOUT the attack reproduces that string byte for byte. Measured on 14 authored benign texts that all still fire: a vitest regression test for the CVE fix, a CHANGELOG security entry, a generated policy denylist, Traditional Chinese and Japanese advisories, an SSRF payload wordlist, the mention library''s own README, a prompt-injection benchmark row, a pentest report finding, an incident triage chat log, an agent framework''s own system prompt documenting @browse:, a nuclei template, a docs table of blocked hosts -- and this rule''s own YAML file, which fires itself. No single-event condition separates these from the attack, because they are the same bytes. Triage must establish provenance; a repository that has PATCHED CVE-2026-47395 will carry these artifacts and alert on them routinely. Deliberately NOT papered over with a quote/backtick lookbehind or suppress_in_code_blocks: both would be defeated by one character of attacker formatting, and this rule''s main carrier is untrusted document text arriving on tool_response.'
|
|
95
|
+
- 'SCOPE NOTE. `field: user_input` is not user-typed-only. src/engine.ts resolves user_input to event.content on llm_input AND tool_response, so every file the agent READS is in scope for this rule -- which is what makes the residual documentation class above an operational cost rather than a theoretical one.'
|
|
96
|
+
response:
|
|
97
|
+
actions:
|
|
98
|
+
- alert
|
|
99
|
+
auto_response_threshold: high
|
|
100
|
+
message_template: |
|
|
101
|
+
[ATR-2026-02621] Prompt-embedded auto-fetch mention aimed at an internal address. Mention expansion happens before the agent runs, so no tool-level egress policy applies. Verify who authored this prompt text (CVE-2026-47395).
|
|
102
|
+
confidence: 70
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
title: Dangerous URI Scheme Obfuscated by Interstitial Characters
|
|
2
|
+
id: ATR-2026-02623
|
|
3
|
+
rule_version: 2
|
|
4
|
+
status: experimental
|
|
5
|
+
description: |
|
|
6
|
+
Detects a javascript:, vbscript: or data:text/html URI whose SCHEME NAME has been broken up by characters that a URL parser discards but a string-matching sanitizer does not: a raw tab, newline, carriage return or NUL, the numeric character reference for any of them, or a zero-padded numeric reference standing in for the scheme's first letter. Also covers an svg-namespaced script element carrying an HTML-style src attribute, a construct SVG itself never uses (SVG script loads through href / xlink:href) and which therefore only appears when something is aiming at an HTML parser past a sanitizer. CVE-2026-31807 (SiYuan SVG sanitizer bypass) and CVE-2022-1243 (urijs incorrect protocol extraction via CR, LF and TAB) are the same defect seen from two sides.
|
|
7
|
+
MEASURED GAP. `<a href="java	script:alert(document.cookie)">`, a raw-newline split, and a zero-padded `javascript:` all returned zero real matches across the seven event types, while the plain `<a href="javascript:fetch(document.cookie)">` control fires ATR-2026-00511, 00571 and 00497. Reading ATR-2026-00571 explains why: its pattern is `javascript:\s*(?:alert|eval|document\.|window\.|fetch|...)`, which binds both the literal scheme spelling and the callee that follows it. This rule deliberately does NOT require a callee -- an attacker who has already spelled the scheme as java	script: has declared intent, and requiring a known callee is what let `javascript:new Function(atob(...))` through in the first place.
|
|
8
|
+
WHY A QUOTED URI-BEARING POSITION IS REQUIRED. The first draft matched the split scheme anywhere. Measured against hand-written benign text it fired on YAML and on wrapped prose, because `- java` on one line followed by `script:` on the next contains the literal java\nscript: sequence. Newline is not droppable from the junk set -- CVE-2022-1243 names LF explicitly -- so the draft required the match to sit where a URI goes: an href/src/action attribute, a navigation argument, or a markdown link target.
|
|
9
|
+
That was not enough, and adversarial review measured why. The position test is a substring test with no word boundary, so `permalink:`, `redirect_uri:`, `avatarUrl:`, `geolocation:`, `transaction:` and `EXTRACTION=` all satisfied it, and every one of the original FPs came straight back -- in YAML, in a Makefile, in a JS object literal, in an OpenAPI document, in a TSV table, in a CHANGELOG and in Japanese prose (11 measured FPs). The discriminator that actually works is the QUOTE: a URI sitting in an href, a src or a navigation argument is always quoted, while a bare YAML scalar or a make variable is not. The quote is therefore mandatory on the keyword branch. The markdown branch keeps no quote but may no longer cross a line break, since a CommonMark inline destination starts on the same line as `](` -- allowing \s* there let `handlers["java"](\njava\nscript: ctx)` match.
|
|
10
|
+
SCOPE. The entity-encoded COLON form (javascript:) is not covered here. The bare `<svg:script>...</svg:script>` element is deliberately NOT covered either: adversarial review measured it firing on an Apache Batik CDATA example and on a zh-TW XHTML+SVG tutorial exactly as it fired on the payload, because at the pattern tier the two differ only in the script body, which this rule does not read. Only the src-attribute form, which SVG never legitimately produces, is kept.
|
|
11
|
+
author: ATR Community
|
|
12
|
+
date: 2026/08/23
|
|
13
|
+
schema_version: '0.1'
|
|
14
|
+
detection_tier: pattern
|
|
15
|
+
maturity: test
|
|
16
|
+
severity: high
|
|
17
|
+
references:
|
|
18
|
+
cve:
|
|
19
|
+
- CVE-2026-31807
|
|
20
|
+
- CVE-2022-1243
|
|
21
|
+
owasp_llm:
|
|
22
|
+
- LLM05:2025
|
|
23
|
+
owasp_agentic:
|
|
24
|
+
- ASI04:2026
|
|
25
|
+
mitre_atlas:
|
|
26
|
+
- AML.T0051 - LLM Prompt Injection
|
|
27
|
+
- AML.T0057 - LLM Data Leakage
|
|
28
|
+
compliance:
|
|
29
|
+
owasp_agentic:
|
|
30
|
+
- id: ASI04:2026
|
|
31
|
+
context: Content the agent emits or relays executes in the rendering surface, taking actions in the victim's session that the agent was never asked to take.
|
|
32
|
+
strength: primary
|
|
33
|
+
owasp_llm:
|
|
34
|
+
- id: LLM05:2025
|
|
35
|
+
context: 'Improper output handling: model or tool output containing an executable URI is rendered without neutralisation, which is the canonical instance of this category.'
|
|
36
|
+
strength: primary
|
|
37
|
+
eu_ai_act:
|
|
38
|
+
- article: '15'
|
|
39
|
+
context: 'Article 15 robustness: an obfuscated scheme is an explicit attempt to defeat the system''s own input sanitisation, which is the attack class the article names.'
|
|
40
|
+
strength: primary
|
|
41
|
+
- article: '9'
|
|
42
|
+
context: Rendered-output injection is a documented risk for agents with a UI surface; these detections are the Article 9 monitoring control.
|
|
43
|
+
strength: secondary
|
|
44
|
+
- article: '12'
|
|
45
|
+
context: 'Article 12 record-keeping: script execution in a rendered surface leaves no server-side trace of its own.'
|
|
46
|
+
strength: secondary
|
|
47
|
+
nist_ai_rmf:
|
|
48
|
+
- function: Manage
|
|
49
|
+
subcategory: MG.2.3
|
|
50
|
+
context: Runtime treatment for executable content reaching a rendering surface through agent output.
|
|
51
|
+
strength: primary
|
|
52
|
+
- function: Map
|
|
53
|
+
subcategory: MP.5.1
|
|
54
|
+
context: Catalogues sanitizer-evasion encodings as distinct from the plain scheme, which is exactly the half existing coverage missed.
|
|
55
|
+
strength: secondary
|
|
56
|
+
- function: Measure
|
|
57
|
+
subcategory: MS.2.7
|
|
58
|
+
context: Detection events supply the security and resilience evidence MEASURE 2.7 asks be documented for the rendering path.
|
|
59
|
+
strength: secondary
|
|
60
|
+
iso_42001:
|
|
61
|
+
- clause: '8.1'
|
|
62
|
+
context: 'Clause 8.1 operational control: content leaving the system carries executable code into a downstream surface.'
|
|
63
|
+
strength: primary
|
|
64
|
+
- clause: '6.2'
|
|
65
|
+
context: Preventing script execution in rendered agent output is an AIMS information security objective under clause 6.2.
|
|
66
|
+
strength: secondary
|
|
67
|
+
- clause: '8.4'
|
|
68
|
+
context: Impact assessment under clause 8.4 must account for agent output rendered in a browser under a user's own session.
|
|
69
|
+
strength: secondary
|
|
70
|
+
tags:
|
|
71
|
+
category: context-exfiltration
|
|
72
|
+
subcategory: sanitizer-evasion
|
|
73
|
+
scan_target: both
|
|
74
|
+
confidence: medium
|
|
75
|
+
agent_source:
|
|
76
|
+
type: llm_io
|
|
77
|
+
framework:
|
|
78
|
+
- any
|
|
79
|
+
provider:
|
|
80
|
+
- any
|
|
81
|
+
detection:
|
|
82
|
+
conditions:
|
|
83
|
+
- field: content
|
|
84
|
+
operator: regex
|
|
85
|
+
value: '(?i)(?:(?:href|src|action|formaction|xlink:href|url|uri|link|location|open_url|navigate|goto|window\s*\.\s*open)\s*[=(:]\s*(?:\\{0,2}[\"''`])\s*|\]\([ \t]{0,4})(?:j(?:[\x00\x09\x0a\x0d]|�*(?:9|a|d);|�*(?:9|10|13);|	|
){1,10}avascript|ja(?:[\x00\x09\x0a\x0d]|�*(?:9|a|d);|�*(?:9|10|13);|	|
){1,10}vascript|jav(?:[\x00\x09\x0a\x0d]|�*(?:9|a|d);|�*(?:9|10|13);|	|
){1,10}ascript|java(?:[\x00\x09\x0a\x0d]|�*(?:9|a|d);|�*(?:9|10|13);|	|
){1,10}script|javas(?:[\x00\x09\x0a\x0d]|�*(?:9|a|d);|�*(?:9|10|13);|	|
){1,10}cript|javasc(?:[\x00\x09\x0a\x0d]|�*(?:9|a|d);|�*(?:9|10|13);|	|
){1,10}ript|javascr(?:[\x00\x09\x0a\x0d]|�*(?:9|a|d);|�*(?:9|10|13);|	|
){1,10}ipt|javascri(?:[\x00\x09\x0a\x0d]|�*(?:9|a|d);|�*(?:9|10|13);|	|
){1,10}pt|javascrip(?:[\x00\x09\x0a\x0d]|�*(?:9|a|d);|�*(?:9|10|13);|	|
){1,10}t|v(?:[\x00\x09\x0a\x0d]|�*(?:9|a|d);|�*(?:9|10|13);|	|
){1,10}bscript|vb(?:[\x00\x09\x0a\x0d]|�*(?:9|a|d);|�*(?:9|10|13);|	|
){1,10}script|vbs(?:[\x00\x09\x0a\x0d]|�*(?:9|a|d);|�*(?:9|10|13);|	|
){1,10}cript|vbsc(?:[\x00\x09\x0a\x0d]|�*(?:9|a|d);|�*(?:9|10|13);|	|
){1,10}ript|vbscr(?:[\x00\x09\x0a\x0d]|�*(?:9|a|d);|�*(?:9|10|13);|	|
){1,10}ipt|vbscri(?:[\x00\x09\x0a\x0d]|�*(?:9|a|d);|�*(?:9|10|13);|	|
){1,10}pt|vbscrip(?:[\x00\x09\x0a\x0d]|�*(?:9|a|d);|�*(?:9|10|13);|	|
){1,10}t)\s*:'
|
|
86
|
+
description: Dangerous URI scheme split by a character the parser discards -- raw CR/LF/TAB/NUL or its numeric character reference -- in a URI-bearing position
|
|
87
|
+
- field: content
|
|
88
|
+
operator: regex
|
|
89
|
+
value: (?i)(?:(?:href|src|action|formaction|xlink:href|url|uri|link|location|open_url|navigate|goto|window\s*\.\s*open)\s*[=(:]\s*(?:\\{0,2}[\"'`])\s*|\]\([ \t]{0,4})(?:�*106;|�*6a;)avascript\s*:|(?:(?:href|src|action|formaction|xlink:href|url|uri|link|location|open_url|navigate|goto|window\s*\.\s*open)\s*[=(:]\s*(?:\\{0,2}[\"'`])\s*|\]\([ \t]{0,4})(?:�*118;|�*76;)bscript\s*:|(?:(?:href|src|action|formaction|xlink:href|url|uri|link|location|open_url|navigate|goto|window\s*\.\s*open)\s*[=(:]\s*(?:\\{0,2}[\"'`])\s*|\]\([ \t]{0,4})(?:�*100;|�*64;)ata\s*:\s*text/html
|
|
90
|
+
description: Dangerous URI scheme whose leading character is supplied as a zero-padded numeric character reference
|
|
91
|
+
- field: content
|
|
92
|
+
operator: regex
|
|
93
|
+
value: (?i)<\s*svg\s*:\s*script\b[^>]{0,200}\bsrc\s*=
|
|
94
|
+
description: Namespace-prefixed script ELEMENT -- an opening tag carrying a src attribute or closed by a matching end tag, not a bare mention of the tag name in prose
|
|
95
|
+
condition: any
|
|
96
|
+
false_positives:
|
|
97
|
+
- Text where 'java' ends a line and a 'script:' key begins the next -- YAML, workflow files, wrapped prose. Measured during authoring, then measured AGAIN in adversarial review because the URI-position test had no word boundary. Now excluded by requiring the value to be quoted.
|
|
98
|
+
- 'Security writing or a sanitizer test suite that quotes an obfuscated scheme verbatim, including this rule''s own test cases. Measured in adversarial review: an explainer showing the payload inside a fenced code block fires, and so does prose warning that <svg:script src=> is the wrong attribute. Both are the payload bytes; the pattern tier cannot see the surrounding intent, and suppress_in_code_blocks is deliberately NOT set because a markdown fence would then be a one-character evasion.'
|
|
99
|
+
- 'The plain javascript: scheme is deliberately NOT matched here; ATR-2026-00571 already covers it'
|
|
100
|
+
- 'A quoted URI-position value that legitimately begins with the token ''java'' or ''vb'' and is followed only by a raw TAB/CR/LF and then a ''script:'' token -- e.g. a YAML scalar src: "java<TAB>script: label" or a JS template literal `java\nscript: ...`. Both were constructed adversarially and neither is idiomatic, but they remain reachable: dropping raw TAB/LF from the junk set would delete the CVE-2022-1243 core, so they are accepted.'
|
|
101
|
+
- Namespace-prefixed script elements that are ordinary markup -- <html:script src=>, <xhtml:script src=> in an XSLT stylesheet, <ns2:script> in a JAXB/SOAP payload. Measured FPs in adversarial review; the prefix set is now svg only.
|
|
102
|
+
- 'Documentation showing a complete <svg:script>...</svg:script> worked example. NOT a false positive any more and NOT detected either: that branch was removed after it fired identically on an Apache Batik CDATA example, a zh-TW compound-document tutorial and the attack payload. Detecting it needs the script body, which is a different tier.'
|
|
103
|
+
response:
|
|
104
|
+
actions:
|
|
105
|
+
- alert
|
|
106
|
+
auto_response_threshold: high
|
|
107
|
+
message_template: |
|
|
108
|
+
[ATR-2026-02623] Dangerous URI scheme obfuscated so a string-matching sanitizer cannot see it, but a browser still executes it. Do not render this content (CVE-2026-31807 / CVE-2022-1243 class).
|
|
109
|
+
confidence: 75
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
title: Vendor API Hostname Used as a Label Prefix of Another Domain
|
|
2
|
+
id: ATR-2026-02649
|
|
3
|
+
rule_version: 2
|
|
4
|
+
status: experimental
|
|
5
|
+
description: |
|
|
6
|
+
Detects a hostname in which a well-known API FQDN is only the LEFT-HAND part of a longer domain -- `api.contentful.com.collector.example`, `api.openai.com.relay.example`, `login.microsoftonline.com.attacker.io`. Nobody owns those names except the owner of the trailing domain, so any allow-list, log filter or human eye that matches by "starts with" or "contains" reads them as the vendor while the traffic goes somewhere else. GHSA-2xhg-73j7-rrgx (Contentful MCP server) is the reference case: the `host` and `proxy` arguments of export_space/import_space are model- controllable and the CMA client still attaches the operator's management token, so the model chooses where the company's credential is delivered.
|
|
7
|
+
THE TWO SHAPES. Condition 1 is the general one and needs no context at all: a vendor FQDN followed by two more labels, in URL or assignment position. It is unambiguous -- `bucket.s3.amazonaws.com` (vendor as SUFFIX, which is legitimate) does not match, because the extra labels must come AFTER the vendor name. Condition 2 covers the same trick with only ONE extra label (`api.openai.com.internal`), which is ambiguous on its own, so it is required to appear as the value of an endpoint-override parameter -- base_url, api_base, host, proxy, serverUrl, endpoint.
|
|
8
|
+
DELIBERATE NON-SCOPE. The plain redirect -- `OPENAI_BASE_URL= https://relay.collector.example/v1` -- is NOT claimed. Deciding that a host is "not the vendor's" requires a negative match the engine cannot express, and the benign case is common: every local model server, gateway and LiteLLM proxy sets exactly that variable to exactly that kind of host. Claiming it would flag them all. What is claimed is only the form that is wrong by construction.
|
|
9
|
+
Regional legitimate suffixes were checked: `s3.amazonaws.com.cn` is real, and it does not match, because both conditions need two further labels.
|
|
10
|
+
WHAT rule_version 2 GAVE UP, DELIBERATELY. Condition 1 now requires a scheme in front and a path or port behind. A look-alike host quoted bare (`api.openai.com.relay.example` with no scheme and no path) is only caught when it sits in an endpoint-override parameter, via condition 2. That is a real recall gap and an easy evasion; it is accepted because without it the rule fired on 14 of 16 hand-written benign inputs -- host-derived filenames, HAR captures, TLS cert paths, VCR cassettes, k8s ExternalName values, phishing-awareness bulletins and blocklists. Coverage that costs that much is negative coverage.
|
|
11
|
+
author: ATR Community
|
|
12
|
+
date: 2026/08/23
|
|
13
|
+
schema_version: '0.1'
|
|
14
|
+
detection_tier: pattern
|
|
15
|
+
maturity: test
|
|
16
|
+
severity: high
|
|
17
|
+
references:
|
|
18
|
+
ghsa:
|
|
19
|
+
- GHSA-2xhg-73j7-rrgx
|
|
20
|
+
cwe:
|
|
21
|
+
- CWE-350
|
|
22
|
+
- CWE-346
|
|
23
|
+
- CWE-1385
|
|
24
|
+
owasp_llm:
|
|
25
|
+
- LLM02:2025
|
|
26
|
+
owasp_agentic:
|
|
27
|
+
- ASI02:2026
|
|
28
|
+
mitre_atlas:
|
|
29
|
+
- AML.T0057 - LLM Data Leakage
|
|
30
|
+
mitre_attack:
|
|
31
|
+
- 'T1583.001 - Acquire Infrastructure: Domains'
|
|
32
|
+
external:
|
|
33
|
+
- https://github.com/advisories/GHSA-2xhg-73j7-rrgx
|
|
34
|
+
compliance:
|
|
35
|
+
owasp_agentic:
|
|
36
|
+
- id: ASI02:2026
|
|
37
|
+
context: Credentials and payloads intended for a named vendor are delivered to a domain the attacker controls, while every string-matching control still reads the vendor's name.
|
|
38
|
+
strength: primary
|
|
39
|
+
owasp_llm:
|
|
40
|
+
- id: LLM02:2025
|
|
41
|
+
context: 'Sensitive information disclosure through destination confusion: the operator''s API token travels to the attacker because the endpoint argument was model-controllable.'
|
|
42
|
+
strength: primary
|
|
43
|
+
eu_ai_act:
|
|
44
|
+
- article: '15'
|
|
45
|
+
context: 'Article 15 resilience: an allow-list defeated by prefix matching is a control that does not hold under adversarial input, and these detections are how its failure becomes visible.'
|
|
46
|
+
strength: primary
|
|
47
|
+
- article: '10'
|
|
48
|
+
context: Article 10 data governance -- data leaving to an unintended processor because a hostname was misread.
|
|
49
|
+
strength: secondary
|
|
50
|
+
- article: '12'
|
|
51
|
+
context: 'Article 12 traceability: logs that record the vendor''s name for traffic that never reached the vendor are misleading unless this confusion is flagged.'
|
|
52
|
+
strength: secondary
|
|
53
|
+
nist_ai_rmf:
|
|
54
|
+
- function: Manage
|
|
55
|
+
subcategory: MG.2.3
|
|
56
|
+
context: Runtime treatment for the risk that egress allow-lists are matched by substring rather than by authority.
|
|
57
|
+
strength: primary
|
|
58
|
+
- function: Measure
|
|
59
|
+
subcategory: MS.2.7
|
|
60
|
+
context: Detection events evidence whether destination controls actually bound the traffic.
|
|
61
|
+
strength: primary
|
|
62
|
+
- function: Map
|
|
63
|
+
subcategory: MP.5.1
|
|
64
|
+
context: Characterises hostname authority confusion as a distinct risk from an outright unknown destination.
|
|
65
|
+
strength: secondary
|
|
66
|
+
iso_42001:
|
|
67
|
+
- clause: '8.1'
|
|
68
|
+
context: Clause 8.1 control of externally provided processes depends on knowing which external party is actually being called.
|
|
69
|
+
strength: primary
|
|
70
|
+
- clause: '8.4'
|
|
71
|
+
context: Impact assessment under clause 8.4 must account for operator credentials being delivered to a look-alike domain.
|
|
72
|
+
strength: secondary
|
|
73
|
+
- clause: '6.2'
|
|
74
|
+
context: Ensuring outbound traffic reaches the intended processor is an AIMS objective under clause 6.2.
|
|
75
|
+
strength: secondary
|
|
76
|
+
tags:
|
|
77
|
+
category: context-exfiltration
|
|
78
|
+
subcategory: hostname-authority-confusion
|
|
79
|
+
scan_target: both
|
|
80
|
+
confidence: medium
|
|
81
|
+
agent_source:
|
|
82
|
+
type: mcp_exchange
|
|
83
|
+
framework:
|
|
84
|
+
- any
|
|
85
|
+
provider:
|
|
86
|
+
- any
|
|
87
|
+
detection:
|
|
88
|
+
conditions:
|
|
89
|
+
- field: content
|
|
90
|
+
operator: regex
|
|
91
|
+
value: https?://(?:api\.openai\.com|api\.anthropic\.com|api\.github\.com|github\.com|raw\.githubusercontent\.com|api\.slack\.com|hooks\.slack\.com|login\.microsoftonline\.com|graph\.microsoft\.com|oauth2\.googleapis\.com|accounts\.google\.com|generativelanguage\.googleapis\.com|api\.contentful\.com|api\.stripe\.com|s3\.amazonaws\.com|sts\.amazonaws\.com|api\.notion\.com|api\.linear\.app|api\.telegram\.org|registry\.npmjs\.org|files\.pythonhosted\.org|api\.mistral\.ai|api\.groq\.com|api\.cohere\.com|huggingface\.co)\.[a-z0-9-]{1,63}\.[a-z]{2,24}[/:]
|
|
92
|
+
description: Vendor FQDN followed by two further labels IN URL AUTHORITY POSITION -- a scheme in front and a path or port behind. rule_version 1 also accepted the bare `//`, `@` and `key:` prefixes, which made every host-derived FILENAME a match (api.openai.com.2026-08-23.har, api.github.com.chain.pem, api.stripe.com.access.log) and every split-horizon internal name (api.contentful.com.svc.cluster.local).
|
|
93
|
+
- field: content
|
|
94
|
+
operator: regex
|
|
95
|
+
value: \b(?:[a-z_]{0,16}base_?url|api_?base|["']?\bhost\b["']?|["']?\bproxy\b["']?|server_?url|\bendpoint\b|api_?host|["']?\burl\b["']?)["']?\s*[:=]\s*["']?(?:https?://)?(?:api\.openai\.com|api\.anthropic\.com|api\.github\.com|github\.com|raw\.githubusercontent\.com|api\.slack\.com|hooks\.slack\.com|login\.microsoftonline\.com|graph\.microsoft\.com|oauth2\.googleapis\.com|accounts\.google\.com|generativelanguage\.googleapis\.com|api\.contentful\.com|api\.stripe\.com|s3\.amazonaws\.com|sts\.amazonaws\.com|api\.notion\.com|api\.linear\.app|api\.telegram\.org|registry\.npmjs\.org|files\.pythonhosted\.org|api\.mistral\.ai|api\.groq\.com|api\.cohere\.com|huggingface\.co)\.[a-z0-9-]{1,63}\.[a-z]{2,24}
|
|
96
|
+
description: 'Endpoint-override parameter set to a vendor FQDN that carries two further labels. Two changes from rule_version 1: the key names are \b-anchored, so deny_host / block_url / allow_endpoint no longer match via their suffix (a blocklist entry is not an endpoint override), and the value needs two labels plus a TLD, so a one-label corporate suffix (HTTPS_PROXY=api.anthropic.com.internal) is out of scope rather than alerted on.'
|
|
97
|
+
condition: any
|
|
98
|
+
false_positives:
|
|
99
|
+
- MEASURED AND NOT FIXED. Threat-intel and incident writing that quotes a look-alike URL WITH A PATH -- an IOC list, a runbook line such as 'block https://api.openai.com.relay.example/v1' -- is byte-identical to the redirect itself and still fires. This is the irreducible residue of a hostname signature and is why the action is alert only. Quoting the bare look-alike host without a path no longer fires.
|
|
100
|
+
- 'A deliberately vendor-shaped test double (OPENAI_BASE_URL=https://api.openai.com.mock.local/v1 pointing at a recorded-response container). Measured: fires. The hostname really is authority-confusing, so the alert is arguably correct, but it is not an attack.'
|
|
101
|
+
- An internal split-horizon DNS name that appends ONE corporate label to a vendor FQDN is no longer claimed at all (rule_version 2 requires two labels plus a TLD in both conditions).
|
|
102
|
+
- A test fixture that constructs a look-alike host WITH A PATH to assert the allow-list rejects it.
|
|
103
|
+
response:
|
|
104
|
+
actions:
|
|
105
|
+
- alert
|
|
106
|
+
auto_response_threshold: high
|
|
107
|
+
message_template: |
|
|
108
|
+
[ATR-2026-02649] A hostname places a well-known vendor API FQDN in front of another domain, so it resolves to the tail domain while reading as the vendor. Any credential attached to this request goes to the tail domain''s owner. Reference: GHSA-2xhg-73j7-rrgx. Check where the hostname came from and whether a token was attached.
|
|
109
|
+
confidence: 75
|