agent-threat-rules 1.1.1 → 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.
Files changed (156) hide show
  1. package/README.md +70 -38
  2. package/dist/cli.js +16 -6
  3. package/dist/cli.js.map +1 -1
  4. package/dist/engine.d.ts.map +1 -1
  5. package/dist/engine.js +80 -35
  6. package/dist/engine.js.map +1 -1
  7. package/dist/index.d.ts +1 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +2 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/quality/adapters/atr.d.ts +65 -0
  12. package/dist/quality/adapters/atr.d.ts.map +1 -0
  13. package/dist/quality/adapters/atr.js +154 -0
  14. package/dist/quality/adapters/atr.js.map +1 -0
  15. package/dist/quality/adapters/index.d.ts +10 -0
  16. package/dist/quality/adapters/index.d.ts.map +1 -0
  17. package/dist/quality/adapters/index.js +10 -0
  18. package/dist/quality/adapters/index.js.map +1 -0
  19. package/dist/quality/compute-confidence.d.ts +45 -0
  20. package/dist/quality/compute-confidence.d.ts.map +1 -0
  21. package/dist/quality/compute-confidence.js +133 -0
  22. package/dist/quality/compute-confidence.js.map +1 -0
  23. package/dist/quality/index.d.ts +36 -0
  24. package/dist/quality/index.d.ts.map +1 -0
  25. package/dist/quality/index.js +39 -0
  26. package/dist/quality/index.js.map +1 -0
  27. package/dist/quality/quality-gate.d.ts +86 -0
  28. package/dist/quality/quality-gate.d.ts.map +1 -0
  29. package/dist/quality/quality-gate.js +187 -0
  30. package/dist/quality/quality-gate.js.map +1 -0
  31. package/dist/quality/types.d.ts +129 -0
  32. package/dist/quality/types.d.ts.map +1 -0
  33. package/dist/quality/types.js +10 -0
  34. package/dist/quality/types.js.map +1 -0
  35. package/dist/quality/validate-maturity.d.ts +51 -0
  36. package/dist/quality/validate-maturity.d.ts.map +1 -0
  37. package/dist/quality/validate-maturity.js +134 -0
  38. package/dist/quality/validate-maturity.js.map +1 -0
  39. package/dist/tc-reporter.js +1 -1
  40. package/dist/tc-reporter.js.map +1 -1
  41. package/dist/types.d.ts +20 -0
  42. package/dist/types.d.ts.map +1 -1
  43. package/package.json +6 -2
  44. package/rules/agent-manipulation/ATR-2026-00030-cross-agent-attack.yaml +6 -2
  45. package/rules/agent-manipulation/ATR-2026-00032-goal-hijacking.yaml +109 -54
  46. package/rules/agent-manipulation/ATR-2026-00074-cross-agent-privilege-escalation.yaml +97 -54
  47. package/rules/agent-manipulation/ATR-2026-00076-inter-agent-message-spoofing.yaml +92 -64
  48. package/rules/agent-manipulation/ATR-2026-00077-human-trust-exploitation.yaml +105 -65
  49. package/rules/agent-manipulation/ATR-2026-00108-consensus-sybil-attack.yaml +81 -41
  50. package/rules/agent-manipulation/ATR-2026-00116-a2a-message-validation.yaml +75 -34
  51. package/rules/agent-manipulation/ATR-2026-00117-agent-identity-spoofing.yaml +85 -37
  52. package/rules/agent-manipulation/ATR-2026-00118-approval-fatigue.yaml +83 -36
  53. package/rules/agent-manipulation/ATR-2026-00119-social-engineering-via-agent.yaml +92 -36
  54. package/rules/agent-manipulation/ATR-2026-00132-casual-authority-escalation.yaml +90 -52
  55. package/rules/agent-manipulation/ATR-2026-00139-casual-authority-redirect.yaml +94 -20
  56. package/rules/agent-manipulation/ATR-2026-00164-skill-scope-hijack.yaml +72 -0
  57. package/rules/context-exfiltration/ATR-2026-00020-system-prompt-leak.yaml +6 -2
  58. package/rules/context-exfiltration/ATR-2026-00021-api-key-exposure.yaml +6 -2
  59. package/rules/context-exfiltration/ATR-2026-00075-agent-memory-manipulation.yaml +83 -52
  60. package/rules/context-exfiltration/ATR-2026-00102-disguised-analytics-exfiltration.yaml +92 -26
  61. package/rules/context-exfiltration/ATR-2026-00113-credential-theft.yaml +77 -37
  62. package/rules/context-exfiltration/ATR-2026-00114-oauth-token-abuse.yaml +83 -36
  63. package/rules/context-exfiltration/ATR-2026-00115-env-var-harvesting.yaml +95 -37
  64. package/rules/context-exfiltration/ATR-2026-00136-tool-response-data-piggyback.yaml +79 -45
  65. package/rules/context-exfiltration/ATR-2026-00141-example-format-key-leak.yaml +74 -18
  66. package/rules/context-exfiltration/ATR-2026-00142-piggyback-transition-words.yaml +87 -18
  67. package/rules/context-exfiltration/ATR-2026-00145-obfuscated-key-disclosure.yaml +76 -16
  68. package/rules/context-exfiltration/ATR-2026-00146-env-var-existence-probe.yaml +94 -18
  69. package/rules/context-exfiltration/ATR-2026-00150-credential-in-tool-response.yaml +73 -40
  70. package/rules/context-exfiltration/ATR-2026-00152-obfuscated-credential-leak.yaml +87 -36
  71. package/rules/context-exfiltration/ATR-2026-00162-skill-credential-exfil-combo.yaml +73 -0
  72. package/rules/data-poisoning/ATR-2026-00070-data-poisoning.yaml +121 -72
  73. package/rules/excessive-autonomy/ATR-2026-00050-runaway-agent-loop.yaml +99 -55
  74. package/rules/excessive-autonomy/ATR-2026-00051-resource-exhaustion.yaml +97 -58
  75. package/rules/excessive-autonomy/ATR-2026-00052-cascading-failure.yaml +115 -70
  76. package/rules/excessive-autonomy/ATR-2026-00098-unauthorized-financial-action.yaml +87 -62
  77. package/rules/excessive-autonomy/ATR-2026-00099-high-risk-tool-gate.yaml +91 -63
  78. package/rules/model-security/ATR-2026-00072-model-behavior-extraction.yaml +96 -54
  79. package/rules/model-security/ATR-2026-00073-malicious-finetuning-data.yaml +103 -51
  80. package/rules/privilege-escalation/ATR-2026-00040-privilege-escalation.yaml +84 -79
  81. package/rules/privilege-escalation/ATR-2026-00041-scope-creep.yaml +103 -51
  82. package/rules/privilege-escalation/ATR-2026-00107-delayed-execution-bypass.yaml +85 -25
  83. package/rules/privilege-escalation/ATR-2026-00110-eval-injection.yaml +88 -38
  84. package/rules/privilege-escalation/ATR-2026-00111-shell-escape.yaml +104 -38
  85. package/rules/privilege-escalation/ATR-2026-00112-dynamic-import-exploitation.yaml +84 -36
  86. package/rules/privilege-escalation/ATR-2026-00143-casual-privilege-escalation.yaml +86 -20
  87. package/rules/privilege-escalation/ATR-2026-00144-rationalized-safety-bypass.yaml +80 -18
  88. package/rules/prompt-injection/ATR-2026-00001-direct-prompt-injection.yaml +7 -3
  89. package/rules/prompt-injection/ATR-2026-00002-indirect-prompt-injection.yaml +6 -2
  90. package/rules/prompt-injection/ATR-2026-00003-jailbreak-attempt.yaml +6 -2
  91. package/rules/prompt-injection/ATR-2026-00004-system-prompt-override.yaml +152 -152
  92. package/rules/prompt-injection/ATR-2026-00005-multi-turn-injection.yaml +4 -0
  93. package/rules/prompt-injection/ATR-2026-00080-encoding-evasion.yaml +81 -37
  94. package/rules/prompt-injection/ATR-2026-00081-semantic-multi-turn.yaml +84 -32
  95. package/rules/prompt-injection/ATR-2026-00082-fingerprint-evasion.yaml +74 -35
  96. package/rules/prompt-injection/ATR-2026-00083-indirect-tool-injection.yaml +80 -34
  97. package/rules/prompt-injection/ATR-2026-00084-structured-data-injection.yaml +9 -0
  98. package/rules/prompt-injection/ATR-2026-00085-audit-evasion.yaml +75 -35
  99. package/rules/prompt-injection/ATR-2026-00086-visual-spoofing.yaml +75 -33
  100. package/rules/prompt-injection/ATR-2026-00087-rule-probing.yaml +82 -36
  101. package/rules/prompt-injection/ATR-2026-00088-adaptive-countermeasure.yaml +80 -35
  102. package/rules/prompt-injection/ATR-2026-00089-polymorphic-skill.yaml +81 -37
  103. package/rules/prompt-injection/ATR-2026-00090-threat-intel-exfil.yaml +89 -35
  104. package/rules/prompt-injection/ATR-2026-00091-nested-payload.yaml +76 -33
  105. package/rules/prompt-injection/ATR-2026-00092-consensus-poisoning.yaml +83 -38
  106. package/rules/prompt-injection/ATR-2026-00093-gradual-escalation.yaml +82 -37
  107. package/rules/prompt-injection/ATR-2026-00094-audit-bypass.yaml +77 -36
  108. package/rules/prompt-injection/ATR-2026-00097-cjk-injection-patterns.yaml +125 -131
  109. package/rules/prompt-injection/ATR-2026-00104-persona-hijacking.yaml +94 -25
  110. package/rules/prompt-injection/ATR-2026-00130-indirect-authority-claim.yaml +81 -47
  111. package/rules/prompt-injection/ATR-2026-00131-fictional-academic-framing.yaml +75 -46
  112. package/rules/prompt-injection/ATR-2026-00133-paraphrase-injection.yaml +80 -58
  113. package/rules/prompt-injection/ATR-2026-00137-authority-claim-injection.yaml +82 -16
  114. package/rules/prompt-injection/ATR-2026-00138-fictional-framing-bypass.yaml +107 -18
  115. package/rules/prompt-injection/ATR-2026-00140-indirect-reference-reversal.yaml +75 -19
  116. package/rules/prompt-injection/ATR-2026-00148-language-switch-injection.yaml +83 -23
  117. package/rules/prompt-injection/ATR-2026-00153-tool-with-embedded-instruction-to-bypass.yaml +103 -17
  118. package/rules/prompt-injection/ATR-2026-00154-unauthorized-background-task-execution-v.yaml +112 -17
  119. package/rules/prompt-injection/ATR-2026-00155-hidden-llm-instructions-in-skill-descrip.yaml +106 -16
  120. package/rules/prompt-injection/ATR-2026-00156-ssh-remote-command-execution-with-creden.yaml +88 -17
  121. package/rules/prompt-injection/ATR-2026-00163-skill-hidden-override-instruction.yaml +77 -0
  122. package/rules/skill-compromise/ATR-2026-00060-skill-impersonation.yaml +75 -66
  123. package/rules/skill-compromise/ATR-2026-00061-description-behavior-mismatch.yaml +4 -0
  124. package/rules/skill-compromise/ATR-2026-00062-hidden-capability.yaml +4 -0
  125. package/rules/skill-compromise/ATR-2026-00063-skill-chain-attack.yaml +4 -0
  126. package/rules/skill-compromise/ATR-2026-00064-over-permissioned-skill.yaml +4 -0
  127. package/rules/skill-compromise/ATR-2026-00065-skill-update-attack.yaml +4 -0
  128. package/rules/skill-compromise/ATR-2026-00066-parameter-injection.yaml +4 -0
  129. package/rules/skill-compromise/ATR-2026-00120-skill-instruction-injection.yaml +118 -63
  130. package/rules/skill-compromise/ATR-2026-00121-skill-dangerous-script.yaml +121 -95
  131. package/rules/skill-compromise/ATR-2026-00122-skill-weaponized-instruction.yaml +124 -59
  132. package/rules/skill-compromise/ATR-2026-00123-skill-overreach-permissions.yaml +92 -61
  133. package/rules/skill-compromise/ATR-2026-00124-skill-name-squatting.yaml +60 -4
  134. package/rules/skill-compromise/ATR-2026-00125-context-poisoning-compaction.yaml +91 -40
  135. package/rules/skill-compromise/ATR-2026-00126-skill-rug-pull-setup.yaml +80 -42
  136. package/rules/skill-compromise/ATR-2026-00127-subcommand-overflow.yaml +51 -2
  137. package/rules/skill-compromise/ATR-2026-00128-html-comment-hidden-payload.yaml +137 -30
  138. package/rules/skill-compromise/ATR-2026-00129-unicode-smuggling.yaml +9 -0
  139. package/rules/skill-compromise/ATR-2026-00134-fork-claim-impersonation.yaml +91 -42
  140. package/rules/skill-compromise/ATR-2026-00135-exfil-url-in-instructions.yaml +96 -34
  141. package/rules/skill-compromise/ATR-2026-00147-fork-impersonation.yaml +10 -1
  142. package/rules/skill-compromise/ATR-2026-00149-skill-exfil-compound.yaml +118 -107
  143. package/rules/skill-compromise/ATR-2026-00151-fork-impersonation-install.yaml +9 -0
  144. package/rules/skill-compromise/ATR-2026-00157-timebomb-credential-exfil.yaml +121 -0
  145. package/rules/tool-poisoning/ATR-2026-00010-mcp-malicious-response.yaml +6 -2
  146. package/rules/tool-poisoning/ATR-2026-00011-tool-output-injection.yaml +121 -111
  147. package/rules/tool-poisoning/ATR-2026-00012-unauthorized-tool-call.yaml +115 -114
  148. package/rules/tool-poisoning/ATR-2026-00013-tool-ssrf.yaml +128 -131
  149. package/rules/tool-poisoning/ATR-2026-00095-supply-chain-poisoning.yaml +88 -38
  150. package/rules/tool-poisoning/ATR-2026-00096-registry-poisoning.yaml +74 -36
  151. package/rules/tool-poisoning/ATR-2026-00100-consent-bypass-instruction.yaml +92 -33
  152. package/rules/tool-poisoning/ATR-2026-00101-trust-escalation-override.yaml +9 -0
  153. package/rules/tool-poisoning/ATR-2026-00103-hidden-safety-bypass-instruction.yaml +78 -24
  154. package/rules/tool-poisoning/ATR-2026-00105-silent-action-concealment.yaml +95 -25
  155. package/rules/tool-poisoning/ATR-2026-00106-schema-description-contradiction.yaml +9 -0
  156. package/rules/tool-poisoning/ATR-2026-00161-important-tag-cross-tool-shadowing.yaml +182 -0
@@ -1,4 +1,4 @@
1
- title: "Agent Resource Exhaustion Detection"
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: "ATR Community"
14
- date: "2026/03/08"
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
- - "LLM06:2025 - Excessive Agency"
23
- - "LLM10:2025 - Unbounded Consumption"
21
+ - LLM06:2025 - Excessive Agency
22
+ - LLM10:2025 - Unbounded Consumption
24
23
  owasp_agentic:
25
- - "ASI05:2026 - Unexpected Code Execution"
24
+ - ASI05:2026 - Unexpected Code Execution
26
25
  mitre_atlas:
27
- - "AML.T0046 - Spamming ML System with Chaff Data"
28
- - "AML.T0053 - LLM Plugin Compromise"
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: "(?i)SELECT\\s+\\*\\s+FROM\\s+\\w+(?:\\s*;|\\s*$|\\s+WHERE)(?!.*\\bLIMIT\\b)"
48
- description: "Unbounded SELECT * query without LIMIT clause"
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: "(?i)(?:for\\s+each|iterate\\s+(?:over\\s+)?(?:all|every)|process\\s+(?:all|every|each)\\s+(?:record|row|entry|item|file|document))"
52
- description: "Bulk iteration directive over entire dataset"
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: "(?i)(?:limit|max_results?|page_size|batch_size|count|top)\\s*[:=]\\s*(?:\\d{5,}|all|unlimited|-1|999+|MAX_INT|infinity)"
56
- description: "Excessively large or unbounded query parameters"
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: "(?i)(?:delete\\s+(?:all|every|each)\\s+(?:files?|records?|entries|rows?|documents?)|rm\\s+-rf\\s+[/*]|truncate\\s+(?:all\\s+)?(?:tables?|data))"
60
- description: "Mass deletion or truncation operations"
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: "(?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"
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: "(?i)(?:send\\s+(?:a\\s+)?(?:request|message|email|notification)\\s+to\\s+(?:all|every|each)\\s+(?:user|member|contact|subscriber|endpoint))"
68
- description: "Mass messaging or notification blast patterns"
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: "(?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))"
72
- description: "Spawning excessive concurrent processes or connections"
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: "(?i)(?:while\\s*\\(\\s*true\\s*\\)|for\\s*\\(\\s*;\\s*;\\s*\\)|do\\s*\\{).*(?:fetch|request|call|query|send|write)"
76
- description: "Infinite loop with resource-consuming operations inside"
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: "(?i)(?:(?:scrape|crawl|spider|harvest)\\s+(?:all|every|the\\s+entire)\\s+(?:site|website|domain|pages?)|recursive(?:ly)?\\s+(?:crawl|scrape|fetch|download))"
80
- description: "Unbounded web scraping or crawling operations"
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: "(?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?))"
84
- description: "Explicit removal of rate limits or resource caps"
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: "(?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))"
88
- description: "Full corpus processing or scanning massive datasets"
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: "(?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))"
92
- description: "Mass data replication or copy operations"
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
- - "Authorized large-scale data processing or ETL pipeline agents"
96
- - "Batch analysis tasks with expected high volume approved by admin"
97
- - "Initial data ingestion or indexing operations with known high volume"
98
- - "Database export operations authorized by data team"
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,31 +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
-
121
+ confidence: 73
122
+ wild_validated: 2026/04/08
123
+ wild_samples: 53577
124
+ wild_fp_rate: 0
113
125
  test_cases:
114
126
  true_positives:
115
- - input: "SELECT * FROM transactions;"
127
+ - input: SELECT * FROM transactions;
116
128
  expected: triggered
117
- description: "Unbounded SELECT query without LIMIT"
118
- - input: "I will iterate over all 500000 records and process each one individually."
129
+ description: Unbounded SELECT query without LIMIT
130
+ - input: I will iterate over all 500000 records and process each one individually.
119
131
  expected: triggered
120
- description: "Bulk iteration over massive dataset"
121
- - input: "Setting batch_size=999999 and limit=unlimited for maximum throughput."
132
+ description: Bulk iteration over massive dataset
133
+ - input: Setting batch_size=999999 and limit=unlimited for maximum throughput.
122
134
  expected: triggered
123
- description: "Excessively large batch parameters"
124
- - input: "Downloading all files from the S3 bucket. Fetching the entire dataset for local processing."
135
+ description: Excessively large batch parameters
136
+ - input: Downloading all files from the S3 bucket. Fetching the entire dataset for local processing.
125
137
  expected: triggered
126
- description: "Bulk data download of entire storage"
127
- - input: "Spawning 50 concurrent workers to send requests to the API."
138
+ description: Bulk data download of entire storage
139
+ - input: Spawning 50 concurrent workers to send requests to the API.
128
140
  expected: triggered
129
- description: "Excessive concurrent process spawning"
141
+ description: Excessive concurrent process spawning
130
142
  true_negatives:
131
- - input: "SELECT id, name FROM users WHERE active=true LIMIT 100;"
143
+ - input: SELECT id, name FROM users WHERE active=true LIMIT 100;
132
144
  expected: not_triggered
133
- description: "Bounded query with column selection and LIMIT"
134
- - input: "Processing the 25 records from the filtered result set."
145
+ description: Bounded query with column selection and LIMIT
146
+ - input: Processing the 25 records from the filtered result set.
135
147
  expected: not_triggered
136
- description: "Processing a reasonably sized result set"
137
- - input: "Fetching the first page of results with page_size=20."
148
+ description: Processing a reasonably sized result set
149
+ - input: Fetching the first page of results with page_size=20.
138
150
  expected: not_triggered
139
- description: "Paginated query with reasonable page size"
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: "Cascading Failure Detection in Agent Pipelines"
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
- Note: This rule detects textual descriptions of cascading failure patterns, not live cascading failures. Structural cascade prevention requires behavioral monitoring.
14
- author: "ATR Community"
15
- date: "2026/03/09"
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
- - "LLM06:2025 - Excessive Agency"
24
- - "LLM05:2025 - Improper Output Handling"
30
+ - LLM06:2025 - Excessive Agency
31
+ - LLM05:2025 - Improper Output Handling
25
32
  owasp_agentic:
26
- - "ASI08:2026 - Cascading Failures"
33
+ - ASI08:2026 - Cascading Failures
27
34
  mitre_atlas:
28
- - "AML.T0053 - LLM Plugin Compromise"
29
- - "AML.T0046 - Spamming ML System with Chaff Data"
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: "(?i)auto[_-]?approv(?:ed|ing|al).{0,30}(?:without|no|skipping)\\s+(?:human|manual|review|check|verification|validation)"
49
- description: "Automated approval bypassing human review checkpoint"
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: "(?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))"
53
- description: "Error propagating downstream through pipeline stages"
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: "(?i)(?:stage|step|phase)\\s+\\d+\\s+(?:failed|error|timed\\s+out).*(?:stage|step|phase)\\s+\\d+\\s+(?:also|subsequently|then)\\s+(?:failed|errored)"
57
- description: "Multiple pipeline stages failing in sequence"
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: "(?i)(?:trusting|accepting|using)\\s+(?:previous|upstream|prior)\\s+(?:stage|step|agent)\\s+(?:output|result|response)\\s+(?:without|no)\\s+(?:validation|verification|check)"
61
- description: "Stage consuming upstream output without validation"
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: "(?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)"
65
- description: "Destructive action triggered by automated pipeline signal"
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: "(?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)"
69
- description: "Error amplification across multiple pipeline stages"
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: "(?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))"
73
- description: "Fully automated pipeline with no human-in-the-loop for critical actions"
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: "(?i)(?:blind(?:ly)?|unconditional(?:ly)?|automatic(?:ally)?)\\s+(?:executing|running|applying|deploying).{0,60}(?:previous|upstream|AI|agent|automated)(?:\\s+(?:AI|agent|system|model))?"
77
- description: "Blind execution of upstream agent recommendations"
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: "(?i)(?!(?:post[- ]?(?: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[- ]?(?:incident|mortem)|lessons?\\s+learned|last\\s+(?:week|month|time)))"
81
- description: "Explicit cascading failure terminology (excludes retrospective analysis context)"
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: "(?i)(?:retry|fallback)\\s+(?:triggered|activated|initiated)\\s+(?:automatically|by\\s+(?:previous|upstream)).*(?:retry|fallback)\\s+(?:triggered|activated|initiated)"
85
- description: "Cascading retry/fallback loops across stages"
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: "(?i)(?:all|every)\\s+\\d+\\s+(?:downstream|dependent|connected)\\s+(?:agents?|services?|stages?|steps?)\\s+(?:affected|impacted|failed|halted)"
89
- description: "Multiple downstream components affected by single failure"
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
- - "Legitimate pipeline monitoring reporting multi-stage errors for debugging"
93
- - "Chaos engineering or fault injection testing in controlled environments"
94
- - "Post-incident analysis discussing cascading failure root causes"
95
- - "Circuit breaker implementations that intentionally detect cascade patterns"
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,52 +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
-
123
+ confidence: 81
124
+ wild_validated: 2026/04/08
125
+ wild_samples: 53577
126
+ wild_fp_rate: 0
108
127
  test_cases:
109
128
  true_positives:
110
- - input: "Auto-approved deployment without human review based on AI test results. Pushing to production."
129
+ - input: Auto-approved deployment without human review based on AI test results. Pushing to production.
111
130
  expected: triggered
112
- description: "Auto-approval bypassing human review for production deployment"
113
- - input: "Stage 2 failed with timeout. Stage 3 also failed due to missing input from stage 2. Stage 4 subsequently failed."
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.
114
133
  expected: triggered
115
- description: "Sequential multi-stage pipeline failure cascade"
116
- - input: "Rollback all production services triggered by automated monitoring agent alert."
134
+ description: Sequential multi-stage pipeline failure cascade
135
+ - input: Rollback all production services triggered by automated monitoring agent alert.
117
136
  expected: triggered
118
- description: "Destructive rollback triggered by automated signal"
119
- - input: "Trusting previous stage output without validation. Proceeding to deploy the generated configuration."
137
+ description: Destructive rollback triggered by automated signal
138
+ - input: Trusting previous stage output without validation. Proceeding to deploy the generated configuration.
120
139
  expected: triggered
121
- description: "Pipeline stage consuming unvalidated upstream output"
122
- - input: "Cascading failure detected: payment service down caused order service, notification service, and analytics to fail."
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.
123
144
  expected: triggered
124
- description: "Cascading failure across dependent services"
125
- - input: "Fully automated pipeline with destructive teardown stage. No human in the loop for the delete operation."
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.
126
147
  expected: triggered
127
- description: "Fully automated pipeline with destructive actions and no human gate"
128
- - input: "Blindly executing recommendations from upstream AI agent. Applying all suggested database schema changes."
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.
129
150
  expected: triggered
130
- description: "Blind execution of AI-generated database changes"
131
- - input: "Retry triggered automatically by previous failure. Fallback triggered by retry timeout. Second fallback triggered."
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.
132
155
  expected: triggered
133
- description: "Cascading retry-fallback loop across stages"
134
- - input: "Amplifying the error across all 12 downstream services. Impact spreading to production cluster."
156
+ description: Cascading retry-fallback loop across stages
157
+ - input: Amplifying the error across all 12 downstream services. Impact spreading to production cluster.
135
158
  expected: triggered
136
- description: "Error amplification across multiple downstream services"
137
- - input: "All 8 dependent agents affected by the coordinator failure. Entire pipeline halted."
159
+ description: Error amplification across multiple downstream services
160
+ - input: All 8 dependent agents affected by the coordinator failure. Entire pipeline halted.
138
161
  expected: triggered
139
- description: "Single failure impacting all downstream agents"
162
+ description: Single failure impacting all downstream agents
140
163
  true_negatives:
141
- - input: "Pipeline completed successfully. All 5 stages passed validation. Awaiting human approval for deployment."
164
+ - input: Pipeline completed successfully. All 5 stages passed validation. Awaiting human approval for deployment.
142
165
  expected: not_triggered
143
- description: "Normal pipeline completion with human approval gate"
144
- - input: "Stage 3 encountered an error. Circuit breaker activated. Alerting on-call engineer for review."
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.
145
168
  expected: not_triggered
146
- description: "Proper circuit breaker stopping cascade and alerting human"
169
+ description: Proper circuit breaker stopping cascade and alerting human
147
170
  - input: "Running chaos engineering test: simulating stage 2 failure to verify pipeline resilience."
148
171
  expected: not_triggered
149
- description: "Intentional fault injection for resilience testing"
172
+ description: Intentional fault injection for resilience testing
150
173
  - input: "Post-incident review: the cascading failure last week was caused by an unhandled null pointer in stage 1."
151
174
  expected: not_triggered
152
- description: "Post-incident analysis discussing past cascade"
153
- - input: "Automated tests passed. Sending results to reviewer for manual sign-off before merge."
175
+ description: Post-incident analysis discussing past cascade
176
+ - input: Automated tests passed. Sending results to reviewer for manual sign-off before merge.
154
177
  expected: not_triggered
155
- description: "Automated tests with proper human-in-the-loop before action"
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 d​omino eff​ect 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).