agent-threat-rules 1.2.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -30
- package/dist/cli.js +0 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +80 -35
- package/dist/engine.js.map +1 -1
- package/dist/quality/quality-gate.d.ts +26 -8
- package/dist/quality/quality-gate.d.ts.map +1 -1
- package/dist/quality/quality-gate.js +59 -12
- package/dist/quality/quality-gate.js.map +1 -1
- package/dist/tc-reporter.js +1 -1
- package/dist/tc-reporter.js.map +1 -1
- package/package.json +1 -1
- package/rules/agent-manipulation/ATR-2026-00032-goal-hijacking.yaml +106 -55
- package/rules/agent-manipulation/ATR-2026-00074-cross-agent-privilege-escalation.yaml +94 -55
- package/rules/agent-manipulation/ATR-2026-00076-inter-agent-message-spoofing.yaml +89 -65
- package/rules/agent-manipulation/ATR-2026-00077-human-trust-exploitation.yaml +102 -66
- package/rules/agent-manipulation/ATR-2026-00108-consensus-sybil-attack.yaml +78 -42
- package/rules/agent-manipulation/ATR-2026-00116-a2a-message-validation.yaml +72 -35
- package/rules/agent-manipulation/ATR-2026-00117-agent-identity-spoofing.yaml +82 -38
- package/rules/agent-manipulation/ATR-2026-00118-approval-fatigue.yaml +80 -43
- package/rules/agent-manipulation/ATR-2026-00119-social-engineering-via-agent.yaml +88 -42
- package/rules/agent-manipulation/ATR-2026-00132-casual-authority-escalation.yaml +84 -55
- package/rules/agent-manipulation/ATR-2026-00139-casual-authority-redirect.yaml +88 -23
- package/rules/agent-manipulation/ATR-2026-00164-skill-scope-hijack.yaml +72 -0
- package/rules/context-exfiltration/ATR-2026-00075-agent-memory-manipulation.yaml +80 -53
- package/rules/context-exfiltration/ATR-2026-00102-disguised-analytics-exfiltration.yaml +86 -29
- package/rules/context-exfiltration/ATR-2026-00113-credential-theft.yaml +73 -43
- package/rules/context-exfiltration/ATR-2026-00114-oauth-token-abuse.yaml +80 -43
- package/rules/context-exfiltration/ATR-2026-00115-env-var-harvesting.yaml +92 -44
- package/rules/context-exfiltration/ATR-2026-00136-tool-response-data-piggyback.yaml +76 -46
- package/rules/context-exfiltration/ATR-2026-00141-example-format-key-leak.yaml +68 -21
- package/rules/context-exfiltration/ATR-2026-00142-piggyback-transition-words.yaml +81 -21
- package/rules/context-exfiltration/ATR-2026-00145-obfuscated-key-disclosure.yaml +70 -19
- package/rules/context-exfiltration/ATR-2026-00146-env-var-existence-probe.yaml +88 -21
- package/rules/context-exfiltration/ATR-2026-00150-credential-in-tool-response.yaml +67 -43
- package/rules/context-exfiltration/ATR-2026-00152-obfuscated-credential-leak.yaml +81 -39
- package/rules/context-exfiltration/ATR-2026-00162-skill-credential-exfil-combo.yaml +73 -0
- package/rules/data-poisoning/ATR-2026-00070-data-poisoning.yaml +118 -73
- package/rules/excessive-autonomy/ATR-2026-00050-runaway-agent-loop.yaml +96 -56
- package/rules/excessive-autonomy/ATR-2026-00051-resource-exhaustion.yaml +94 -59
- package/rules/excessive-autonomy/ATR-2026-00052-cascading-failure.yaml +112 -71
- package/rules/excessive-autonomy/ATR-2026-00098-unauthorized-financial-action.yaml +84 -63
- package/rules/excessive-autonomy/ATR-2026-00099-high-risk-tool-gate.yaml +88 -64
- package/rules/model-security/ATR-2026-00072-model-behavior-extraction.yaml +93 -55
- package/rules/model-security/ATR-2026-00073-malicious-finetuning-data.yaml +100 -52
- package/rules/privilege-escalation/ATR-2026-00040-privilege-escalation.yaml +81 -80
- package/rules/privilege-escalation/ATR-2026-00041-scope-creep.yaml +100 -52
- package/rules/privilege-escalation/ATR-2026-00107-delayed-execution-bypass.yaml +82 -26
- package/rules/privilege-escalation/ATR-2026-00110-eval-injection.yaml +85 -45
- package/rules/privilege-escalation/ATR-2026-00111-shell-escape.yaml +101 -45
- package/rules/privilege-escalation/ATR-2026-00112-dynamic-import-exploitation.yaml +81 -43
- package/rules/privilege-escalation/ATR-2026-00143-casual-privilege-escalation.yaml +80 -23
- package/rules/privilege-escalation/ATR-2026-00144-rationalized-safety-bypass.yaml +74 -21
- package/rules/prompt-injection/ATR-2026-00004-system-prompt-override.yaml +149 -153
- package/rules/prompt-injection/ATR-2026-00080-encoding-evasion.yaml +75 -40
- package/rules/prompt-injection/ATR-2026-00081-semantic-multi-turn.yaml +78 -35
- package/rules/prompt-injection/ATR-2026-00082-fingerprint-evasion.yaml +68 -38
- package/rules/prompt-injection/ATR-2026-00083-indirect-tool-injection.yaml +74 -37
- package/rules/prompt-injection/ATR-2026-00085-audit-evasion.yaml +69 -38
- package/rules/prompt-injection/ATR-2026-00086-visual-spoofing.yaml +69 -36
- package/rules/prompt-injection/ATR-2026-00087-rule-probing.yaml +76 -39
- package/rules/prompt-injection/ATR-2026-00088-adaptive-countermeasure.yaml +74 -38
- package/rules/prompt-injection/ATR-2026-00089-polymorphic-skill.yaml +75 -40
- package/rules/prompt-injection/ATR-2026-00090-threat-intel-exfil.yaml +83 -38
- package/rules/prompt-injection/ATR-2026-00091-nested-payload.yaml +70 -36
- package/rules/prompt-injection/ATR-2026-00092-consensus-poisoning.yaml +77 -41
- package/rules/prompt-injection/ATR-2026-00093-gradual-escalation.yaml +76 -40
- package/rules/prompt-injection/ATR-2026-00094-audit-bypass.yaml +71 -39
- package/rules/prompt-injection/ATR-2026-00097-cjk-injection-patterns.yaml +122 -132
- package/rules/prompt-injection/ATR-2026-00104-persona-hijacking.yaml +91 -26
- package/rules/prompt-injection/ATR-2026-00130-indirect-authority-claim.yaml +74 -49
- package/rules/prompt-injection/ATR-2026-00131-fictional-academic-framing.yaml +69 -49
- package/rules/prompt-injection/ATR-2026-00133-paraphrase-injection.yaml +74 -61
- package/rules/prompt-injection/ATR-2026-00137-authority-claim-injection.yaml +76 -19
- package/rules/prompt-injection/ATR-2026-00138-fictional-framing-bypass.yaml +101 -21
- package/rules/prompt-injection/ATR-2026-00140-indirect-reference-reversal.yaml +69 -22
- package/rules/prompt-injection/ATR-2026-00148-language-switch-injection.yaml +77 -26
- package/rules/prompt-injection/ATR-2026-00153-tool-with-embedded-instruction-to-bypass.yaml +93 -23
- package/rules/prompt-injection/ATR-2026-00154-unauthorized-background-task-execution-v.yaml +102 -23
- package/rules/prompt-injection/ATR-2026-00155-hidden-llm-instructions-in-skill-descrip.yaml +96 -22
- package/rules/prompt-injection/ATR-2026-00156-ssh-remote-command-execution-with-creden.yaml +78 -23
- package/rules/prompt-injection/ATR-2026-00163-skill-hidden-override-instruction.yaml +77 -0
- package/rules/skill-compromise/ATR-2026-00060-skill-impersonation.yaml +72 -67
- package/rules/skill-compromise/ATR-2026-00120-skill-instruction-injection.yaml +111 -65
- package/rules/skill-compromise/ATR-2026-00121-skill-dangerous-script.yaml +115 -98
- package/rules/skill-compromise/ATR-2026-00122-skill-weaponized-instruction.yaml +118 -62
- package/rules/skill-compromise/ATR-2026-00123-skill-overreach-permissions.yaml +86 -64
- package/rules/skill-compromise/ATR-2026-00124-skill-name-squatting.yaml +55 -8
- package/rules/skill-compromise/ATR-2026-00125-context-poisoning-compaction.yaml +85 -43
- package/rules/skill-compromise/ATR-2026-00126-skill-rug-pull-setup.yaml +74 -45
- package/rules/skill-compromise/ATR-2026-00127-subcommand-overflow.yaml +46 -6
- package/rules/skill-compromise/ATR-2026-00128-html-comment-hidden-payload.yaml +131 -33
- package/rules/skill-compromise/ATR-2026-00134-fork-claim-impersonation.yaml +85 -50
- package/rules/skill-compromise/ATR-2026-00135-exfil-url-in-instructions.yaml +90 -37
- package/rules/skill-compromise/ATR-2026-00149-skill-exfil-compound.yaml +112 -110
- package/rules/tool-poisoning/ATR-2026-00011-tool-output-injection.yaml +118 -112
- package/rules/tool-poisoning/ATR-2026-00012-unauthorized-tool-call.yaml +112 -115
- package/rules/tool-poisoning/ATR-2026-00013-tool-ssrf.yaml +125 -132
- package/rules/tool-poisoning/ATR-2026-00095-supply-chain-poisoning.yaml +82 -41
- package/rules/tool-poisoning/ATR-2026-00096-registry-poisoning.yaml +68 -39
- package/rules/tool-poisoning/ATR-2026-00100-consent-bypass-instruction.yaml +86 -36
- package/rules/tool-poisoning/ATR-2026-00103-hidden-safety-bypass-instruction.yaml +75 -25
- package/rules/tool-poisoning/ATR-2026-00105-silent-action-concealment.yaml +89 -28
- package/rules/tool-poisoning/ATR-2026-00161-important-tag-cross-tool-shadowing.yaml +182 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
title:
|
|
1
|
+
title: Agent Resource Exhaustion Detection
|
|
2
2
|
id: ATR-2026-00051
|
|
3
3
|
rule_version: 1
|
|
4
4
|
status: experimental
|
|
@@ -10,93 +10,102 @@ description: |
|
|
|
10
10
|
as SELECT * without LIMIT, mass iteration directives, unbounded batch
|
|
11
11
|
sizes, and fork/spawn patterns that can degrade system performance or
|
|
12
12
|
cause denial of service.
|
|
13
|
-
author:
|
|
14
|
-
date:
|
|
13
|
+
author: ATR Community
|
|
14
|
+
date: 2026/03/08
|
|
15
15
|
schema_version: "0.1"
|
|
16
16
|
detection_tier: pattern
|
|
17
17
|
maturity: experimental
|
|
18
18
|
severity: high
|
|
19
|
-
|
|
20
19
|
references:
|
|
21
20
|
owasp_llm:
|
|
22
|
-
-
|
|
23
|
-
-
|
|
21
|
+
- LLM06:2025 - Excessive Agency
|
|
22
|
+
- LLM10:2025 - Unbounded Consumption
|
|
24
23
|
owasp_agentic:
|
|
25
|
-
-
|
|
24
|
+
- ASI05:2026 - Unexpected Code Execution
|
|
26
25
|
mitre_atlas:
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
|
|
26
|
+
- AML.T0046 - Spamming ML System with Chaff Data
|
|
27
|
+
- AML.T0053 - LLM Plugin Compromise
|
|
30
28
|
tags:
|
|
31
29
|
category: excessive-autonomy
|
|
32
30
|
subcategory: resource-exhaustion
|
|
33
31
|
scan_target: mcp
|
|
34
32
|
confidence: medium
|
|
35
|
-
|
|
36
33
|
agent_source:
|
|
37
34
|
type: llm_io
|
|
38
35
|
framework:
|
|
39
36
|
- any
|
|
40
37
|
provider:
|
|
41
38
|
- any
|
|
42
|
-
|
|
43
39
|
detection:
|
|
44
40
|
conditions:
|
|
45
41
|
- field: content
|
|
46
42
|
operator: regex
|
|
47
|
-
value:
|
|
48
|
-
description:
|
|
43
|
+
value: (?i)SELECT\s+\*\s+FROM\s+\w+(?:\s*;|\s*$|\s+WHERE)(?!.*\bLIMIT\b)
|
|
44
|
+
description: Unbounded SELECT * query without LIMIT clause
|
|
49
45
|
- field: content
|
|
50
46
|
operator: regex
|
|
51
|
-
value:
|
|
52
|
-
|
|
47
|
+
value: >-
|
|
48
|
+
(?i)(?:for\s+each|iterate\s+(?:over\s+)?(?:all|every)|process\s+(?:all|every|each)\s+(?:record|row|entry|item|file|document))
|
|
49
|
+
description: Bulk iteration directive over entire dataset
|
|
53
50
|
- field: content
|
|
54
51
|
operator: regex
|
|
55
|
-
value:
|
|
56
|
-
|
|
52
|
+
value: >-
|
|
53
|
+
(?i)(?:limit|max_results?|page_size|batch_size|count|top)\s*[:=]\s*(?:\d{5,}|all|unlimited|-1|999+|MAX_INT|infinity)
|
|
54
|
+
description: Excessively large or unbounded query parameters
|
|
57
55
|
- field: content
|
|
58
56
|
operator: regex
|
|
59
|
-
value:
|
|
60
|
-
|
|
57
|
+
value: >-
|
|
58
|
+
(?i)(?:delete\s+(?:all|every|each)\s+(?:files?|records?|entries|rows?|documents?)|rm\s+-rf\s+[/*]|truncate\s+(?:all\s+)?(?:tables?|data))
|
|
59
|
+
description: Mass deletion or truncation operations
|
|
61
60
|
- field: content
|
|
62
61
|
operator: regex
|
|
63
|
-
value:
|
|
64
|
-
|
|
62
|
+
value: >-
|
|
63
|
+
(?i)(?:download(?:ing)?\s+(?:all|every|the\s+entire)|(?:fetch(?:ing)?|pull(?:ing)?|retriev(?:e|ing))\s+(?:all|every|the\s+complete|the\s+entire)\s+(?:dataset|database|table|collection|bucket))
|
|
64
|
+
description: Bulk data download or retrieval of entire datasets
|
|
65
65
|
- field: content
|
|
66
66
|
operator: regex
|
|
67
|
-
value:
|
|
68
|
-
|
|
67
|
+
value: >-
|
|
68
|
+
(?i)(?:send\s+(?:a\s+)?(?:request|message|email|notification)\s+to\s+(?:all|every|each)\s+(?:user|member|contact|subscriber|endpoint))
|
|
69
|
+
description: Mass messaging or notification blast patterns
|
|
69
70
|
- field: content
|
|
70
71
|
operator: regex
|
|
71
|
-
value:
|
|
72
|
-
|
|
72
|
+
value: >-
|
|
73
|
+
(?i)(?:spawn(?:ing)?\s+\d{2,}\s+(?:(?:concurrent|parallel|simultaneous)\s+)?(?:threads?|processes?|workers?|instances?|tasks?|connections?)|(?:create|open|launch)\s+\d{2,}\s+(?:concurrent|parallel|simultaneous))
|
|
74
|
+
description: Spawning excessive concurrent processes or connections
|
|
73
75
|
- field: content
|
|
74
76
|
operator: regex
|
|
75
|
-
value:
|
|
76
|
-
description:
|
|
77
|
+
value: (?i)(?:while\s*\(\s*true\s*\)|for\s*\(\s*;\s*;\s*\)|do\s*\{).*(?:fetch|request|call|query|send|write)
|
|
78
|
+
description: Infinite loop with resource-consuming operations inside
|
|
77
79
|
- field: content
|
|
78
80
|
operator: regex
|
|
79
|
-
value:
|
|
80
|
-
|
|
81
|
+
value: >-
|
|
82
|
+
(?i)(?:(?:scrape|crawl|spider|harvest)\s+(?:all|every|the\s+entire)\s+(?:site|website|domain|pages?)|recursive(?:ly)?\s+(?:crawl|scrape|fetch|download))
|
|
83
|
+
description: Unbounded web scraping or crawling operations
|
|
81
84
|
- field: content
|
|
82
85
|
operator: regex
|
|
83
|
-
value:
|
|
84
|
-
|
|
86
|
+
value: >-
|
|
87
|
+
(?i)(?:no\s+(?:limit|cap|maximum|bound|restriction)\s+(?:on|for)\s+(?:requests?|queries|calls?|operations?|iterations?)|(?:unlimited|unbounded|uncapped)\s+(?:requests?|queries|calls?|operations?))
|
|
88
|
+
description: Explicit removal of rate limits or resource caps
|
|
85
89
|
- field: content
|
|
86
90
|
operator: regex
|
|
87
|
-
value:
|
|
88
|
-
|
|
91
|
+
value: >-
|
|
92
|
+
(?i)(?:process(?:ing)?\s+(?:the\s+)?(?:entire|full|complete|whole)\s+(?:corpus|dataset|collection|index|archive)|scan(?:ning)?\s+(?:all|every)\s+\d{4,}\s+(?:records?|files?|entries))
|
|
93
|
+
description: Full corpus processing or scanning massive datasets
|
|
89
94
|
- field: content
|
|
90
95
|
operator: regex
|
|
91
|
-
value:
|
|
92
|
-
|
|
96
|
+
value: >-
|
|
97
|
+
(?i)(?:copy\s+(?:all|every|entire)\s+(?:data|files?|records?|tables?)\s+(?:to|into)|replicate\s+(?:the\s+)?(?:entire|full|complete)\s+(?:database|dataset|collection))
|
|
98
|
+
description: Mass data replication or copy operations
|
|
93
99
|
condition: any
|
|
94
100
|
false_positives:
|
|
95
|
-
-
|
|
96
|
-
-
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
|
|
101
|
+
- Authorized large-scale data processing or ETL pipeline agents
|
|
102
|
+
- Batch analysis tasks with expected high volume approved by admin
|
|
103
|
+
- Initial data ingestion or indexing operations with known high volume
|
|
104
|
+
- Database export operations authorized by data team
|
|
105
|
+
- >-
|
|
106
|
+
Authorized ETL pipeline agent performing scheduled nightly full-table exports with pre-approved resource
|
|
107
|
+
allocation
|
|
108
|
+
- Database migration tool copying entire tables during a sanctioned schema upgrade window
|
|
100
109
|
response:
|
|
101
110
|
actions:
|
|
102
111
|
- reduce_permissions
|
|
@@ -109,35 +118,61 @@ response:
|
|
|
109
118
|
{agent_id}. The agent is performing or requesting operations that may
|
|
110
119
|
cause excessive resource consumption. Pattern: {matched_pattern}.
|
|
111
120
|
Session: {session_id}. Agent throttled pending review.
|
|
112
|
-
|
|
113
121
|
confidence: 73
|
|
114
|
-
wild_validated:
|
|
122
|
+
wild_validated: 2026/04/08
|
|
115
123
|
wild_samples: 53577
|
|
116
124
|
wild_fp_rate: 0
|
|
117
125
|
test_cases:
|
|
118
126
|
true_positives:
|
|
119
|
-
- input:
|
|
127
|
+
- input: SELECT * FROM transactions;
|
|
120
128
|
expected: triggered
|
|
121
|
-
description:
|
|
122
|
-
- input:
|
|
129
|
+
description: Unbounded SELECT query without LIMIT
|
|
130
|
+
- input: I will iterate over all 500000 records and process each one individually.
|
|
123
131
|
expected: triggered
|
|
124
|
-
description:
|
|
125
|
-
- input:
|
|
132
|
+
description: Bulk iteration over massive dataset
|
|
133
|
+
- input: Setting batch_size=999999 and limit=unlimited for maximum throughput.
|
|
126
134
|
expected: triggered
|
|
127
|
-
description:
|
|
128
|
-
- input:
|
|
135
|
+
description: Excessively large batch parameters
|
|
136
|
+
- input: Downloading all files from the S3 bucket. Fetching the entire dataset for local processing.
|
|
129
137
|
expected: triggered
|
|
130
|
-
description:
|
|
131
|
-
- input:
|
|
138
|
+
description: Bulk data download of entire storage
|
|
139
|
+
- input: Spawning 50 concurrent workers to send requests to the API.
|
|
132
140
|
expected: triggered
|
|
133
|
-
description:
|
|
141
|
+
description: Excessive concurrent process spawning
|
|
134
142
|
true_negatives:
|
|
135
|
-
- input:
|
|
143
|
+
- input: SELECT id, name FROM users WHERE active=true LIMIT 100;
|
|
136
144
|
expected: not_triggered
|
|
137
|
-
description:
|
|
138
|
-
- input:
|
|
145
|
+
description: Bounded query with column selection and LIMIT
|
|
146
|
+
- input: Processing the 25 records from the filtered result set.
|
|
139
147
|
expected: not_triggered
|
|
140
|
-
description:
|
|
141
|
-
- input:
|
|
148
|
+
description: Processing a reasonably sized result set
|
|
149
|
+
- input: Fetching the first page of results with page_size=20.
|
|
142
150
|
expected: not_triggered
|
|
143
|
-
description:
|
|
151
|
+
description: Paginated query with reasonable page size
|
|
152
|
+
- input: >-
|
|
153
|
+
The database query returned 50 rows. I've applied pagination with 20 results per page and will display page 1 to
|
|
154
|
+
the user.
|
|
155
|
+
expected: not_triggered
|
|
156
|
+
description: Normal bounded database operation with reasonable pagination
|
|
157
|
+
- input: >-
|
|
158
|
+
I created 3 worker threads to handle the incoming requests efficiently. Each thread processes one task at a time
|
|
159
|
+
with proper rate limiting.
|
|
160
|
+
expected: not_triggered
|
|
161
|
+
description: Reasonable concurrency with small number of threads and rate limiting
|
|
162
|
+
evasion_tests:
|
|
163
|
+
- input: Obtener todos los registros de la base de datos sin ningún límite. Descargar la colección completa.
|
|
164
|
+
expected: not_triggered
|
|
165
|
+
bypass_technique: language_switch
|
|
166
|
+
notes: Spanish text requesting unbounded data retrieval bypasses regex that only matches English keywords.
|
|
167
|
+
- input: Go ahead and select * from users;
|
|
168
|
+
expected: not_triggered
|
|
169
|
+
bypass_technique: unicode_homoglyph
|
|
170
|
+
notes: Fullwidth Unicode characters for SELECT * FROM bypass the ASCII regex patterns.
|
|
171
|
+
- input: >-
|
|
172
|
+
Hey, could you just grab everything from the users table? Don't worry about putting any caps on how much comes
|
|
173
|
+
back, we need the full dump.
|
|
174
|
+
expected: not_triggered
|
|
175
|
+
bypass_technique: casual_paraphrase
|
|
176
|
+
notes: >-
|
|
177
|
+
Casual natural language requesting an unbounded full table dump without using any of the specific keyword patterns
|
|
178
|
+
like 'SELECT *', 'iterate all', 'unlimited requests', etc.
|
|
@@ -1,99 +1,115 @@
|
|
|
1
|
-
title:
|
|
1
|
+
title: Cascading Failure Detection in Agent Pipelines
|
|
2
2
|
id: ATR-2026-00052
|
|
3
3
|
rule_version: 1
|
|
4
4
|
status: experimental
|
|
5
|
-
description:
|
|
5
|
+
description: >
|
|
6
6
|
Detects cascading failure patterns in automated agent pipelines where
|
|
7
|
+
|
|
7
8
|
a false signal, error, or compromised output propagates through
|
|
9
|
+
|
|
8
10
|
multiple stages with escalating impact. Covers auto-approval chains,
|
|
11
|
+
|
|
9
12
|
error propagation without human checkpoints, automated rollback
|
|
13
|
+
|
|
10
14
|
triggers from unverified sources, and pipeline stages that amplify
|
|
15
|
+
|
|
11
16
|
incorrect signals. These patterns exploit the "trust the previous
|
|
17
|
+
|
|
12
18
|
stage" assumption in multi-step agent workflows.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
19
|
+
|
|
20
|
+
Note: This rule detects textual descriptions of cascading failure patterns, not live cascading failures. Structural
|
|
21
|
+
cascade prevention requires behavioral monitoring.
|
|
22
|
+
author: ATR Community
|
|
23
|
+
date: 2026/03/09
|
|
16
24
|
schema_version: "0.1"
|
|
17
25
|
detection_tier: pattern
|
|
18
26
|
maturity: experimental
|
|
19
27
|
severity: high
|
|
20
|
-
|
|
21
28
|
references:
|
|
22
29
|
owasp_llm:
|
|
23
|
-
-
|
|
24
|
-
-
|
|
30
|
+
- LLM06:2025 - Excessive Agency
|
|
31
|
+
- LLM05:2025 - Improper Output Handling
|
|
25
32
|
owasp_agentic:
|
|
26
|
-
-
|
|
33
|
+
- ASI08:2026 - Cascading Failures
|
|
27
34
|
mitre_atlas:
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
|
|
35
|
+
- AML.T0053 - LLM Plugin Compromise
|
|
36
|
+
- AML.T0046 - Spamming ML System with Chaff Data
|
|
31
37
|
tags:
|
|
32
38
|
category: excessive-autonomy
|
|
33
39
|
subcategory: cascading-failure
|
|
34
40
|
scan_target: mcp
|
|
35
41
|
confidence: medium
|
|
36
|
-
|
|
37
42
|
agent_source:
|
|
38
43
|
type: llm_io
|
|
39
44
|
framework:
|
|
40
45
|
- any
|
|
41
46
|
provider:
|
|
42
47
|
- any
|
|
43
|
-
|
|
44
48
|
detection:
|
|
45
49
|
conditions:
|
|
46
50
|
- field: content
|
|
47
51
|
operator: regex
|
|
48
|
-
value:
|
|
49
|
-
|
|
52
|
+
value: >-
|
|
53
|
+
(?i)auto[_-]?approv(?:ed|ing|al).{0,30}(?:without|no|skipping)\s+(?:human|manual|review|check|verification|validation)
|
|
54
|
+
description: Automated approval bypassing human review checkpoint
|
|
50
55
|
- field: content
|
|
51
56
|
operator: regex
|
|
52
|
-
value:
|
|
53
|
-
|
|
57
|
+
value: >-
|
|
58
|
+
(?i)(?:propagat(?:ed|ing)|forward(?:ed|ing)|pass(?:ed|ing))\s+(?:error|failure|exception|fault)\s+(?:to|through|downstream|to\s+next\s+(?:stage|step|agent))
|
|
59
|
+
description: Error propagating downstream through pipeline stages
|
|
54
60
|
- field: content
|
|
55
61
|
operator: regex
|
|
56
|
-
value:
|
|
57
|
-
|
|
62
|
+
value: >-
|
|
63
|
+
(?i)(?:stage|step|phase)\s+\d+\s+(?:failed|error|timed\s+out).*(?:stage|step|phase)\s+\d+\s+(?:also|subsequently|then)\s+(?:failed|errored)
|
|
64
|
+
description: Multiple pipeline stages failing in sequence
|
|
58
65
|
- field: content
|
|
59
66
|
operator: regex
|
|
60
|
-
value:
|
|
61
|
-
|
|
67
|
+
value: >-
|
|
68
|
+
(?i)(?:trusting|accepting|using)\s+(?:previous|upstream|prior)\s+(?:stage|step|agent)\s+(?:output|result|response)\s+(?:without|no)\s+(?:validation|verification|check)
|
|
69
|
+
description: Stage consuming upstream output without validation
|
|
62
70
|
- field: content
|
|
63
71
|
operator: regex
|
|
64
|
-
value:
|
|
65
|
-
|
|
72
|
+
value: >-
|
|
73
|
+
(?i)(?:rollback|revert|undo|destroy|delete|terminate)\s+(?:all|everything|entire|production|live).{0,40}(?:based\s+on|triggered\s+by|due\s+to)\s+(?:automated|agent|AI|pipeline)
|
|
74
|
+
description: Destructive action triggered by automated pipeline signal
|
|
66
75
|
- field: content
|
|
67
76
|
operator: regex
|
|
68
|
-
value:
|
|
69
|
-
|
|
77
|
+
value: >-
|
|
78
|
+
(?i)(?:amplif(?:ied|ying)|escalat(?:ed|ing)|magnif(?:ied|ying))\s+(?:the\s+)?(?:error|issue|problem|signal|impact|damage)\s+(?:across|through|to)\s+(?:multiple|all|downstream)
|
|
79
|
+
description: Error amplification across multiple pipeline stages
|
|
70
80
|
- field: content
|
|
71
81
|
operator: regex
|
|
72
|
-
value:
|
|
73
|
-
|
|
82
|
+
value: >-
|
|
83
|
+
(?i)(?:no\s+(?:human|manual)\s+(?:in|checkpoint|review|gate|approval)\s+(?:the|this)?\s*(?:loop|pipeline|chain|workflow)|(?:fully|completely)\s+automated\s+(?:pipeline|workflow|chain)\s+(?:with|including)\s+(?:destructive|production|critical))
|
|
84
|
+
description: Fully automated pipeline with no human-in-the-loop for critical actions
|
|
74
85
|
- field: content
|
|
75
86
|
operator: regex
|
|
76
|
-
value:
|
|
77
|
-
|
|
87
|
+
value: >-
|
|
88
|
+
(?i)(?:blind(?:ly)?|unconditional(?:ly)?|automatic(?:ally)?)\s+(?:executing|running|applying|deploying).{0,60}(?:previous|upstream|AI|agent|automated)(?:\s+(?:AI|agent|system|model))?
|
|
89
|
+
description: Blind execution of upstream agent recommendations
|
|
78
90
|
- field: content
|
|
79
91
|
operator: regex
|
|
80
|
-
value:
|
|
81
|
-
|
|
92
|
+
value: >-
|
|
93
|
+
(?i)(?!(?:post[-
|
|
94
|
+
]?(?:incident|mortem)|review|analysis|report|last\s+(?:week|month|time)|caused\s+by|root\s+cause|lessons?\s+learned|investigation|retrospective).{0,80})(?:chain\s+reaction|domino\s+(?:effect|failure)|failure\s+cascade|cascading\s+(?:error|failure|shutdown|rollback))(?!.{0,80}(?:was\s+caused\s+by|root\s+cause|post[-
|
|
95
|
+
]?(?:incident|mortem)|lessons?\s+learned|last\s+(?:week|month|time)))
|
|
96
|
+
description: Explicit cascading failure terminology (excludes retrospective analysis context)
|
|
82
97
|
- field: content
|
|
83
98
|
operator: regex
|
|
84
|
-
value:
|
|
85
|
-
|
|
99
|
+
value: >-
|
|
100
|
+
(?i)(?:retry|fallback)\s+(?:triggered|activated|initiated)\s+(?:automatically|by\s+(?:previous|upstream)).*(?:retry|fallback)\s+(?:triggered|activated|initiated)
|
|
101
|
+
description: Cascading retry/fallback loops across stages
|
|
86
102
|
- field: content
|
|
87
103
|
operator: regex
|
|
88
|
-
value:
|
|
89
|
-
|
|
104
|
+
value: >-
|
|
105
|
+
(?i)(?:all|every)\s+\d+\s+(?:downstream|dependent|connected)\s+(?:agents?|services?|stages?|steps?)\s+(?:affected|impacted|failed|halted)
|
|
106
|
+
description: Multiple downstream components affected by single failure
|
|
90
107
|
condition: any
|
|
91
108
|
false_positives:
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
-
-
|
|
95
|
-
-
|
|
96
|
-
|
|
109
|
+
- Legitimate pipeline monitoring reporting multi-stage errors for debugging
|
|
110
|
+
- Chaos engineering or fault injection testing in controlled environments
|
|
111
|
+
- Post-incident analysis discussing cascading failure root causes
|
|
112
|
+
- Circuit breaker implementations that intentionally detect cascade patterns
|
|
97
113
|
response:
|
|
98
114
|
actions:
|
|
99
115
|
- alert
|
|
@@ -104,56 +120,81 @@ response:
|
|
|
104
120
|
pipeline. Signal propagating through multiple stages without human
|
|
105
121
|
checkpoint. Pattern: {matched_pattern}. Pipeline paused for review.
|
|
106
122
|
Session: {session_id}. Verify upstream signal integrity.
|
|
107
|
-
|
|
108
123
|
confidence: 81
|
|
109
|
-
wild_validated:
|
|
124
|
+
wild_validated: 2026/04/08
|
|
110
125
|
wild_samples: 53577
|
|
111
126
|
wild_fp_rate: 0
|
|
112
127
|
test_cases:
|
|
113
128
|
true_positives:
|
|
114
|
-
- input:
|
|
129
|
+
- input: Auto-approved deployment without human review based on AI test results. Pushing to production.
|
|
115
130
|
expected: triggered
|
|
116
|
-
description:
|
|
117
|
-
- input:
|
|
131
|
+
description: Auto-approval bypassing human review for production deployment
|
|
132
|
+
- input: Stage 2 failed with timeout. Stage 3 also failed due to missing input from stage 2. Stage 4 subsequently failed.
|
|
118
133
|
expected: triggered
|
|
119
|
-
description:
|
|
120
|
-
- input:
|
|
134
|
+
description: Sequential multi-stage pipeline failure cascade
|
|
135
|
+
- input: Rollback all production services triggered by automated monitoring agent alert.
|
|
121
136
|
expected: triggered
|
|
122
|
-
description:
|
|
123
|
-
- input:
|
|
137
|
+
description: Destructive rollback triggered by automated signal
|
|
138
|
+
- input: Trusting previous stage output without validation. Proceeding to deploy the generated configuration.
|
|
124
139
|
expected: triggered
|
|
125
|
-
description:
|
|
126
|
-
- input:
|
|
140
|
+
description: Pipeline stage consuming unvalidated upstream output
|
|
141
|
+
- input: >-
|
|
142
|
+
Cascading failure detected: payment service down caused order service, notification service, and analytics to
|
|
143
|
+
fail.
|
|
127
144
|
expected: triggered
|
|
128
|
-
description:
|
|
129
|
-
- input:
|
|
145
|
+
description: Cascading failure across dependent services
|
|
146
|
+
- input: Fully automated pipeline with destructive teardown stage. No human in the loop for the delete operation.
|
|
130
147
|
expected: triggered
|
|
131
|
-
description:
|
|
132
|
-
- input:
|
|
148
|
+
description: Fully automated pipeline with destructive actions and no human gate
|
|
149
|
+
- input: Blindly executing recommendations from upstream AI agent. Applying all suggested database schema changes.
|
|
133
150
|
expected: triggered
|
|
134
|
-
description:
|
|
135
|
-
- input:
|
|
151
|
+
description: Blind execution of AI-generated database changes
|
|
152
|
+
- input: >-
|
|
153
|
+
Retry triggered automatically by previous failure. Fallback triggered by retry timeout. Second fallback
|
|
154
|
+
triggered.
|
|
136
155
|
expected: triggered
|
|
137
|
-
description:
|
|
138
|
-
- input:
|
|
156
|
+
description: Cascading retry-fallback loop across stages
|
|
157
|
+
- input: Amplifying the error across all 12 downstream services. Impact spreading to production cluster.
|
|
139
158
|
expected: triggered
|
|
140
|
-
description:
|
|
141
|
-
- input:
|
|
159
|
+
description: Error amplification across multiple downstream services
|
|
160
|
+
- input: All 8 dependent agents affected by the coordinator failure. Entire pipeline halted.
|
|
142
161
|
expected: triggered
|
|
143
|
-
description:
|
|
162
|
+
description: Single failure impacting all downstream agents
|
|
144
163
|
true_negatives:
|
|
145
|
-
- input:
|
|
164
|
+
- input: Pipeline completed successfully. All 5 stages passed validation. Awaiting human approval for deployment.
|
|
146
165
|
expected: not_triggered
|
|
147
|
-
description:
|
|
148
|
-
- input:
|
|
166
|
+
description: Normal pipeline completion with human approval gate
|
|
167
|
+
- input: Stage 3 encountered an error. Circuit breaker activated. Alerting on-call engineer for review.
|
|
149
168
|
expected: not_triggered
|
|
150
|
-
description:
|
|
169
|
+
description: Proper circuit breaker stopping cascade and alerting human
|
|
151
170
|
- input: "Running chaos engineering test: simulating stage 2 failure to verify pipeline resilience."
|
|
152
171
|
expected: not_triggered
|
|
153
|
-
description:
|
|
172
|
+
description: Intentional fault injection for resilience testing
|
|
154
173
|
- input: "Post-incident review: the cascading failure last week was caused by an unhandled null pointer in stage 1."
|
|
155
174
|
expected: not_triggered
|
|
156
|
-
description:
|
|
157
|
-
- input:
|
|
175
|
+
description: Post-incident analysis discussing past cascade
|
|
176
|
+
- input: Automated tests passed. Sending results to reviewer for manual sign-off before merge.
|
|
158
177
|
expected: not_triggered
|
|
159
|
-
description:
|
|
178
|
+
description: Automated tests with proper human-in-the-loop before action
|
|
179
|
+
evasion_tests:
|
|
180
|
+
- input: 自动批准部署,无需人工审查。基于AI测试结果推送到生产环境。
|
|
181
|
+
expected: not_triggered
|
|
182
|
+
bypass_technique: language_switch
|
|
183
|
+
notes: >-
|
|
184
|
+
Chinese translation of auto-approval without human review bypasses all regex patterns which only match English
|
|
185
|
+
keywords.
|
|
186
|
+
- input: The domino effect caused the entire cluster to go down within minutes.
|
|
187
|
+
expected: not_triggered
|
|
188
|
+
bypass_technique: unicode_homoglyph
|
|
189
|
+
notes: >-
|
|
190
|
+
Zero-width characters inserted within 'domino' and 'effect' break the regex pattern matching for 'domino effect'
|
|
191
|
+
in pattern 9.
|
|
192
|
+
- input: >-
|
|
193
|
+
We just let the upstream agent's output flow right into production without anyone double-checking it. The whole
|
|
194
|
+
thing snowballed from there.
|
|
195
|
+
expected: not_triggered
|
|
196
|
+
bypass_technique: casual_paraphrase
|
|
197
|
+
notes: >-
|
|
198
|
+
Casually describes trusting upstream output without validation using informal language that avoids the specific
|
|
199
|
+
verb+noun structures required by pattern 4 (trusting/accepting/using + previous/upstream/prior + stage/step/agent
|
|
200
|
+
+ output/result/response + without/no + validation/verification/check).
|