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,100 @@
|
|
|
1
|
+
title: JavaScript Sandbox Escape by Acquiring the Function Constructor Reflectively
|
|
2
|
+
id: ATR-2026-02681
|
|
3
|
+
rule_version: 2
|
|
4
|
+
status: experimental
|
|
5
|
+
description: |
|
|
6
|
+
Detects code handed to an agent code-execution / expression-evaluation tool that reaches the Function constructor WITHOUT writing the well-known x.constructor.constructor ladder, by pulling the "constructor" property off a prototype through a reflective accessor -- Reflect.get(Reflect.getPrototypeOf( async function(){}), "constructor") or Object.getOwnPropertyDescriptor( Object.getPrototypeOf(Object), "constructor").value -- and then invoking it on a source string that returns the global object. Mined from CVE-2025-53626 (@pdfme/common expression evaluation) and its sibling CVE-2025-61927 (happy-dom VM context escape). ATR already detects the direct ladder (ATR-2026-00436 / ATR-2026-01953); those rules key on the literal ".constructor.constructor" or "process.mainModule.require", so the reflective spelling -- which produces the identical Function object -- passes them untouched. The rule requires BOTH halves in one event: the reflective acquisition of "constructor" from a prototype, and a quoted source string whose body returns this/globalThis/global/process. Either half alone is ordinary metaprogramming and is deliberately not matched.
|
|
7
|
+
author: ATR Community (CVE sweep)
|
|
8
|
+
date: 2026/08/23
|
|
9
|
+
schema_version: '0.1'
|
|
10
|
+
detection_tier: pattern
|
|
11
|
+
maturity: test
|
|
12
|
+
severity: critical
|
|
13
|
+
references:
|
|
14
|
+
cve:
|
|
15
|
+
- CVE-2025-53626
|
|
16
|
+
- CVE-2025-61927
|
|
17
|
+
cwe:
|
|
18
|
+
- CWE-94
|
|
19
|
+
- CWE-693
|
|
20
|
+
- CWE-1321
|
|
21
|
+
owasp_llm:
|
|
22
|
+
- LLM05:2025
|
|
23
|
+
- LLM06:2025
|
|
24
|
+
owasp_agentic:
|
|
25
|
+
- ASI05:2026
|
|
26
|
+
- ASI04:2026
|
|
27
|
+
mitre_attack:
|
|
28
|
+
- T1059.007 - JavaScript
|
|
29
|
+
mitre_atlas:
|
|
30
|
+
- AML.T0053 - AI Agent Tool Invocation
|
|
31
|
+
external:
|
|
32
|
+
- https://nvd.nist.gov/vuln/detail/CVE-2025-53626
|
|
33
|
+
- https://nvd.nist.gov/vuln/detail/CVE-2025-61927
|
|
34
|
+
metadata_provenance:
|
|
35
|
+
cve: human-reviewed
|
|
36
|
+
cwe: human-reviewed
|
|
37
|
+
owasp_llm: human-reviewed
|
|
38
|
+
owasp_agentic: human-reviewed
|
|
39
|
+
mitre_attack: human-reviewed
|
|
40
|
+
mitre_atlas: human-reviewed
|
|
41
|
+
compliance:
|
|
42
|
+
eu_ai_act:
|
|
43
|
+
- article: '15'
|
|
44
|
+
context: Article 15 (accuracy, robustness and cybersecurity) requires resilience against attempts to alter system behaviour by exploiting vulnerabilities; this rule detects a sandbox escape that converts a restricted expression evaluator into arbitrary host code execution.
|
|
45
|
+
strength: primary
|
|
46
|
+
- article: '9'
|
|
47
|
+
context: Article 9 (risk management system) requires identified risks to be treated; this rule is the runtime treatment for the code-sandbox escape risk class.
|
|
48
|
+
strength: secondary
|
|
49
|
+
nist_ai_rmf:
|
|
50
|
+
- subcategory: MG.2.3
|
|
51
|
+
context: Sandbox escape from an agent code-execution tool is an identified AI risk requiring an active runtime countermeasure; this rule implements it.
|
|
52
|
+
strength: primary
|
|
53
|
+
- subcategory: MS.2.7
|
|
54
|
+
context: Measuring AI system security by testing whether restricted evaluators can be escaped; this rule is the detection instrument for that measurement.
|
|
55
|
+
strength: secondary
|
|
56
|
+
iso_42001:
|
|
57
|
+
- clause: '8.1'
|
|
58
|
+
context: ISO/IEC 42001 Clause 8.1 (operational planning and control) is operationalised by detecting expression payloads that break the evaluator's containment.
|
|
59
|
+
strength: primary
|
|
60
|
+
- clause: '8.3'
|
|
61
|
+
context: ISO/IEC 42001 Clause 8.3 (AI risk treatment) is implemented by alerting on the reflective Function-constructor acquisition.
|
|
62
|
+
strength: secondary
|
|
63
|
+
tags:
|
|
64
|
+
category: privilege-escalation
|
|
65
|
+
subcategory: js-sandbox-escape-reflective
|
|
66
|
+
scan_target: agent
|
|
67
|
+
confidence: high
|
|
68
|
+
suppress_in_code_blocks: true
|
|
69
|
+
agent_source:
|
|
70
|
+
type: tool_call
|
|
71
|
+
framework:
|
|
72
|
+
- any
|
|
73
|
+
provider:
|
|
74
|
+
- any
|
|
75
|
+
detection:
|
|
76
|
+
condition: any
|
|
77
|
+
conditions:
|
|
78
|
+
- field: content
|
|
79
|
+
operator: regex
|
|
80
|
+
value: (?:\\{0,2}["'][\w-]{0,24}(?:code|script|expression|expr|snippet|program)\\{0,2}["']\s*:\s*\\{0,2}["']|[\w-]{0,24}(?:code|script|expression|expr|snippet|program)\s*=\s*\\{0,2}["'])[^\n]{0,100}(?:getownpropertydescriptor|reflect\.get)\s*\(\s*(?:object|reflect)\.getprototypeof[^\n]{0,40}\\?["']constructor\\?["'][^\n]{0,120}\\?["'`]\s*return\s+(?:this|globalthis|global|process)\b
|
|
81
|
+
description: 'Reflective acquisition of the constructor slot from a prototype, followed on the same line by a quoted source string that returns the global object -- the Function constructor obtained without ever writing .constructor.constructor, then invoked to hand back the host realm. The whole thing must sit inside a CODE-VALUED TOOL ARGUMENT ("code": "...", "script": "...", expression="..."), which is the channel the title claims and the only one that separates evaluating the payload from merely writing it down. See false_positives.'
|
|
82
|
+
- field: content
|
|
83
|
+
operator: regex
|
|
84
|
+
value: (?:\\{0,2}["'][\w-]{0,24}(?:code|script|expression|expr|snippet|program)\\{0,2}["']\s*:\s*\\{0,2}["']|[\w-]{0,24}(?:code|script|expression|expr|snippet|program)\s*=\s*\\{0,2}["'])[^\n]{0,100}(?:object|reflect)\.getprototypeof\s*\(\s*(?:async\s+function|function\s*\*)[^\n]{0,40}\\?["']?constructor\\?["']?[^\n]{0,80}\\?["'`]\s*return\s+(?:this|globalthis|global|process)\b
|
|
85
|
+
description: 'The AsyncFunction / GeneratorFunction ladder in a code-valued tool argument: the prototype of an async or generator function literal is taken, its constructor read (quoted or dotted), and that constructor invoked on a quoted source string returning the global object. Reading the AsyncFunction constructor alone is a legitimate feature-detection idiom and is NOT matched -- only its invocation on a global-returning body, inside a code argument.'
|
|
86
|
+
false_positives:
|
|
87
|
+
- Serialization and deep-clone helpers that read a descriptor for an ordinary property, e.g. Object.getOwnPropertyDescriptor(Object.getPrototypeOf(instance), 'render') -- the property name must literally be 'constructor'
|
|
88
|
+
- A class-identity check such as Object.getPrototypeOf(o).constructor === Object -- no quoted return-the-global source string follows, so nothing matches
|
|
89
|
+
- Prototype-pollution defences that inspect Object.prototype's own descriptors (e.g. for '__proto__') -- the property name is not 'constructor'
|
|
90
|
+
- |-
|
|
91
|
+
ADVERSARIAL REVIEW 2026-08-24, FIXED. Rule v1 matched the escape anywhere in `field: content`. Twelve freshly written benign samples were run through the engine and ALL TWELVE fired. The decisive ones were not exotic: a vm2 sandbox-hardening test asserting the escape is BLOCKED, an isolated-vm regression test, an ESLint "examples of incorrect code" block, a static-analysis fixture array, a sandbox library changelog, a Japanese security blog, a fenced code block in an article explaining CVE-2025-53626, and ATR's own test_cases block. Every one of those is something a coding agent writes to a FILE.
|
|
92
|
+
That is not a coincidence. On a tool_call event `field: content` resolves to fields.content, and src/hook-handler.ts sets that from toolInput.content -- the body of a Write/Edit call. So rule v1's dominant production surface was file writes, not evaluation, which is the exact opposite of what its own title says. Fixed by requiring the payload to sit in a CODE-VALUED ARGUMENT (a code/script/expression-style key, then a quote). "content" is deliberately NOT in that key list: writing a file is not evaluating it. tags.suppress_in_code_blocks was added as a second layer for fenced and backticked article text.
|
|
93
|
+
- 'KNOWN RESIDUAL: code that legitimately needs the global object and reaches for it through this ladder -- a globalThis fallback such as Object.getPrototypeOf(async function(){}).constructor("return this")() -- still fires if it is submitted to an evaluation tool. It is a real idiom, but inside an agent''s code-execution argument it is also indistinguishable from the escape, and the well-behaved spelling (globalThis, or plain Function) is available. Triage, not a pattern change.'
|
|
94
|
+
- 'KNOWN GAP: a payload written to a file and evaluated later by a second step is no longer matched here. Rule v1 claimed that ground and paid for it with a 12/12 false-positive rate on benign security and test content.'
|
|
95
|
+
response:
|
|
96
|
+
actions:
|
|
97
|
+
- alert
|
|
98
|
+
message_template: |
|
|
99
|
+
[ATR-2026-02681] Code submitted to an execution/evaluation tool acquires the Function constructor through a reflective accessor and invokes it on a source string that returns the global object. This is a sandbox escape, not metaprogramming -- do not evaluate it.
|
|
100
|
+
confidence: 85
|
package/rules/privilege-escalation/ATR-2026-02683-tool-argument-option-injection-executor-flag.yaml
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
title: Agent Tool Data Argument Carries a Program-Executing CLI Option
|
|
2
|
+
id: ATR-2026-02683
|
|
3
|
+
rule_version: 2
|
|
4
|
+
status: experimental
|
|
5
|
+
description: |
|
|
6
|
+
Detects an agent tool argument that is supposed to hold DATA -- a search pattern, a glob, a file path, an output name -- but whose value begins with a dash and names a CLI option that makes the underlying binary run a program of the caller's choosing. ripgrep's --pre=<prog> (every matched file is piped through <prog>), tar's --checkpoint-action=exec=<cmd> and --to-command=<cmd>, rsync/scp's -e <shell> and --rsh=<shell>, wget's --output-document=<path> (write anywhere, including a shell startup file), GNU tar's --use-compress-program=<prog>. Mined from CVE-2026-48116 (AnythingLLM filesystem-search-files passes the LLM-controlled pattern straight to ripgrep, so "--pre=/bin/sh" is command execution). None of this needs a single shell metacharacter, which is exactly why ATR's metacharacter rules (ATR-2026-00111 and friends) stay silent on it: the injection happens in the argument VECTOR, before any shell is involved. The rule requires the option to carry a real program or path operand, so a developer searching their codebase for the literal string "--pre=" does not match.
|
|
7
|
+
V2 -- ADVERSARIAL REVIEW 2026-08-24. The operand requirement held, but the KEY side did not. v1 accepted any occurrence of a data-shaped word followed by a colon or an equals sign, which is the syntax of ordinary shell, Make, YAML and Dockerfile assignment. 11 of 18 hand-written benign twins fired:
|
|
8
|
+
ARGS="--use-compress-program=zstd" in a backup script; a JSON job config
|
|
9
|
+
{"bin":"tar","args":"--use-compress-program=pigz -cf ..."}; a GitHub Actions
|
|
10
|
+
step with args: --output-document=/tmp/tool.tgz; a Makefile
|
|
11
|
+
OUTPUT = --output-document=...; a deploy script ARGS="-e ssh -o
|
|
12
|
+
StrictHostKeyChecking=no"; rsync telemetry {"cmd":"rsync","args":"-e ssh
|
|
13
|
+
-o BatchMode=yes"}; a k8s CronJob args:; a Dockerfile ENV OUTPUT=...;
|
|
14
|
+
a Python unit test args = "--output-document=/home/dev/.bashrc" asserting
|
|
15
|
+
the validator REJECTS it; and remediation prose (English and Traditional
|
|
16
|
+
Chinese) that names the payload -- pattern = "--pre=/bin/sh" -- in the
|
|
17
|
+
course of telling you to block it.
|
|
18
|
+
The common factor: an executing CLI option is a perfectly ordinary VALUE for a variable that holds command-line options. What makes it an attack is that the value arrived as a TOOL ARGUMENT, and v1 never checked that.
|
|
19
|
+
THE FIX: the key/value pair must be framed as an agent tool invocation -- either a QUOTED key inside an arguments/parameters/params/tool_input object, or a keyword argument sitting immediately after "(" or "," in a call. Bare KEY=value and bare YAML key: value no longer match. Measured after the fix: 0 of 18 benign twins, 0 of 10 fresh round-2 twins (legitimate search / extract / rsync / fetch tool calls, and bash tool calls where the option is the command's OWN flag: tar --use-compress-program=zstd, rsync -e 'ssh -o BatchMode=yes', wget --output-document=/tmp/tool.tgz), 5 of 5 true positives retained.
|
|
20
|
+
RESIDUAL, MEASURED: an advisory that quotes the tool call verbatim ({"arguments":{"pattern":"--pre=/bin/sh"}}) still fires. Irreducible: those are the exact bytes of the attack.
|
|
21
|
+
CORPUS CAVEAT: FP-clean on the 13,601-sample benign corpus is a ZERO-MEASUREMENT pass here -- only 2 corpus samples contain any of these option spellings at all. The twins below are the real evidence.
|
|
22
|
+
author: ATR Community (CVE sweep)
|
|
23
|
+
date: 2026/08/23
|
|
24
|
+
schema_version: '0.1'
|
|
25
|
+
detection_tier: pattern
|
|
26
|
+
maturity: test
|
|
27
|
+
severity: high
|
|
28
|
+
references:
|
|
29
|
+
cve:
|
|
30
|
+
- CVE-2026-48116
|
|
31
|
+
cwe:
|
|
32
|
+
- CWE-88
|
|
33
|
+
- CWE-78
|
|
34
|
+
owasp_llm:
|
|
35
|
+
- LLM06:2025
|
|
36
|
+
- LLM01:2025
|
|
37
|
+
owasp_agentic:
|
|
38
|
+
- ASI05:2026
|
|
39
|
+
- ASI02:2026
|
|
40
|
+
mitre_attack:
|
|
41
|
+
- T1059 - Command and Scripting Interpreter
|
|
42
|
+
mitre_atlas:
|
|
43
|
+
- AML.T0053 - AI Agent Tool Invocation
|
|
44
|
+
external:
|
|
45
|
+
- https://nvd.nist.gov/vuln/detail/CVE-2026-48116
|
|
46
|
+
- https://www.gnu.org/software/tar/manual/html_section/checkpoints.html
|
|
47
|
+
metadata_provenance:
|
|
48
|
+
cve: human-reviewed
|
|
49
|
+
cwe: human-reviewed
|
|
50
|
+
owasp_llm: human-reviewed
|
|
51
|
+
owasp_agentic: human-reviewed
|
|
52
|
+
mitre_attack: human-reviewed
|
|
53
|
+
mitre_atlas: human-reviewed
|
|
54
|
+
compliance:
|
|
55
|
+
eu_ai_act:
|
|
56
|
+
- article: '15'
|
|
57
|
+
context: Article 15 (accuracy, robustness and cybersecurity) requires resistance to behaviour-altering exploitation; this rule detects argument-vector injection that turns a read-only agent tool into command execution.
|
|
58
|
+
strength: primary
|
|
59
|
+
- article: '9'
|
|
60
|
+
context: Article 9 (risk management system) requires identified risks to be treated by appropriate measures; this rule is the runtime treatment for the tool-argument option-injection risk class.
|
|
61
|
+
strength: secondary
|
|
62
|
+
nist_ai_rmf:
|
|
63
|
+
- subcategory: MG.2.3
|
|
64
|
+
context: Option injection through model-controlled tool arguments is an identified AI risk requiring an active runtime countermeasure; this rule implements it.
|
|
65
|
+
strength: primary
|
|
66
|
+
- subcategory: MP.5.1
|
|
67
|
+
context: Cataloguing argument-vector injection into agent tools as a risk in the organizational AI risk register.
|
|
68
|
+
strength: secondary
|
|
69
|
+
iso_42001:
|
|
70
|
+
- clause: '8.1'
|
|
71
|
+
context: ISO/IEC 42001 Clause 8.1 (operational planning and control) is operationalised by validating that data-shaped tool arguments are not option flags.
|
|
72
|
+
strength: primary
|
|
73
|
+
- clause: '8.3'
|
|
74
|
+
context: ISO/IEC 42001 Clause 8.3 (AI risk treatment) is implemented by alerting on the executing-option operand.
|
|
75
|
+
strength: secondary
|
|
76
|
+
tags:
|
|
77
|
+
category: privilege-escalation
|
|
78
|
+
subcategory: tool-argument-option-injection
|
|
79
|
+
scan_target: agent
|
|
80
|
+
confidence: high
|
|
81
|
+
agent_source:
|
|
82
|
+
type: tool_call
|
|
83
|
+
framework:
|
|
84
|
+
- any
|
|
85
|
+
provider:
|
|
86
|
+
- any
|
|
87
|
+
detection:
|
|
88
|
+
condition: any
|
|
89
|
+
conditions:
|
|
90
|
+
- field: content
|
|
91
|
+
operator: regex
|
|
92
|
+
value: (?i)(?:["']?\b(?:arguments|parameters|tool_input|params|toolinput)["']?\s{0,3}[:=][\s\S]{0,300}?\\?["'](?:pattern|query|search_?term|search_?string|glob|regex|file_?path|file_?name|filename|path|dir|directory|target|source|input|output|args?)\\?["']\s{0,3}:\s{0,3}\\?["']--(?:pre|pre-glob|use-compress-program|rsh|to-command|output-document|remote-shell|checkpoint-action)=\s{0,3}["']?[./~$]{0,2}[\w./$-]{1,40}|[(,]\s{0,3}(?:pattern|query|search_?term|search_?string|glob|regex|file_?path|file_?name|filename|path|dir|directory|target|source|input|output|args?)\s{0,3}=\s{0,3}["']--(?:pre|pre-glob|use-compress-program|rsh|to-command|output-document|remote-shell|checkpoint-action)=\s{0,3}["']?[./~$]{0,2}[\w./$-]{1,40})
|
|
93
|
+
description: 'A data-shaped tool argument whose value is an executing CLI option with a real operand: ripgrep --pre=<prog>, tar --to-command=/--use-compress-program=/--checkpoint-action=exec=<cmd>, rsync --rsh=<shell>, wget --output-document=<path>. The operand requirement is what separates this from someone searching for the flag name itself.'
|
|
94
|
+
- field: content
|
|
95
|
+
operator: regex
|
|
96
|
+
value: (?i)(?:["']?\b(?:arguments|parameters|tool_input|params|toolinput)["']?\s{0,3}[:=][\s\S]{0,300}?\\?["'](?:pattern|query|glob|file_?path|filename|path|dir|directory|target|source|input|args?)\\?["']\s{0,3}:\s{0,3}\\?["']-e\s{1,3}(?:/bin/|\bsh\b|\bbash\b|ssh\s{1,3}-o)|[(,]\s{0,3}(?:pattern|query|glob|file_?path|filename|path|dir|directory|target|source|input|args?)\s{0,3}=\s{0,3}["']-e\s{1,3}(?:/bin/|\bsh\b|\bbash\b|ssh\s{1,3}-o))
|
|
97
|
+
description: rsync/scp -e supplied as a data argument, naming a shell (or ssh with an option) as the remote-shell program -- the classic argument-vector escape for file-transfer tools
|
|
98
|
+
false_positives:
|
|
99
|
+
- 'Searching a codebase for the flag itself, e.g. {"pattern": "--pre="} or rg -- ''--output-document'' -- the patterns require a real operand after the equals sign'
|
|
100
|
+
- A legitimate rsync invocation written as a command string rather than as a data argument, e.g. rsync -e 'ssh -p 2222' src host:/dst -- the -e condition requires the value to sit behind a data-shaped key such as path/pattern/filename
|
|
101
|
+
- tar --use-compress-program=pigz used deliberately by a build script as the compressor, when it is passed as the command itself and not as the value of a path/pattern argument
|
|
102
|
+
- Documentation describing ripgrep's --pre preprocessor feature in prose
|
|
103
|
+
response:
|
|
104
|
+
actions:
|
|
105
|
+
- alert
|
|
106
|
+
message_template: |
|
|
107
|
+
[ATR-2026-02683] A tool argument that should carry data (a search pattern, a path, an output name) instead carries a CLI option that executes a program. The underlying binary will run it. Reject the argument or pass it after an explicit -- terminator.
|
|
108
|
+
confidence: 82
|
package/rules/privilege-escalation/ATR-2026-02700-percent-encoded-path-traversal-tool-argument.yaml
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
title: Percent-Encoded Path Traversal in an Agent File-Tool Argument
|
|
2
|
+
id: ATR-2026-02700
|
|
3
|
+
rule_version: 1
|
|
4
|
+
status: experimental
|
|
5
|
+
description: |
|
|
6
|
+
Detects a tool-call argument whose value carries a repeated path-traversal sequence written in an ENCODED form -- %2e%2e, %252e%252e (double-encoded), or a literal `..` followed by an encoded separator %2f / %5c / %252f / %255c / %c0%af -- resolving toward a system or credential directory. Mined from CVE-2025-66689 (Zen MCP Server) and the CVE-2026-33344 / CVE-2026-27598 Dagu `locateDAG` pair, where the containment check compared the raw string against `../` while the framework percent-decoded the path afterwards, so the literal filter never saw the traversal it was written to stop. ATR already covers the encoded form on the llm_io side (ATR-2026-00569) and the LITERAL `../` form on tool_call (ATR-2026-01616), but neither combination covers an encoded payload arriving as a tool ARGUMENT: 00569 declares agent_source.type llm_io, so src/engine.ts never evaluates it on a tool_call event, and 01616's conditions are the literal `(?:\.\./){2,}` only. Verified on the shipped engine: `..%2f..%2f..%2fhome%2fanalyst%2f.ssh%2fid_rsa` as a tool_call matched no traversal rule at all, while the same target spelled `../../../home/analyst/.ssh/id_rsa` matched ten. This rule closes that one channel and is deliberately not vendor-scoped: the decode-after-check ordering bug is generic to agent file tools.
|
|
7
|
+
author: ATR Community (CVE sweep)
|
|
8
|
+
date: 2026/08/23
|
|
9
|
+
schema_version: '0.1'
|
|
10
|
+
detection_tier: pattern
|
|
11
|
+
maturity: test
|
|
12
|
+
severity: high
|
|
13
|
+
references:
|
|
14
|
+
cwe:
|
|
15
|
+
- CWE-22
|
|
16
|
+
- CWE-172
|
|
17
|
+
owasp_llm:
|
|
18
|
+
- LLM06:2025
|
|
19
|
+
owasp_agentic:
|
|
20
|
+
- ASI02:2026
|
|
21
|
+
mitre_attack:
|
|
22
|
+
- T1083 - File and Directory Discovery
|
|
23
|
+
mitre_atlas:
|
|
24
|
+
- AML.T0053 - LLM Plugin Compromise
|
|
25
|
+
cve:
|
|
26
|
+
- CVE-2025-66689
|
|
27
|
+
- CVE-2026-33344
|
|
28
|
+
external:
|
|
29
|
+
- https://nvd.nist.gov/vuln/detail/CVE-2025-66689
|
|
30
|
+
metadata_provenance:
|
|
31
|
+
cwe: human-reviewed
|
|
32
|
+
owasp_llm: human-reviewed
|
|
33
|
+
owasp_agentic: human-reviewed
|
|
34
|
+
mitre_attack: human-reviewed
|
|
35
|
+
mitre_atlas: human-reviewed
|
|
36
|
+
compliance:
|
|
37
|
+
eu_ai_act:
|
|
38
|
+
- article: '15'
|
|
39
|
+
context: Article 15 (accuracy, robustness and cybersecurity) requires resistance to unauthorised access to data held by the system; this rule detects an encoded path-traversal argument aimed at reading files outside the agent's authorised working directory.
|
|
40
|
+
strength: primary
|
|
41
|
+
- article: '9'
|
|
42
|
+
context: Article 9 (risk management system) requires identified risks to be addressed by appropriate measures; this rule is the runtime treatment for the encode-to-bypass-containment risk class in agent file tools.
|
|
43
|
+
strength: secondary
|
|
44
|
+
nist_ai_rmf:
|
|
45
|
+
- subcategory: MG.2.3
|
|
46
|
+
context: Encoded path traversal through an agent file tool is an identified AI risk requiring an active runtime countermeasure; this detection rule is that treatment.
|
|
47
|
+
strength: primary
|
|
48
|
+
- subcategory: MP.5.1
|
|
49
|
+
context: Cataloguing decode-after-validation containment bypass as an AI-specific risk in the organizational risk register.
|
|
50
|
+
strength: secondary
|
|
51
|
+
iso_42001:
|
|
52
|
+
- clause: '8.1'
|
|
53
|
+
context: ISO/IEC 42001 Clause 8.1 (operational planning and control) is operationalised by detecting encoded traversal in agent file-tool arguments before the read is performed.
|
|
54
|
+
strength: primary
|
|
55
|
+
- clause: '8.3'
|
|
56
|
+
context: ISO/IEC 42001 Clause 8.3 (AI risk treatment) is implemented through runtime detection of the containment-bypass attempt.
|
|
57
|
+
strength: secondary
|
|
58
|
+
tags:
|
|
59
|
+
category: privilege-escalation
|
|
60
|
+
subcategory: encoded-path-traversal-tool-argument
|
|
61
|
+
scan_target: runtime
|
|
62
|
+
confidence: high
|
|
63
|
+
agent_source:
|
|
64
|
+
type: tool_call
|
|
65
|
+
framework:
|
|
66
|
+
- any
|
|
67
|
+
provider:
|
|
68
|
+
- any
|
|
69
|
+
detection:
|
|
70
|
+
condition: any
|
|
71
|
+
conditions:
|
|
72
|
+
- field: tool_args
|
|
73
|
+
operator: regex
|
|
74
|
+
value: (?:^|[{,(\[])\s{0,3}["\x27]?(?:file_?path|filepath|filename|file|path|name|dest|destination|src|source|target|uri|url|dir|directory|key|object|blob|template|resource)["\x27]?\s{0,3}[:=]\s{0,3}["\x27](?:(?:%2e%2e|%252e%252e|\.\.)(?:%2f|%5c|%252f|%255c|%c0%af)){2,}[^"\x27\s]{0,24}(?:\.ssh|\.aws|\.env\b|\.npmrc|\.netrc|\.pgpass|\.htpasswd|\.kube|passwd\b|shadow\b|id_rsa|id_ed25519|id_ecdsa|authorized_keys|known_hosts|credentials\b|web\.config|boot\.ini|win\.ini|environ\b)
|
|
75
|
+
description: Two or more percent-encoded traversal segments forming the WHOLE value of a named file-path parameter, resolving onto a credential or system-configuration FILE
|
|
76
|
+
false_positives:
|
|
77
|
+
- 'MEASURED AND FIXED 2026-08-24 (adversarial review, 22 benign probes through the shipped engine). The published version fired on 12 of 13 first-wave probes. Its stated defence -- ''the rule is scoped to agent_source.type tool_call, which security prose does not travel through'' -- was simply wrong: write_file, create_issue and send_message are tool calls and they carry prose. These all fired and are now clean: an agent writing a blog post about CVE-2025-66689; an agent filing the vulnerability as a GitHub issue; a security regression test asserting the traversal is REJECTED; a nuclei scanner template; a CHANGELOG entry documenting the fix; a Traditional Chinese writeup; and a #secops chat message. Fixed by requiring the payload to be the whole value of a NAMED file-path parameter reached from an argument boundary, so a payload quoted inside a sentence no longer qualifies.'
|
|
78
|
+
- MEASURED AND FIXED 2026-08-24, same wave. The directory alternation had no word boundaries, so 'etc' matched inside 'sketch' and 'fetcher', 'var' inside 'variables', 'proc' inside 'process' and 'home' inside 'homepage'. Ordinary encoded relative paths such as ..%2f..%2fsrc%2fsketch.js and ..%2f..%2fstyles%2fvariables.css fired. Fixed with segment boundaries, then superseded by the change below.
|
|
79
|
+
- 'MEASURED AND FIXED 2026-08-24, second wave. With boundaries added, the bare directory names still fired on project-local folders that happen to be called var/, users/, home/, etc/ or proc/ -- ..%2f..%2fvar%2fcache%2ftwig (Symfony), ..%2f..%2fusers%2fguide.md (docs), ..%2f..%2fhome%2findex.html (pages) -- 7 of 9 probes. The bare directory alternation was therefore REMOVED: every one of this rule''s true positives and its evasion test already contains a credential-file token (.ssh, id_rsa, passwd, shadow, .aws, credentials), so the directory names contributed false positives and no recall.'
|
|
80
|
+
- A legitimate URL or storage key containing a single percent-encoded slash (S3 keys, GitHub branch refs such as release%2fv2). The condition needs two or more dot-dot-plus-separator segments, not merely an encoded slash.
|
|
81
|
+
- A relative path such as ../var/cache written with real slashes. The separator must itself be encoded for the condition to fire.
|
|
82
|
+
- 'STATED GAP: an encoded traversal onto a non-credential system file (etc%2fhosts, a project file two levels up) is no longer detected. That capability could not be kept without firing on ordinary project-local var/, users/ and home/ folders.'
|
|
83
|
+
- 'STATED GAP: a traversal arriving as a positional argument, or embedded partway through a longer URL value rather than starting it, is not detected.'
|
|
84
|
+
- 'RESIDUAL: prose that quotes the payload in the full JSON argument form ({"path":"..%2f..%2fetc%2fpasswd"}) still fires. That is a verbatim reproduction of the attack and is inherent to a byte-level signature.'
|
|
85
|
+
response:
|
|
86
|
+
actions:
|
|
87
|
+
- alert
|
|
88
|
+
message_template: |
|
|
89
|
+
[ATR-2026-02700] Tool-call argument carries a percent-encoded path traversal chain toward a system or credential directory -- the shape of a containment check that compares the raw string while the framework decodes it afterwards. Resolve the path fully before the containment check.
|
|
90
|
+
confidence: 80
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
title: Python Sandbox Escape by Recovering builtins from a Bound Method or Lambda
|
|
2
|
+
id: ATR-2026-02705
|
|
3
|
+
rule_version: 2
|
|
4
|
+
status: experimental
|
|
5
|
+
description: |
|
|
6
|
+
Detects recovery of the real Python `builtins` module from the `__self__` of a bound builtin (`print.__self__`) or the `__globals__` of a throwaway lambda (`(lambda: 0).__globals__`). Neither attribute begins with a blocked name and neither needs `__subclasses__`, so both slip past validators built around those two signals. Mined from GHSA-4mr5-g6f9-cfrh (PraisonAI `execute_code`). Verified on the shipped engine: `m = print.__self__; imp = vars(m)['__imp'+'ort__']` and `g = (lambda: 0).__globals__` produced zero matches, while the control payloads `().__class__.__base__.__subclasses__()` and `'{0.__class__...}'.format` fire ATR-2026-00440 and ATR-2026-00554. ATR-2026-02101 covers dynamic dunder assembly and ATR-2026-02145 covers generator and frame attributes -- different routes to the same place, neither of which sees these two. The advisory's third primitive, a `str` subclass whose `startswith` is redefined to answer unconditionally, was authored and then REMOVED: a condition for it fired on ordinary pytest doubles (`class AlwaysMatch(str): def startswith(self, p, *a): return True`), which are indistinguishable from the attack in local text. That primitive is reported as a null result rather than shipped as a noisy condition.
|
|
7
|
+
author: ATR Community (GHSA sweep)
|
|
8
|
+
date: 2026/08/23
|
|
9
|
+
schema_version: '0.1'
|
|
10
|
+
detection_tier: pattern
|
|
11
|
+
maturity: test
|
|
12
|
+
severity: high
|
|
13
|
+
references:
|
|
14
|
+
cwe:
|
|
15
|
+
- CWE-693
|
|
16
|
+
- CWE-913
|
|
17
|
+
owasp_llm:
|
|
18
|
+
- LLM05:2025
|
|
19
|
+
owasp_agentic:
|
|
20
|
+
- ASI06:2026
|
|
21
|
+
mitre_attack:
|
|
22
|
+
- T1059.006 - Python
|
|
23
|
+
mitre_atlas:
|
|
24
|
+
- AML.T0050 - Command and Scripting Interpreter
|
|
25
|
+
external:
|
|
26
|
+
- https://github.com/advisories/GHSA-4mr5-g6f9-cfrh
|
|
27
|
+
metadata_provenance:
|
|
28
|
+
cwe: human-reviewed
|
|
29
|
+
owasp_llm: human-reviewed
|
|
30
|
+
owasp_agentic: human-reviewed
|
|
31
|
+
mitre_attack: human-reviewed
|
|
32
|
+
mitre_atlas: human-reviewed
|
|
33
|
+
compliance:
|
|
34
|
+
eu_ai_act:
|
|
35
|
+
- article: '15'
|
|
36
|
+
context: Article 15 (accuracy, robustness and cybersecurity) requires resilience against attempts to subvert system controls; this rule detects code that recovers the Python builtins module or neutralises the validator inside a code-execution sandbox.
|
|
37
|
+
strength: primary
|
|
38
|
+
- article: '9'
|
|
39
|
+
context: Article 9 (risk management system) requires identified risks to be treated; this rule is the runtime treatment for sandbox-escape attempts in agent code execution.
|
|
40
|
+
strength: secondary
|
|
41
|
+
nist_ai_rmf:
|
|
42
|
+
- subcategory: MG.2.3
|
|
43
|
+
context: Sandbox escape from an agent code-execution tool is an identified AI risk requiring an active runtime countermeasure; this rule implements it.
|
|
44
|
+
strength: primary
|
|
45
|
+
- subcategory: MP.5.1
|
|
46
|
+
context: Cataloguing builtins-recovery and validator-override primitives as AI-specific execution risks in the organizational risk register.
|
|
47
|
+
strength: secondary
|
|
48
|
+
iso_42001:
|
|
49
|
+
- clause: '8.1'
|
|
50
|
+
context: ISO/IEC 42001 Clause 8.1 (operational planning and control) is operationalised by screening generated code for sandbox-escape primitives before execution.
|
|
51
|
+
strength: primary
|
|
52
|
+
- clause: '8.3'
|
|
53
|
+
context: ISO/IEC 42001 Clause 8.3 (AI risk treatment) is implemented through runtime detection of the escape primitive.
|
|
54
|
+
strength: secondary
|
|
55
|
+
tags:
|
|
56
|
+
category: privilege-escalation
|
|
57
|
+
subcategory: python-sandbox-escape-builtins-leak
|
|
58
|
+
scan_target: runtime
|
|
59
|
+
confidence: high
|
|
60
|
+
suppress_in_code_blocks: true
|
|
61
|
+
agent_source:
|
|
62
|
+
type: llm_io
|
|
63
|
+
framework:
|
|
64
|
+
- any
|
|
65
|
+
provider:
|
|
66
|
+
- any
|
|
67
|
+
detection:
|
|
68
|
+
condition: any
|
|
69
|
+
conditions:
|
|
70
|
+
- field: content
|
|
71
|
+
operator: regex
|
|
72
|
+
value: (?:(?:^|[^\w.])print\s{0,2}\.\s{0,2}__self__|\(\s{0,2}lambda\s{0,3}:[^)\r\n]{0,12}\)\s{0,2}\.\s{0,2}__globals__)[\s\S]{0,120}(?:vars\s{0,2}\(|getattr\s{0,2}\(|__builtins__|__import__|\[\s{0,2}["']__|\.\s{0,2}get\s{0,2}\(\s{0,2}["']|\beval\s{0,2}\(|\bexec\s{0,2}\(|\bcompile\s{0,2}\(|\bsystem\s{0,2}\(|\bpopen\s{0,2}\(|subprocess)
|
|
73
|
+
description: Recovery of the real builtins module through the __self__ of a bound builtin or the __globals__ of a throwaway lambda, followed within 120 characters by a USE of the recovered namespace -- vars(), a dunder subscript, __builtins__/__import__, getattr or a direct eval/exec/system call
|
|
74
|
+
false_positives:
|
|
75
|
+
- 'FIXED in rule_version 2 -- `print` WAS NOT REQUIRED TO BE THE BUILTIN. The condition opened with \bprint, and \b is satisfied by the dot in an attribute access, so ANY object with a print method fired on the standard bound-method idiom: console.print.__self__ is console (rich), writer.print.__self__ is writer, mock.print.__self__ is mock. __self__ is documented in the data model and asserting on it is ordinary test code. The condition now requires start-of-input or a character that is neither a word character nor a dot before print.'
|
|
76
|
+
- 'FIXED in rule_version 2 -- RECOVERY ALONE IS WHAT DOCUMENTATION SHOWS; THE ATTACK CHAINS IT. The condition stopped at the attribute, so it fired on writing that merely NAMES the attribute. Eight measured FPs, and five of them carry no security framing at all: a Python tutorial explaining that (lambda: 0).__globals__ is the same dict as globals(), the same lesson in Traditional Chinese, a note that print.__self__ is builtins, a CPython-behaviour test asserting both, and a helper using (lambda: None).__globals__ to reach its defining module. The other three were an advisory paragraph, a hardening CHANGELOG and the project''s own parametrised regression test listing the payloads as strings. The condition now requires a USE of the recovered namespace within 120 characters -- vars(), a dunder subscript, __builtins__/__import__, getattr, or a direct eval/exec/compile/system/popen call. All fourteen benign probes are silent; all four true positives and the evasion test still fire.'
|
|
77
|
+
- 'RECALL COST, STATED PLAINLY: bare recovery with no subsequent use is no longer detected. Two true positives were bare (b = print . __self__) and were extended with their exploitation step, because bare recovery is exactly the shape a tutorial has and does nothing on its own -- every published PoC for GHSA-4mr5-g6f9-cfrh chains it immediately. The whitespace-padding property those cases existed to test is preserved in the extended spellings.'
|
|
78
|
+
- 'tags.suppress_in_code_blocks was added in rule_version 2: a fenced security article printing the payload fired before it and is silent after. No true positive is fenced.'
|
|
79
|
+
- 'A str subclass that stubs startswith. Deliberately NOT matched: a condition for it was written, measured against pytest-style doubles, found to fire on them, and removed.'
|
|
80
|
+
- 'A lambda whose result is inspected for debugging (`(lambda: 0).__code__`, `.__name__`, `.__qualname__`), none of which is __globals__.'
|
|
81
|
+
- Frame and generator introspection (gi_frame.f_back, cr_frame.f_globals), deliberately left to ATR-2026-02145 rather than duplicated here.
|
|
82
|
+
response:
|
|
83
|
+
actions:
|
|
84
|
+
- alert
|
|
85
|
+
message_template: |
|
|
86
|
+
[ATR-2026-02705] Generated Python recovers the builtins module through a bound-method or lambda attribute, or redefines startswith to defeat an attribute-name check. Treat the code-execution sandbox as bypassed.
|
|
87
|
+
confidence: 80
|
package/rules/privilege-escalation/ATR-2026-02708-loopback-spoofed-host-header-external-request.yaml
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
title: Agent HTTP Request Claims a Loopback Origin While Targeting an External Host
|
|
2
|
+
id: ATR-2026-02708
|
|
3
|
+
rule_version: 2
|
|
4
|
+
status: experimental
|
|
5
|
+
description: |
|
|
6
|
+
Detects an agent HTTP tool call that sends a request to a NAMED external host while declaring a loopback origin in a header the server is likely to trust -- `Host: 127.0.0.1`, `X-Forwarded-For: 127.0.0.1`, `X-Real-IP: localhost`, `X-Originating-IP: ::1`. Mined from CVE-2026-61435 (PraisonAI), whose bind-host authorization check derived "is this request local?" from `request.url.hostname`, i.e. from the Host header the caller supplies, so an internet-reachable deployment granted localhost-only privileges to anyone who asked for them. Verified on the shipped engine: two payload forms across all five event types matched nothing, and a grep of rules/ finds no Host/X-Forwarded-For spoofing rule at all. RULE_VERSION 2, after adversarial review fired version 1 on 6 of 22 benign probes. Three constraints were added, each forced by a probe. (1) THE CALL MUST BE REQUEST-ISSUING. Version 1 checked only the argument text, so an agent writing a penetration-test note through write_file -- `ffuf -u https://target.example/admin -H "X-Forwarded-For: 127.0.0.1"` -- matched, because the payload was in the file body. Code-block suppression, which version 1 relied on for exactly this sample, only helps when the example is fenced, and a note file is not. (2) `host` NEEDS A REAL HEADER CONTEXT. Version 1 accepted any QUOTED key named host, and its false-positive note claimed configuration files were excluded by that quoting requirement. They are not: JSON quotes its keys, so `{"tool":"db_query","arguments":{"host":"localhost","schema_url":"https://schemas.corp.example/..."}}` matched. `host` now requires -H, --header, a headers object, or an HTTP wire line. The `x-*` names keep the looser form, since nothing else is called x-forwarded-for. (3) THE TWO HALVES MUST BE ADJACENT AND IN THE SAME STATEMENT. Version 1 only asked that both appear somewhere in the arguments, so `curl -H 'Host: localhost' http://127.0.0.1:8080/health; curl https://status.corp.example/ping` satisfied them from two different commands. The gap is now 120 characters with no `;`, no newline, no `://`, no pipe and no `&` -- the last four because every remaining false positive was a loopback header attached to a LOOPBACK request, with an unrelated external URL in a trailing comment, an echo, or the other half of a pipeline. The pairing remains the precision handle: a request TO 127.0.0.1 carrying a virtual-host `Host:` header is ordinary local testing and does not match, because the external-URL condition demands a hostname ending in an alphabetic TLD, which no dotted-quad or bare `localhost` target satisfies.
|
|
7
|
+
author: ATR Community (CVE sweep)
|
|
8
|
+
date: 2026/08/23
|
|
9
|
+
schema_version: '0.1'
|
|
10
|
+
detection_tier: pattern
|
|
11
|
+
maturity: test
|
|
12
|
+
severity: high
|
|
13
|
+
references:
|
|
14
|
+
cwe:
|
|
15
|
+
- CWE-290
|
|
16
|
+
- CWE-350
|
|
17
|
+
owasp_llm:
|
|
18
|
+
- LLM06:2025
|
|
19
|
+
owasp_agentic:
|
|
20
|
+
- ASI06:2026
|
|
21
|
+
mitre_attack:
|
|
22
|
+
- T1078 - Valid Accounts
|
|
23
|
+
mitre_atlas:
|
|
24
|
+
- AML.T0053 - LLM Plugin Compromise
|
|
25
|
+
cve:
|
|
26
|
+
- CVE-2026-61435
|
|
27
|
+
external:
|
|
28
|
+
- https://nvd.nist.gov/vuln/detail/CVE-2026-61435
|
|
29
|
+
metadata_provenance:
|
|
30
|
+
cwe: human-reviewed
|
|
31
|
+
owasp_llm: human-reviewed
|
|
32
|
+
owasp_agentic: human-reviewed
|
|
33
|
+
mitre_attack: human-reviewed
|
|
34
|
+
mitre_atlas: human-reviewed
|
|
35
|
+
compliance:
|
|
36
|
+
eu_ai_act:
|
|
37
|
+
- article: '15'
|
|
38
|
+
context: Article 15 (accuracy, robustness and cybersecurity) requires resistance to unauthorised use; this rule detects an agent request forging a loopback origin to satisfy a localhost-only authorization check on a remote service.
|
|
39
|
+
strength: primary
|
|
40
|
+
- article: '9'
|
|
41
|
+
context: Article 9 (risk management system) requires identified risks to be treated; this rule is the runtime treatment for header-derived trust decisions in agent-reachable services.
|
|
42
|
+
strength: secondary
|
|
43
|
+
nist_ai_rmf:
|
|
44
|
+
- subcategory: MG.2.3
|
|
45
|
+
context: Authorization bypass via a spoofed origin header is an identified AI risk requiring an active runtime countermeasure; this rule implements it.
|
|
46
|
+
strength: primary
|
|
47
|
+
- subcategory: MP.5.1
|
|
48
|
+
context: Cataloguing caller-controlled origin headers as an AI-specific authorization risk in the organizational risk register.
|
|
49
|
+
strength: secondary
|
|
50
|
+
iso_42001:
|
|
51
|
+
- clause: '8.1'
|
|
52
|
+
context: ISO/IEC 42001 Clause 8.1 (operational planning and control) is operationalised by detecting forged origin headers before the request is issued.
|
|
53
|
+
strength: primary
|
|
54
|
+
- clause: '8.3'
|
|
55
|
+
context: ISO/IEC 42001 Clause 8.3 (AI risk treatment) is implemented through runtime detection of the spoofed header.
|
|
56
|
+
strength: secondary
|
|
57
|
+
tags:
|
|
58
|
+
category: privilege-escalation
|
|
59
|
+
subcategory: forged-loopback-origin-header
|
|
60
|
+
scan_target: runtime
|
|
61
|
+
confidence: high
|
|
62
|
+
suppress_in_code_blocks: true
|
|
63
|
+
agent_source:
|
|
64
|
+
type: tool_call
|
|
65
|
+
framework:
|
|
66
|
+
- any
|
|
67
|
+
provider:
|
|
68
|
+
- any
|
|
69
|
+
detection:
|
|
70
|
+
condition: all
|
|
71
|
+
conditions:
|
|
72
|
+
- field: tool_args
|
|
73
|
+
operator: regex
|
|
74
|
+
value: (?:["\x27](?:tool|tool_name|toolName|name|function|mcp_tool)["\x27]\s{0,3}:\s{0,3}["\x27][\w.\-]{0,40}(?:http|curl|wget|fetch|request|req|api|webhook|url|browse|axios|httpx)[\w.\-]{0,20}["\x27]|["\x27](?:command|cmd|script|shell|args|argv)["\x27]\s{0,3}:\s{0,3}[\s\S]{0,20}\b(?:curl|wget|httpie|\bxh\b|invoke-webrequest)\b)
|
|
75
|
+
description: The call is issued by an HTTP-request tool, or by a shell tool running an HTTP client
|
|
76
|
+
- field: tool_args
|
|
77
|
+
operator: regex
|
|
78
|
+
value: (?:https?://[a-z0-9-]{2,30}(?:\.[a-z0-9-]{1,30}){0,4}\.[a-z]{2,12}(?:[:/?"\x27]|\s|$)(?:[^:;\n|&]|:[^/;\n|&]|:/[^/;\n|&]){0,120}(?:(?:-H\s{1,3}["\x27]?|--header\s{1,3}["\x27]?|\bheaders?\b["\x27]?\s{0,3}[:=]?\s{0,3}[{(\[]?\s{0,3}["\x27]?)host["\x27]?\s{0,3}[:=]\s{0,3}["\x27]?\s{0,2}(?:127\.\d{1,3}\.\d{1,3}\.\d{1,3}|localhost|\[?::1\]?|0\.0\.0\.0)\b|(?:^|[\r\n])\s{0,3}host["\x27]?\s{0,3}[:=]\s{0,3}["\x27]?\s{0,2}(?:127\.\d{1,3}\.\d{1,3}\.\d{1,3}|localhost|\[?::1\]?|0\.0\.0\.0)\b|(?:["\x27]|(?:-H\s{1,3}["\x27]?|--header\s{1,3}["\x27]?|\bheaders?\b["\x27]?\s{0,3}[:=]?\s{0,3}[{(\[]?\s{0,3}["\x27]?))(?:x-forwarded-for|x-real-ip|x-originating-ip|x-client-ip|x-forwarded-host)["\x27]?\s{0,3}[:=]\s{0,3}["\x27]?\s{0,2}(?:127\.\d{1,3}\.\d{1,3}\.\d{1,3}|localhost|\[?::1\]?|0\.0\.0\.0)\b)|(?:(?:-H\s{1,3}["\x27]?|--header\s{1,3}["\x27]?|\bheaders?\b["\x27]?\s{0,3}[:=]?\s{0,3}[{(\[]?\s{0,3}["\x27]?)host["\x27]?\s{0,3}[:=]\s{0,3}["\x27]?\s{0,2}(?:127\.\d{1,3}\.\d{1,3}\.\d{1,3}|localhost|\[?::1\]?|0\.0\.0\.0)\b|(?:^|[\r\n])\s{0,3}host["\x27]?\s{0,3}[:=]\s{0,3}["\x27]?\s{0,2}(?:127\.\d{1,3}\.\d{1,3}\.\d{1,3}|localhost|\[?::1\]?|0\.0\.0\.0)\b|(?:["\x27]|(?:-H\s{1,3}["\x27]?|--header\s{1,3}["\x27]?|\bheaders?\b["\x27]?\s{0,3}[:=]?\s{0,3}[{(\[]?\s{0,3}["\x27]?))(?:x-forwarded-for|x-real-ip|x-originating-ip|x-client-ip|x-forwarded-host)["\x27]?\s{0,3}[:=]\s{0,3}["\x27]?\s{0,2}(?:127\.\d{1,3}\.\d{1,3}\.\d{1,3}|localhost|\[?::1\]?|0\.0\.0\.0)\b)(?:[^:;\n|&]|:[^/;\n|&]|:/[^/;\n|&]){0,120}https?://[a-z0-9-]{2,30}(?:\.[a-z0-9-]{1,30}){0,4}\.[a-z]{2,12}(?:[:/?"\x27]|\s|$))
|
|
79
|
+
description: A named external host and a loopback-valued origin header, adjacent and in the same statement
|
|
80
|
+
false_positives:
|
|
81
|
+
- 'A deliberate penetration test replaying a webhook with X-Forwarded-For: 127.0.0.1 against a staging host. This matches, and matching is correct: the act being performed is the bypass, whoever is performing it.'
|
|
82
|
+
- 'Local virtual-host testing (`curl -H ''Host: app.example.com'' http://127.0.0.1:8080/`), where the loopback address is the TARGET and the header carries a real name. Neither half matches.'
|
|
83
|
+
- A reverse-proxy configuration using `proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for`, since the value is a variable rather than a loopback literal.
|
|
84
|
+
- Configuration that binds a service locally while naming a remote API -- `{"host":"localhost"}` beside `https://api.corp.example`, `- HOST=0.0.0.0` in a compose file, a local debugging proxy on a request to an external API. All of these FIRED version 1; `host` now needs a real header context.
|
|
85
|
+
- Security-tool documentation whose examples contain the payload, fenced or not. The rule now also requires the call itself to be request-issuing, so writing the ffuf line into a notes file does not match.
|
|
86
|
+
response:
|
|
87
|
+
actions:
|
|
88
|
+
- alert
|
|
89
|
+
message_template: |
|
|
90
|
+
[ATR-2026-02708] Agent request targets a named external host while declaring a loopback origin (Host / X-Forwarded-For / X-Real-IP). Derive locality from the socket, never from a caller-supplied header.
|
|
91
|
+
confidence: 80
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
title: Dot-Dot Path Segment Inside an Identifier-Typed Tool Argument (REST-Wrapper Path Traversal)
|
|
2
|
+
id: ATR-2026-02867
|
|
3
|
+
rule_version: 1
|
|
4
|
+
status: experimental
|
|
5
|
+
description: |
|
|
6
|
+
Detects a tool-call argument whose KEY says it is an opaque identifier (product_number, licensee_number, customer_id, order_no, user_uuid, productNumber, productId, ...) but whose VALUE carries a dot-dot path segment: a '..' (or %2e%2e, .%2e, %2e.) that starts the value or follows a separator, and is itself followed by a separator ('/', '\', %2f, %5c) or by the end of the value.
|
|
7
|
+
This is the shape of CVE-2026-57496 / GHSA-hxpf-9xvq-wph8 in the NetLicensing MCP Server (< 0.1.8): netlicensing_get_product interpolated the caller-controlled product_number into the REST path /product/{product_number}. A single product_number of "../token" is normalised by httpx from /product/../token to /token, the response is serialised through the ordinary wrapper instead of the token-redacting one, and the raw API token is returned to the agent. The fix (commit b8fd0ea) added a path-segment validator that rejects '..', '..%2f', '%2e%2e/', backslashes and encoded separators.
|
|
8
|
+
The rule is deliberately not vendor-scoped. Any MCP server that wraps a REST API by formatting identifier arguments into a URL path has the same bug class, and an identifier never legitimately contains a dot-dot path segment. It keys on the identifier-typed argument name rather than on the tool name or on the '/token' target, so it also fires on licensee_number, a camelCase productNumber, a bare '..' (which walks to the API root) or an encoded separator.
|
|
9
|
+
Why a new rule rather than relying on existing ones (measured 2026-10-22 on origin/main 69f7f2809 with tool_call and mcp_exchange events whose tool_args is the JSON-encoded argument object): the GHSA PoC {"product_number":"../token"}, "%2e%2e/token", "..\\token" and {"licensee_number":"../token"} matched no rule. ATR-2026-01948 targets this exact CVE but its key regexes expect product_number to be followed directly by ':' or '=', so the closing JSON quote of a real tool_args key defeats it; ATR-2026-02251 / 02353 have the same key-quote gap and list only *_id fields. ATR-2026-00569 catches only the '..%2f' encoding and ATR-2026-00066 / 01616 need two or more '../' levels, while one level is enough against a REST path.
|
|
10
|
+
Related rule: ATR-2026-01948 (context-exfiltration) is the vendor-specific rule for this same CVE. This rule is the generalised identifier-argument form; keep the two cross-referenced when either is merged, narrowed or retired.
|
|
11
|
+
Scope and limits. Only JSON double-quoted keys are read ("key": "value"), so a JSON-escaped snippet quoted inside another argument (an agent writing an advisory) does not match. Path-typed keys (path, file, dir, url, key, object_key) are intentionally out of scope - they are covered by the file-path traversal rules - so a traversal smuggled through a key with a non-identifier name (sku, name, product) is not detected here. *_code keys are also out of scope: source_code / python_code / shell_code usually hold free-form program text in which '/../' is ordinary, so product_code / promo_code identifiers are an accepted gap. Plural keys (product_numbers) and array values are not read, and a Tomcat-style path parameter ('..;/token') is not in the separator set. Keys that only END in "id" are matched case-insensitively, so a non-identifier key such as "valid" or "android" holding a dot-dot segment would also match, and identifier keys that legitimately carry a relative path (model_id, doc_id, folder_id) will match as well. CWE-22, CWE-23.
|
|
12
|
+
author: ATR Community (CVE sync)
|
|
13
|
+
date: 2026/10/22
|
|
14
|
+
schema_version: '0.1'
|
|
15
|
+
detection_tier: pattern
|
|
16
|
+
maturity: test
|
|
17
|
+
severity: high
|
|
18
|
+
references:
|
|
19
|
+
cve:
|
|
20
|
+
- CVE-2026-57496
|
|
21
|
+
ghsa:
|
|
22
|
+
- GHSA-hxpf-9xvq-wph8
|
|
23
|
+
cwe:
|
|
24
|
+
- CWE-22
|
|
25
|
+
- CWE-23
|
|
26
|
+
owasp_llm:
|
|
27
|
+
- LLM06:2025
|
|
28
|
+
owasp_agentic:
|
|
29
|
+
- ASI03:2026
|
|
30
|
+
- ASI02:2026
|
|
31
|
+
mitre_atlas:
|
|
32
|
+
- AML.T0053 - AI Agent Tool Invocation
|
|
33
|
+
- AML.T0055 - Unsecured Credentials
|
|
34
|
+
mitre_attack:
|
|
35
|
+
- T1552 - Unsecured Credentials
|
|
36
|
+
external:
|
|
37
|
+
- https://github.com/Labs64/NetLicensing-MCP/security/advisories/GHSA-hxpf-9xvq-wph8
|
|
38
|
+
- https://github.com/Labs64/NetLicensing-MCP/commit/b8fd0ea76d533202573eb24add9fb2fbd9331496
|
|
39
|
+
- https://nvd.nist.gov/vuln/detail/CVE-2026-57496
|
|
40
|
+
metadata_provenance:
|
|
41
|
+
cve: human-reviewed
|
|
42
|
+
cwe: human-reviewed
|
|
43
|
+
owasp_llm: human-reviewed
|
|
44
|
+
owasp_agentic: human-reviewed
|
|
45
|
+
mitre_atlas: human-reviewed
|
|
46
|
+
mitre_attack: human-reviewed
|
|
47
|
+
compliance:
|
|
48
|
+
eu_ai_act:
|
|
49
|
+
- article: '15'
|
|
50
|
+
context: Article 15 (accuracy, robustness and cybersecurity) requires resilience against attempts to exploit system vulnerabilities; this rule provides detection evidence supporting that requirement by flagging an identifier argument that steers an MCP server's REST request onto an unintended endpoint such as /token.
|
|
51
|
+
strength: primary
|
|
52
|
+
- article: '14'
|
|
53
|
+
context: Article 14 (human oversight) needs operators to be able to see and interrupt anomalous agent actions; an alert on a traversal-bearing identifier argument provides detection evidence supporting oversight of tool calls that would otherwise silently return credentials to the model.
|
|
54
|
+
strength: secondary
|
|
55
|
+
nist_ai_rmf:
|
|
56
|
+
- subcategory: MS.2.7
|
|
57
|
+
context: MEASURE 2.7 requires AI system security and resilience to be evaluated; inspecting identifier-typed tool arguments for dot-dot path segments is a per-invocation measurement of the agent-to-tool boundary rather than an assumption that each MCP server validates its own path segments.
|
|
58
|
+
strength: primary
|
|
59
|
+
- subcategory: MG.2.3
|
|
60
|
+
context: MANAGE 2.3 requires procedures to respond to and recover from identified AI risks; this rule is the runtime trigger for responding to a privilege-escalating path traversal through an agent tool argument.
|
|
61
|
+
strength: secondary
|
|
62
|
+
iso_42001:
|
|
63
|
+
- clause: '8.1'
|
|
64
|
+
context: Clause 8.1 operational planning and control covers externally provided processes such as third-party MCP servers; this rule is an operational control applied to each tool invocation independent of the server's own input validation.
|
|
65
|
+
strength: primary
|
|
66
|
+
- clause: '6.2'
|
|
67
|
+
context: Clause 6.2 AI objectives and planning to achieve them include keeping credentials out of model context; detecting the traversal that reroutes a lookup onto a token endpoint supports that objective.
|
|
68
|
+
strength: secondary
|
|
69
|
+
tags:
|
|
70
|
+
category: privilege-escalation
|
|
71
|
+
subcategory: identifier-argument-path-traversal
|
|
72
|
+
scan_target: tool_args
|
|
73
|
+
confidence: medium
|
|
74
|
+
source: cve-disclosure
|
|
75
|
+
vendor_sources: netlicensing-mcp-cve-2026-57496
|
|
76
|
+
suppress_in_code_blocks: true
|
|
77
|
+
agent_source:
|
|
78
|
+
type: tool_call
|
|
79
|
+
framework:
|
|
80
|
+
- mcp
|
|
81
|
+
- any
|
|
82
|
+
provider:
|
|
83
|
+
- any
|
|
84
|
+
detection:
|
|
85
|
+
condition: any
|
|
86
|
+
method: pattern
|
|
87
|
+
false_positives:
|
|
88
|
+
- 'A tool whose API genuinely uses ''..'' as an identifier, for example a filesystem-browser tool that addresses the parent entry as {"entry_id": ".."}. Such an argument is itself a traversal and will match.'
|
|
89
|
+
- Security test fixtures and CVE reproductions that pass the traversal payload through a real tool call match by design.
|
|
90
|
+
- Keys that end in 'id' are matched case-insensitively (the engine compiles this condition format with flag 'i'), so a non-identifier key such as 'valid' or 'android' holding a dot-dot segment would also match.
|
|
91
|
+
- 'Identifier-named keys that legitimately hold a relative filesystem path will match: a Hugging Face from_pretrained-style local checkpoint {"model_id": "../checkpoints/llama-ft"}, a RAG or document tool that uses the file path as the document id {"doc_id": "docs/../README.md"}, or a folder-navigation tool addressing the parent folder {"folder_id": ".."}. These are indistinguishable from the traversal by value alone; suppress per tool when the target server resolves such ids against a sandboxed root.'
|
|
92
|
+
conditions:
|
|
93
|
+
- field: tool_args
|
|
94
|
+
operator: regex
|
|
95
|
+
value: '"(?:[a-z0-9_-]{0,40}[_-](?:id|number|num|no|nr|uuid|guid|slug)|[a-z0-9]{1,40}(?:number|uuid|guid|id)|id|number|uuid|guid|slug)"\s{0,3}:\s{0,3}"(?:[^"\n]{0,120}?(?:/|\\|%2f|%5c))?(?:\.\.|%2e%2e|\.%2e|%2e\.|%252e%252e)(?:/|\\|%2f|%5c|%252f|%255c|")'
|
|
96
|
+
description: An identifier-typed JSON argument (snake_case *_id/*_number/*_no/*_uuid/*_slug, camelCase *Number/*Id/*Uuid, or a bare id/number key; *_code keys excluded because they usually carry program text) whose value contains a dot-dot path segment - at the start of the value or after a separator, followed by a separator or the end of the value - literal or percent-encoded
|
|
97
|
+
response:
|
|
98
|
+
actions:
|
|
99
|
+
- alert
|
|
100
|
+
- snapshot
|
|
101
|
+
actions_rationale: 'response-action eligibility (docs/RESPONSE-ACTION-ELIGIBILITY.md): new CVE-derived candidate without a benign-corpus FP measurement beyond the CI gate; ceiling = observe.'
|
|
102
|
+
notify:
|
|
103
|
+
- security_team
|
|
104
|
+
message_template: |
|
|
105
|
+
[ATR-2026-02867] HIGH: an identifier-typed tool argument contains a dot-dot path segment. Opaque IDs never contain '..'; when an MCP server formats the ID into a REST path, the segment is normalised away and the request lands on a different endpoint (CVE-2026-57496: product_number "../token" reached /token and leaked the API token). Check whether the target server validates path segments before building URLs.
|
|
106
|
+
confidence: 72
|