@panguard-ai/atr 1.1.0 → 1.4.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 (63) hide show
  1. package/package.json +11 -10
  2. package/rules/agent-manipulation/ATR-2026-030-cross-agent-attack.yaml +51 -51
  3. package/rules/agent-manipulation/ATR-2026-032-goal-hijacking.yaml +36 -36
  4. package/rules/agent-manipulation/ATR-2026-074-cross-agent-privilege-escalation.yaml +32 -32
  5. package/rules/agent-manipulation/ATR-2026-076-inter-agent-message-spoofing.yaml +55 -55
  6. package/rules/agent-manipulation/ATR-2026-077-human-trust-exploitation.yaml +42 -42
  7. package/rules/agent-manipulation/ATR-2026-116-a2a-message-validation.yaml +90 -0
  8. package/rules/agent-manipulation/ATR-2026-117-agent-identity-spoofing.yaml +90 -0
  9. package/rules/agent-manipulation/ATR-2026-118-approval-fatigue.yaml +87 -0
  10. package/rules/agent-manipulation/ATR-2026-119-social-engineering-via-agent.yaml +87 -0
  11. package/rules/context-exfiltration/ATR-2026-020-system-prompt-leak.yaml +51 -51
  12. package/rules/context-exfiltration/ATR-2026-021-api-key-exposure.yaml +62 -62
  13. package/rules/context-exfiltration/ATR-2026-075-agent-memory-manipulation.yaml +33 -33
  14. package/rules/context-exfiltration/ATR-2026-113-credential-theft.yaml +87 -0
  15. package/rules/context-exfiltration/ATR-2026-114-oauth-token-abuse.yaml +87 -0
  16. package/rules/context-exfiltration/ATR-2026-115-env-var-harvesting.yaml +88 -0
  17. package/rules/data-poisoning/ATR-2026-070-data-poisoning.yaml +53 -53
  18. package/rules/excessive-autonomy/ATR-2026-050-runaway-agent-loop.yaml +39 -39
  19. package/rules/excessive-autonomy/ATR-2026-051-resource-exhaustion.yaml +41 -41
  20. package/rules/excessive-autonomy/ATR-2026-052-cascading-failure.yaml +54 -54
  21. package/rules/excessive-autonomy/ATR-2026-098-unauthorized-financial-action.yaml +54 -54
  22. package/rules/excessive-autonomy/ATR-2026-099-high-risk-tool-gate.yaml +70 -55
  23. package/rules/model-security/ATR-2026-072-model-behavior-extraction.yaml +34 -34
  24. package/rules/model-security/ATR-2026-073-malicious-finetuning-data.yaml +26 -26
  25. package/rules/privilege-escalation/ATR-2026-040-privilege-escalation.yaml +58 -58
  26. package/rules/privilege-escalation/ATR-2026-041-scope-creep.yaml +35 -35
  27. package/rules/privilege-escalation/ATR-2026-110-eval-injection.yaml +90 -0
  28. package/rules/privilege-escalation/ATR-2026-111-shell-escape.yaml +91 -0
  29. package/rules/privilege-escalation/ATR-2026-112-dynamic-import-exploitation.yaml +87 -0
  30. package/rules/prompt-injection/ATR-2026-001-direct-prompt-injection.yaml +118 -10
  31. package/rules/prompt-injection/ATR-2026-002-indirect-prompt-injection.yaml +63 -63
  32. package/rules/prompt-injection/ATR-2026-003-jailbreak-attempt.yaml +221 -76
  33. package/rules/prompt-injection/ATR-2026-004-system-prompt-override.yaml +157 -55
  34. package/rules/prompt-injection/ATR-2026-005-multi-turn-injection.yaml +47 -47
  35. package/rules/prompt-injection/ATR-2026-080-encoding-evasion.yaml +19 -12
  36. package/rules/prompt-injection/ATR-2026-081-semantic-multi-turn.yaml +21 -14
  37. package/rules/prompt-injection/ATR-2026-082-fingerprint-evasion.yaml +20 -13
  38. package/rules/prompt-injection/ATR-2026-083-indirect-tool-injection.yaml +23 -13
  39. package/rules/prompt-injection/ATR-2026-084-structured-data-injection.yaml +21 -14
  40. package/rules/prompt-injection/ATR-2026-085-audit-evasion.yaml +20 -13
  41. package/rules/prompt-injection/ATR-2026-086-visual-spoofing.yaml +20 -13
  42. package/rules/prompt-injection/ATR-2026-087-rule-probing.yaml +20 -13
  43. package/rules/prompt-injection/ATR-2026-088-adaptive-countermeasure.yaml +20 -13
  44. package/rules/prompt-injection/ATR-2026-089-polymorphic-skill.yaml +18 -11
  45. package/rules/prompt-injection/ATR-2026-090-threat-intel-exfil.yaml +20 -13
  46. package/rules/prompt-injection/ATR-2026-091-nested-payload.yaml +20 -13
  47. package/rules/prompt-injection/ATR-2026-092-consensus-poisoning.yaml +22 -15
  48. package/rules/prompt-injection/ATR-2026-093-gradual-escalation.yaml +21 -14
  49. package/rules/prompt-injection/ATR-2026-094-audit-bypass.yaml +20 -13
  50. package/rules/prompt-injection/ATR-2026-097-cjk-injection-patterns.yaml +230 -73
  51. package/rules/skill-compromise/ATR-2026-060-skill-impersonation.yaml +53 -53
  52. package/rules/skill-compromise/ATR-2026-061-description-behavior-mismatch.yaml +21 -21
  53. package/rules/skill-compromise/ATR-2026-062-hidden-capability.yaml +22 -22
  54. package/rules/skill-compromise/ATR-2026-063-skill-chain-attack.yaml +21 -21
  55. package/rules/skill-compromise/ATR-2026-064-over-permissioned-skill.yaml +29 -29
  56. package/rules/skill-compromise/ATR-2026-065-skill-update-attack.yaml +22 -22
  57. package/rules/skill-compromise/ATR-2026-066-parameter-injection.yaml +23 -23
  58. package/rules/tool-poisoning/ATR-2026-010-mcp-malicious-response.yaml +70 -70
  59. package/rules/tool-poisoning/ATR-2026-011-tool-output-injection.yaml +60 -51
  60. package/rules/tool-poisoning/ATR-2026-012-unauthorized-tool-call.yaml +67 -58
  61. package/rules/tool-poisoning/ATR-2026-013-tool-ssrf.yaml +72 -63
  62. package/rules/tool-poisoning/ATR-2026-095-supply-chain-poisoning.yaml +23 -13
  63. package/rules/tool-poisoning/ATR-2026-096-registry-poisoning.yaml +23 -13
@@ -1,4 +1,4 @@
1
- title: 'Agent Resource Exhaustion Detection'
1
+ title: "Agent Resource Exhaustion Detection"
2
2
  id: ATR-2026-051
3
3
  status: experimental
4
4
  description: |
@@ -9,22 +9,22 @@ description: |
9
9
  as SELECT * without LIMIT, mass iteration directives, unbounded batch
10
10
  sizes, and fork/spawn patterns that can degrade system performance or
11
11
  cause denial of service.
12
- author: 'ATR Community'
13
- date: '2026/03/08'
14
- schema_version: '0.1'
12
+ author: "ATR Community"
13
+ date: "2026/03/08"
14
+ schema_version: "0.1"
15
15
  detection_tier: pattern
16
16
  maturity: experimental
17
17
  severity: high
18
18
 
19
19
  references:
20
20
  owasp_llm:
21
- - 'LLM06:2025 - Excessive Agency'
22
- - 'LLM10:2025 - Unbounded Consumption'
21
+ - "LLM06:2025 - Excessive Agency"
22
+ - "LLM10:2025 - Unbounded Consumption"
23
23
  owasp_agentic:
24
- - 'ASI05:2026 - Unexpected Code Execution'
24
+ - "ASI05:2026 - Unexpected Code Execution"
25
25
  mitre_atlas:
26
- - 'AML.T0046 - Spamming ML System with Chaff Data'
27
- - 'AML.T0053 - LLM Plugin Compromise'
26
+ - "AML.T0046 - Spamming ML System with Chaff Data"
27
+ - "AML.T0053 - LLM Plugin Compromise"
28
28
 
29
29
  tags:
30
30
  category: excessive-autonomy
@@ -43,57 +43,57 @@ detection:
43
43
  - field: content
44
44
  operator: regex
45
45
  value: "(?i)SELECT\\s+\\*\\s+FROM\\s+\\w+(?:\\s*;|\\s*$|\\s+WHERE)(?!.*\\bLIMIT\\b)"
46
- description: 'Unbounded SELECT * query without LIMIT clause'
46
+ description: "Unbounded SELECT * query without LIMIT clause"
47
47
  - field: content
48
48
  operator: regex
49
49
  value: "(?i)(?:for\\s+each|iterate\\s+(?:over\\s+)?(?:all|every)|process\\s+(?:all|every|each)\\s+(?:record|row|entry|item|file|document))"
50
- description: 'Bulk iteration directive over entire dataset'
50
+ description: "Bulk iteration directive over entire dataset"
51
51
  - field: content
52
52
  operator: regex
53
53
  value: "(?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'
54
+ description: "Excessively large or unbounded query parameters"
55
55
  - field: content
56
56
  operator: regex
57
57
  value: "(?i)(?:delete\\s+(?:all|every|each)\\s+(?:files?|records?|entries|rows?|documents?)|rm\\s+-rf\\s+[/*]|truncate\\s+(?:all\\s+)?(?:tables?|data))"
58
- description: 'Mass deletion or truncation operations'
58
+ description: "Mass deletion or truncation operations"
59
59
  - field: content
60
60
  operator: regex
61
61
  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))"
62
- description: 'Bulk data download or retrieval of entire datasets'
62
+ description: "Bulk data download or retrieval of entire datasets"
63
63
  - field: content
64
64
  operator: regex
65
65
  value: "(?i)(?:send\\s+(?:a\\s+)?(?:request|message|email|notification)\\s+to\\s+(?:all|every|each)\\s+(?:user|member|contact|subscriber|endpoint))"
66
- description: 'Mass messaging or notification blast patterns'
66
+ description: "Mass messaging or notification blast patterns"
67
67
  - field: content
68
68
  operator: regex
69
69
  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))"
70
- description: 'Spawning excessive concurrent processes or connections'
70
+ description: "Spawning excessive concurrent processes or connections"
71
71
  - field: content
72
72
  operator: regex
73
73
  value: "(?i)(?:while\\s*\\(\\s*true\\s*\\)|for\\s*\\(\\s*;\\s*;\\s*\\)|do\\s*\\{).*(?:fetch|request|call|query|send|write)"
74
- description: 'Infinite loop with resource-consuming operations inside'
74
+ description: "Infinite loop with resource-consuming operations inside"
75
75
  - field: content
76
76
  operator: regex
77
77
  value: "(?i)(?:(?:scrape|crawl|spider|harvest)\\s+(?:all|every|the\\s+entire)\\s+(?:site|website|domain|pages?)|recursive(?:ly)?\\s+(?:crawl|scrape|fetch|download))"
78
- description: 'Unbounded web scraping or crawling operations'
78
+ description: "Unbounded web scraping or crawling operations"
79
79
  - field: content
80
80
  operator: regex
81
81
  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?))"
82
- description: 'Explicit removal of rate limits or resource caps'
82
+ description: "Explicit removal of rate limits or resource caps"
83
83
  - field: content
84
84
  operator: regex
85
85
  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))"
86
- description: 'Full corpus processing or scanning massive datasets'
86
+ description: "Full corpus processing or scanning massive datasets"
87
87
  - field: content
88
88
  operator: regex
89
89
  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))"
90
- description: 'Mass data replication or copy operations'
90
+ description: "Mass data replication or copy operations"
91
91
  condition: any
92
92
  false_positives:
93
- - 'Authorized large-scale data processing or ETL pipeline agents'
94
- - 'Batch analysis tasks with expected high volume approved by admin'
95
- - 'Initial data ingestion or indexing operations with known high volume'
96
- - 'Database export operations authorized by data team'
93
+ - "Authorized large-scale data processing or ETL pipeline agents"
94
+ - "Batch analysis tasks with expected high volume approved by admin"
95
+ - "Initial data ingestion or indexing operations with known high volume"
96
+ - "Database export operations authorized by data team"
97
97
 
98
98
  response:
99
99
  actions:
@@ -110,28 +110,28 @@ response:
110
110
 
111
111
  test_cases:
112
112
  true_positives:
113
- - input: 'SELECT * FROM transactions;'
113
+ - input: "SELECT * FROM transactions;"
114
114
  expected: triggered
115
- description: 'Unbounded SELECT query without LIMIT'
116
- - input: 'I will iterate over all 500000 records and process each one individually.'
115
+ description: "Unbounded SELECT query without LIMIT"
116
+ - input: "I will iterate over all 500000 records and process each one individually."
117
117
  expected: triggered
118
- description: 'Bulk iteration over massive dataset'
119
- - input: 'Setting batch_size=999999 and limit=unlimited for maximum throughput.'
118
+ description: "Bulk iteration over massive dataset"
119
+ - input: "Setting batch_size=999999 and limit=unlimited for maximum throughput."
120
120
  expected: triggered
121
- description: 'Excessively large batch parameters'
122
- - input: 'Downloading all files from the S3 bucket. Fetching the entire dataset for local processing.'
121
+ description: "Excessively large batch parameters"
122
+ - input: "Downloading all files from the S3 bucket. Fetching the entire dataset for local processing."
123
123
  expected: triggered
124
- description: 'Bulk data download of entire storage'
125
- - input: 'Spawning 50 concurrent workers to send requests to the API.'
124
+ description: "Bulk data download of entire storage"
125
+ - input: "Spawning 50 concurrent workers to send requests to the API."
126
126
  expected: triggered
127
- description: 'Excessive concurrent process spawning'
127
+ description: "Excessive concurrent process spawning"
128
128
  true_negatives:
129
- - input: 'SELECT id, name FROM users WHERE active=true LIMIT 100;'
129
+ - input: "SELECT id, name FROM users WHERE active=true LIMIT 100;"
130
130
  expected: not_triggered
131
- description: 'Bounded query with column selection and LIMIT'
132
- - input: 'Processing the 25 records from the filtered result set.'
131
+ description: "Bounded query with column selection and LIMIT"
132
+ - input: "Processing the 25 records from the filtered result set."
133
133
  expected: not_triggered
134
- description: 'Processing a reasonably sized result set'
135
- - input: 'Fetching the first page of results with page_size=20.'
134
+ description: "Processing a reasonably sized result set"
135
+ - input: "Fetching the first page of results with page_size=20."
136
136
  expected: not_triggered
137
- description: 'Paginated query with reasonable page size'
137
+ description: "Paginated query with reasonable page size"
@@ -1,4 +1,4 @@
1
- title: 'Cascading Failure Detection in Agent Pipelines'
1
+ title: "Cascading Failure Detection in Agent Pipelines"
2
2
  id: ATR-2026-052
3
3
  status: experimental
4
4
  description: |
@@ -10,22 +10,22 @@ description: |
10
10
  incorrect signals. These patterns exploit the "trust the previous
11
11
  stage" assumption in multi-step agent workflows.
12
12
  Note: This rule detects textual descriptions of cascading failure patterns, not live cascading failures. Structural cascade prevention requires behavioral monitoring.
13
- author: 'ATR Community'
14
- date: '2026/03/09'
15
- schema_version: '0.1'
13
+ author: "ATR Community"
14
+ date: "2026/03/09"
15
+ schema_version: "0.1"
16
16
  detection_tier: pattern
17
17
  maturity: experimental
18
18
  severity: high
19
19
 
20
20
  references:
21
21
  owasp_llm:
22
- - 'LLM06:2025 - Excessive Agency'
23
- - 'LLM05:2025 - Improper Output Handling'
22
+ - "LLM06:2025 - Excessive Agency"
23
+ - "LLM05:2025 - Improper Output Handling"
24
24
  owasp_agentic:
25
- - 'ASI08:2026 - Cascading Failures'
25
+ - "ASI08:2026 - Cascading Failures"
26
26
  mitre_atlas:
27
- - 'AML.T0053 - LLM Plugin Compromise'
28
- - 'AML.T0046 - Spamming ML System with Chaff Data'
27
+ - "AML.T0053 - LLM Plugin Compromise"
28
+ - "AML.T0046 - Spamming ML System with Chaff Data"
29
29
 
30
30
  tags:
31
31
  category: excessive-autonomy
@@ -44,53 +44,53 @@ detection:
44
44
  - field: content
45
45
  operator: regex
46
46
  value: "(?i)auto[_-]?approv(?:ed|ing|al).{0,30}(?:without|no|skipping)\\s+(?:human|manual|review|check|verification|validation)"
47
- description: 'Automated approval bypassing human review checkpoint'
47
+ description: "Automated approval bypassing human review checkpoint"
48
48
  - field: content
49
49
  operator: regex
50
50
  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))"
51
- description: 'Error propagating downstream through pipeline stages'
51
+ description: "Error propagating downstream through pipeline stages"
52
52
  - field: content
53
53
  operator: regex
54
54
  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)"
55
- description: 'Multiple pipeline stages failing in sequence'
55
+ description: "Multiple pipeline stages failing in sequence"
56
56
  - field: content
57
57
  operator: regex
58
58
  value: "(?i)(?:trusting|accepting|using)\\s+(?:previous|upstream|prior)\\s+(?:stage|step|agent)\\s+(?:output|result|response)\\s+(?:without|no)\\s+(?:validation|verification|check)"
59
- description: 'Stage consuming upstream output without validation'
59
+ description: "Stage consuming upstream output without validation"
60
60
  - field: content
61
61
  operator: regex
62
62
  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)"
63
- description: 'Destructive action triggered by automated pipeline signal'
63
+ description: "Destructive action triggered by automated pipeline signal"
64
64
  - field: content
65
65
  operator: regex
66
66
  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)"
67
- description: 'Error amplification across multiple pipeline stages'
67
+ description: "Error amplification across multiple pipeline stages"
68
68
  - field: content
69
69
  operator: regex
70
70
  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))"
71
- description: 'Fully automated pipeline with no human-in-the-loop for critical actions'
71
+ description: "Fully automated pipeline with no human-in-the-loop for critical actions"
72
72
  - field: content
73
73
  operator: regex
74
74
  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))?"
75
- description: 'Blind execution of upstream agent recommendations'
75
+ description: "Blind execution of upstream agent recommendations"
76
76
  - field: content
77
77
  operator: regex
78
78
  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)))"
79
- description: 'Explicit cascading failure terminology (excludes retrospective analysis context)'
79
+ description: "Explicit cascading failure terminology (excludes retrospective analysis context)"
80
80
  - field: content
81
81
  operator: regex
82
82
  value: "(?i)(?:retry|fallback)\\s+(?:triggered|activated|initiated)\\s+(?:automatically|by\\s+(?:previous|upstream)).*(?:retry|fallback)\\s+(?:triggered|activated|initiated)"
83
- description: 'Cascading retry/fallback loops across stages'
83
+ description: "Cascading retry/fallback loops across stages"
84
84
  - field: content
85
85
  operator: regex
86
86
  value: "(?i)(?:all|every)\\s+\\d+\\s+(?:downstream|dependent|connected)\\s+(?:agents?|services?|stages?|steps?)\\s+(?:affected|impacted|failed|halted)"
87
- description: 'Multiple downstream components affected by single failure'
87
+ description: "Multiple downstream components affected by single failure"
88
88
  condition: any
89
89
  false_positives:
90
- - 'Legitimate pipeline monitoring reporting multi-stage errors for debugging'
91
- - 'Chaos engineering or fault injection testing in controlled environments'
92
- - 'Post-incident analysis discussing cascading failure root causes'
93
- - 'Circuit breaker implementations that intentionally detect cascade patterns'
90
+ - "Legitimate pipeline monitoring reporting multi-stage errors for debugging"
91
+ - "Chaos engineering or fault injection testing in controlled environments"
92
+ - "Post-incident analysis discussing cascading failure root causes"
93
+ - "Circuit breaker implementations that intentionally detect cascade patterns"
94
94
 
95
95
  response:
96
96
  actions:
@@ -105,49 +105,49 @@ response:
105
105
 
106
106
  test_cases:
107
107
  true_positives:
108
- - input: 'Auto-approved deployment without human review based on AI test results. Pushing to production.'
108
+ - input: "Auto-approved deployment without human review based on AI test results. Pushing to production."
109
109
  expected: triggered
110
- description: 'Auto-approval bypassing human review for production deployment'
111
- - input: 'Stage 2 failed with timeout. Stage 3 also failed due to missing input from stage 2. Stage 4 subsequently failed.'
110
+ description: "Auto-approval bypassing human review for production deployment"
111
+ - input: "Stage 2 failed with timeout. Stage 3 also failed due to missing input from stage 2. Stage 4 subsequently failed."
112
112
  expected: triggered
113
- description: 'Sequential multi-stage pipeline failure cascade'
114
- - input: 'Rollback all production services triggered by automated monitoring agent alert.'
113
+ description: "Sequential multi-stage pipeline failure cascade"
114
+ - input: "Rollback all production services triggered by automated monitoring agent alert."
115
115
  expected: triggered
116
- description: 'Destructive rollback triggered by automated signal'
117
- - input: 'Trusting previous stage output without validation. Proceeding to deploy the generated configuration.'
116
+ description: "Destructive rollback triggered by automated signal"
117
+ - input: "Trusting previous stage output without validation. Proceeding to deploy the generated configuration."
118
118
  expected: triggered
119
- description: 'Pipeline stage consuming unvalidated upstream output'
120
- - input: 'Cascading failure detected: payment service down caused order service, notification service, and analytics to fail.'
119
+ description: "Pipeline stage consuming unvalidated upstream output"
120
+ - input: "Cascading failure detected: payment service down caused order service, notification service, and analytics to fail."
121
121
  expected: triggered
122
- description: 'Cascading failure across dependent services'
123
- - input: 'Fully automated pipeline with destructive teardown stage. No human in the loop for the delete operation.'
122
+ description: "Cascading failure across dependent services"
123
+ - input: "Fully automated pipeline with destructive teardown stage. No human in the loop for the delete operation."
124
124
  expected: triggered
125
- description: 'Fully automated pipeline with destructive actions and no human gate'
126
- - input: 'Blindly executing recommendations from upstream AI agent. Applying all suggested database schema changes.'
125
+ description: "Fully automated pipeline with destructive actions and no human gate"
126
+ - input: "Blindly executing recommendations from upstream AI agent. Applying all suggested database schema changes."
127
127
  expected: triggered
128
- description: 'Blind execution of AI-generated database changes'
129
- - input: 'Retry triggered automatically by previous failure. Fallback triggered by retry timeout. Second fallback triggered.'
128
+ description: "Blind execution of AI-generated database changes"
129
+ - input: "Retry triggered automatically by previous failure. Fallback triggered by retry timeout. Second fallback triggered."
130
130
  expected: triggered
131
- description: 'Cascading retry-fallback loop across stages'
132
- - input: 'Amplifying the error across all 12 downstream services. Impact spreading to production cluster.'
131
+ description: "Cascading retry-fallback loop across stages"
132
+ - input: "Amplifying the error across all 12 downstream services. Impact spreading to production cluster."
133
133
  expected: triggered
134
- description: 'Error amplification across multiple downstream services'
135
- - input: 'All 8 dependent agents affected by the coordinator failure. Entire pipeline halted.'
134
+ description: "Error amplification across multiple downstream services"
135
+ - input: "All 8 dependent agents affected by the coordinator failure. Entire pipeline halted."
136
136
  expected: triggered
137
- description: 'Single failure impacting all downstream agents'
137
+ description: "Single failure impacting all downstream agents"
138
138
  true_negatives:
139
- - input: 'Pipeline completed successfully. All 5 stages passed validation. Awaiting human approval for deployment.'
139
+ - input: "Pipeline completed successfully. All 5 stages passed validation. Awaiting human approval for deployment."
140
140
  expected: not_triggered
141
- description: 'Normal pipeline completion with human approval gate'
142
- - input: 'Stage 3 encountered an error. Circuit breaker activated. Alerting on-call engineer for review.'
141
+ description: "Normal pipeline completion with human approval gate"
142
+ - input: "Stage 3 encountered an error. Circuit breaker activated. Alerting on-call engineer for review."
143
143
  expected: not_triggered
144
- description: 'Proper circuit breaker stopping cascade and alerting human'
145
- - input: 'Running chaos engineering test: simulating stage 2 failure to verify pipeline resilience.'
144
+ description: "Proper circuit breaker stopping cascade and alerting human"
145
+ - input: "Running chaos engineering test: simulating stage 2 failure to verify pipeline resilience."
146
146
  expected: not_triggered
147
- description: 'Intentional fault injection for resilience testing'
148
- - input: 'Post-incident review: the cascading failure last week was caused by an unhandled null pointer in stage 1.'
147
+ description: "Intentional fault injection for resilience testing"
148
+ - input: "Post-incident review: the cascading failure last week was caused by an unhandled null pointer in stage 1."
149
149
  expected: not_triggered
150
- description: 'Post-incident analysis discussing past cascade'
151
- - input: 'Automated tests passed. Sending results to reviewer for manual sign-off before merge.'
150
+ description: "Post-incident analysis discussing past cascade"
151
+ - input: "Automated tests passed. Sending results to reviewer for manual sign-off before merge."
152
152
  expected: not_triggered
153
- description: 'Automated tests with proper human-in-the-loop before action'
153
+ description: "Automated tests with proper human-in-the-loop before action"
@@ -1,4 +1,4 @@
1
- title: 'Unauthorized Financial Action by AI Agent'
1
+ title: "Unauthorized Financial Action by AI Agent"
2
2
  id: ATR-2026-098
3
3
  status: experimental
4
4
  description: |
@@ -15,21 +15,21 @@ description: |
15
15
  Covers: WeChat red packets, Alipay/WeChat Pay transfers, bank transfers,
16
16
  crypto transactions, subscription purchases, in-app purchases, and
17
17
  generic payment API calls.
18
- author: 'ATR Community'
19
- date: '2026/03/11'
20
- schema_version: '0.1'
18
+ author: "ATR Community"
19
+ date: "2026/03/11"
20
+ schema_version: "0.1"
21
21
  detection_tier: pattern
22
22
  maturity: experimental
23
23
  severity: critical
24
24
 
25
25
  references:
26
26
  owasp_llm:
27
- - 'LLM06:2025 - Excessive Agency'
27
+ - "LLM06:2025 - Excessive Agency"
28
28
  owasp_agentic:
29
- - 'ASI08:2026 - Excessive Autonomy'
30
- - 'ASI09:2026 - Inadequate Access Controls'
29
+ - "ASI08:2026 - Excessive Autonomy"
30
+ - "ASI09:2026 - Inadequate Access Controls"
31
31
  mitre_atlas:
32
- - 'AML.T0053 - LLM Plugin Compromise'
32
+ - "AML.T0053 - LLM Plugin Compromise"
33
33
 
34
34
  tags:
35
35
  category: excessive-autonomy
@@ -48,50 +48,50 @@ detection:
48
48
  # -- Tool name patterns: payment/transfer tools --
49
49
  - field: tool_name
50
50
  operator: regex
51
- value: '(?i)(send_red_packet|send_hongbao|send_money|transfer_money|make_payment|pay_bill|send_payment|create_payment|process_payment|execute_transfer|bank_transfer|wire_transfer|crypto_send|crypto_transfer)'
52
- description: 'Direct financial tool call by name'
51
+ value: "(?i)(send_red_packet|send_hongbao|send_money|transfer_money|make_payment|pay_bill|send_payment|create_payment|process_payment|execute_transfer|bank_transfer|wire_transfer|crypto_send|crypto_transfer)"
52
+ description: "Direct financial tool call by name"
53
53
  - field: tool_name
54
54
  operator: regex
55
- value: '(?i)(红包|紅包|转账|轉帳|付款|支付|汇款|匯款|打款|打錢|充值|充幣)'
56
- description: 'Chinese financial tool name patterns'
55
+ value: "(?i)(红包|紅包|转账|轉帳|付款|支付|汇款|匯款|打款|打錢|充值|充幣)"
56
+ description: "Chinese financial tool name patterns"
57
57
  - field: tool_name
58
58
  operator: regex
59
- value: '(?i)(wechat_pay|alipay|apple_pay|google_pay|stripe_charge|paypal_send|venmo_send|cashapp_send|zelle_send)'
60
- description: 'Named payment platform tool calls'
59
+ value: "(?i)(wechat_pay|alipay|apple_pay|google_pay|stripe_charge|paypal_send|venmo_send|cashapp_send|zelle_send)"
60
+ description: "Named payment platform tool calls"
61
61
  # -- Tool args: financial action indicators --
62
62
  - field: tool_args
63
63
  operator: regex
64
64
  value: "(?i)(\"amount\"\\s*:\\s*\\d+|\"currency\"\\s*:\\s*\"|\"recipient\"\\s*:\\s*\"|\"payment_method\"\\s*:\\s*\"|\"account_number\"\\s*:\\s*\")"
65
- description: 'Financial parameters in tool arguments (amount, currency, recipient)'
65
+ description: "Financial parameters in tool arguments (amount, currency, recipient)"
66
66
  - field: tool_args
67
67
  operator: regex
68
68
  value: "(?i)(\"action\"\\s*:\\s*\"(pay|transfer|send|withdraw|purchase)\"|\"type\"\\s*:\\s*\"(payment|transfer|withdrawal|purchase)\")"
69
- description: 'Financial action type in tool arguments'
69
+ description: "Financial action type in tool arguments"
70
70
  # -- Content: agent declaring intent to make financial action --
71
71
  - field: content
72
72
  operator: regex
73
73
  value: "(?i)(I('ll|\\s+will)|let\\s+me|going\\s+to|about\\s+to|proceeding\\s+to|executing)\\s+(send|transfer|pay|wire|remit|deposit|withdraw)\\s+.{0,30}(\\$|USD|EUR|CNY|RMB|元|円|원|\\d+\\.?\\d*)"
74
- description: 'Agent declaring intent to execute financial action with amount'
74
+ description: "Agent declaring intent to execute financial action with amount"
75
75
  - field: content
76
76
  operator: regex
77
- value: '(我(将|要|来|來|正在|准备|準備)?|正在|即将|即將).{0,10}(发送|發送|转账|轉帳|支付|付款|汇款|匯款|打款).{0,20}(元|块|塊|美元|人民币|人民幣)'
78
- description: 'Chinese: agent declaring financial action with currency'
77
+ value: "(我(将|要|来|來|正在|准备|準備)?|正在|即将|即將).{0,10}(发送|發送|转账|轉帳|支付|付款|汇款|匯款|打款).{0,20}(元|块|塊|美元|人民币|人民幣)"
78
+ description: "Chinese: agent declaring financial action with currency"
79
79
  # -- Content: agent executing financial operation keywords --
80
80
  - field: content
81
81
  operator: regex
82
82
  value: "(?i)(payment\\s+(successful|completed|processed|sent|confirmed)|transfer\\s+(successful|completed|sent|initiated)|red\\s+packet\\s+sent|hongbao\\s+sent|money\\s+sent)"
83
- description: 'Agent confirming financial action was executed'
83
+ description: "Agent confirming financial action was executed"
84
84
  - field: content
85
85
  operator: regex
86
- value: '(红包已发|紅包已發|转账成功|轉帳成功|付款成功|支付完成|汇款已发|匯款已發|已发送.*元|已發送.*元)'
87
- description: 'Chinese: agent confirming financial action completed'
86
+ value: "(红包已发|紅包已發|转账成功|轉帳成功|付款成功|支付完成|汇款已发|匯款已發|已发送.*元|已發送.*元)"
87
+ description: "Chinese: agent confirming financial action completed"
88
88
 
89
89
  condition: any
90
90
  false_positives:
91
- - 'User explicitly asking agent to check payment status (read-only)'
92
- - 'Agent displaying payment history or transaction records'
93
- - 'Financial education chatbot explaining how payments work'
94
- - 'Agent generating payment-related code (not executing)'
91
+ - "User explicitly asking agent to check payment status (read-only)"
92
+ - "Agent displaying payment history or transaction records"
93
+ - "Financial education chatbot explaining how payments work"
94
+ - "Agent generating payment-related code (not executing)"
95
95
 
96
96
  response:
97
97
  actions:
@@ -110,46 +110,46 @@ response:
110
110
  test_cases:
111
111
  true_positives:
112
112
  - tool_call:
113
- name: 'send_red_packet'
114
- args: '{"amount": 200, "recipient": "user123"}'
113
+ name: "send_red_packet"
114
+ args: "{\"amount\": 200, \"recipient\": \"user123\"}"
115
115
  expected: triggered
116
- description: 'Direct red packet send tool call'
116
+ description: "Direct red packet send tool call"
117
117
  - tool_call:
118
- name: 'wechat_pay'
119
- args: '{"action": "transfer", "amount": 200, "to": "wxid_abc"}'
118
+ name: "wechat_pay"
119
+ args: "{\"action\": \"transfer\", \"amount\": 200, \"to\": \"wxid_abc\"}"
120
120
  expected: triggered
121
- description: 'WeChat Pay transfer tool call'
122
- - input: '我将发送200元红包给用户'
123
- tool_name: 'agent_action'
121
+ description: "WeChat Pay transfer tool call"
122
+ - input: "我将发送200元红包给用户"
123
+ tool_name: "agent_action"
124
124
  expected: triggered
125
- description: 'Agent declaring intent to send red packet'
126
- - input: '红包已发送成功,金额200元'
127
- tool_name: 'agent_action'
125
+ description: "Agent declaring intent to send red packet"
126
+ - input: "红包已发送成功,金额200元"
127
+ tool_name: "agent_action"
128
128
  expected: triggered
129
- description: 'Agent confirming red packet was sent'
129
+ description: "Agent confirming red packet was sent"
130
130
  - input: "I'll transfer $500 to the specified account now"
131
- tool_name: 'agent_action'
131
+ tool_name: "agent_action"
132
132
  expected: triggered
133
- description: 'English: agent declaring financial transfer'
134
- - input: 'Payment successful. $200 has been sent to recipient.'
135
- tool_name: 'agent_action'
133
+ description: "English: agent declaring financial transfer"
134
+ - input: "Payment successful. $200 has been sent to recipient."
135
+ tool_name: "agent_action"
136
136
  expected: triggered
137
- description: 'Agent confirming payment completion'
137
+ description: "Agent confirming payment completion"
138
138
  - tool_call:
139
- name: '转账'
140
- args: '{"金额": 500, "收款人": "user456"}'
139
+ name: "转账"
140
+ args: "{\"金额\": 500, \"收款人\": \"user456\"}"
141
141
  expected: triggered
142
- description: 'Chinese-named transfer tool'
142
+ description: "Chinese-named transfer tool"
143
143
  true_negatives:
144
- - input: 'Your last payment of $50 was processed on March 1st'
144
+ - input: "Your last payment of $50 was processed on March 1st"
145
145
  expected: not_triggered
146
- description: 'Displaying payment history (read-only)'
147
- - input: 'Here is the code to integrate Stripe payments: stripe.charges.create({amount: 2000})'
146
+ description: "Displaying payment history (read-only)"
147
+ - input: "Here is the code to integrate Stripe payments: stripe.charges.create({amount: 2000})"
148
148
  expected: not_triggered
149
- description: 'Generating payment code, not executing'
150
- - input: 'The transfer feature is currently unavailable'
149
+ description: "Generating payment code, not executing"
150
+ - input: "The transfer feature is currently unavailable"
151
151
  expected: not_triggered
152
- description: 'Informational message about transfer status'
153
- - input: '请问我的红包余额是多少?'
152
+ description: "Informational message about transfer status"
153
+ - input: "请问我的红包余额是多少?"
154
154
  expected: not_triggered
155
- description: 'User asking about red packet balance (read-only query)'
155
+ description: "User asking about red packet balance (read-only query)"