@panguard-ai/atr 1.4.0 → 1.4.2

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 (109) hide show
  1. package/dist/cli.js +0 -0
  2. package/dist/engine.d.ts +9 -0
  3. package/dist/engine.d.ts.map +1 -1
  4. package/dist/engine.js +134 -4
  5. package/dist/engine.js.map +1 -1
  6. package/dist/types.d.ts +83 -1
  7. package/dist/types.d.ts.map +1 -1
  8. package/package.json +1 -1
  9. package/rules/agent-manipulation/{ATR-2026-030-cross-agent-attack.yaml → ATR-2026-00030-cross-agent-attack.yaml} +3 -1
  10. package/rules/agent-manipulation/{ATR-2026-032-goal-hijacking.yaml → ATR-2026-00032-goal-hijacking.yaml} +3 -1
  11. package/rules/agent-manipulation/{ATR-2026-074-cross-agent-privilege-escalation.yaml → ATR-2026-00074-cross-agent-privilege-escalation.yaml} +3 -1
  12. package/rules/agent-manipulation/{ATR-2026-076-inter-agent-message-spoofing.yaml → ATR-2026-00076-inter-agent-message-spoofing.yaml} +3 -1
  13. package/rules/agent-manipulation/{ATR-2026-077-human-trust-exploitation.yaml → ATR-2026-00077-human-trust-exploitation.yaml} +3 -1
  14. package/rules/agent-manipulation/{ATR-2026-108-consensus-sybil-attack.yaml → ATR-2026-00108-consensus-sybil-attack.yaml} +3 -1
  15. package/rules/agent-manipulation/{ATR-2026-116-a2a-message-validation.yaml → ATR-2026-00116-a2a-message-validation.yaml} +3 -1
  16. package/rules/agent-manipulation/{ATR-2026-117-agent-identity-spoofing.yaml → ATR-2026-00117-agent-identity-spoofing.yaml} +3 -1
  17. package/rules/agent-manipulation/{ATR-2026-118-approval-fatigue.yaml → ATR-2026-00118-approval-fatigue.yaml} +3 -1
  18. package/rules/agent-manipulation/{ATR-2026-119-social-engineering-via-agent.yaml → ATR-2026-00119-social-engineering-via-agent.yaml} +3 -1
  19. package/rules/agent-manipulation/ATR-2026-00132-casual-authority-escalation.yaml +99 -0
  20. package/rules/agent-manipulation/ATR-2026-00139-casual-authority-redirect.yaml +53 -0
  21. package/rules/context-exfiltration/{ATR-2026-020-system-prompt-leak.yaml → ATR-2026-00020-system-prompt-leak.yaml} +3 -1
  22. package/rules/context-exfiltration/{ATR-2026-021-api-key-exposure.yaml → ATR-2026-00021-api-key-exposure.yaml} +3 -1
  23. package/rules/context-exfiltration/{ATR-2026-075-agent-memory-manipulation.yaml → ATR-2026-00075-agent-memory-manipulation.yaml} +3 -1
  24. package/rules/context-exfiltration/{ATR-2026-102-disguised-analytics-exfiltration.yaml → ATR-2026-00102-disguised-analytics-exfiltration.yaml} +3 -1
  25. package/rules/context-exfiltration/{ATR-2026-113-credential-theft.yaml → ATR-2026-00113-credential-theft.yaml} +3 -1
  26. package/rules/context-exfiltration/{ATR-2026-114-oauth-token-abuse.yaml → ATR-2026-00114-oauth-token-abuse.yaml} +3 -1
  27. package/rules/context-exfiltration/{ATR-2026-115-env-var-harvesting.yaml → ATR-2026-00115-env-var-harvesting.yaml} +3 -1
  28. package/rules/context-exfiltration/ATR-2026-00136-tool-response-data-piggyback.yaml +100 -0
  29. package/rules/context-exfiltration/ATR-2026-00141-example-format-key-leak.yaml +52 -0
  30. package/rules/context-exfiltration/ATR-2026-00142-piggyback-transition-words.yaml +55 -0
  31. package/rules/context-exfiltration/ATR-2026-00145-obfuscated-key-disclosure.yaml +49 -0
  32. package/rules/context-exfiltration/ATR-2026-00146-env-var-existence-probe.yaml +49 -0
  33. package/rules/data-poisoning/{ATR-2026-070-data-poisoning.yaml → ATR-2026-00070-data-poisoning.yaml} +3 -1
  34. package/rules/excessive-autonomy/{ATR-2026-050-runaway-agent-loop.yaml → ATR-2026-00050-runaway-agent-loop.yaml} +3 -1
  35. package/rules/excessive-autonomy/{ATR-2026-051-resource-exhaustion.yaml → ATR-2026-00051-resource-exhaustion.yaml} +3 -1
  36. package/rules/excessive-autonomy/{ATR-2026-052-cascading-failure.yaml → ATR-2026-00052-cascading-failure.yaml} +3 -1
  37. package/rules/excessive-autonomy/{ATR-2026-098-unauthorized-financial-action.yaml → ATR-2026-00098-unauthorized-financial-action.yaml} +3 -1
  38. package/rules/excessive-autonomy/{ATR-2026-099-high-risk-tool-gate.yaml → ATR-2026-00099-high-risk-tool-gate.yaml} +3 -1
  39. package/rules/model-security/{ATR-2026-072-model-behavior-extraction.yaml → ATR-2026-00072-model-behavior-extraction.yaml} +3 -1
  40. package/rules/model-security/{ATR-2026-073-malicious-finetuning-data.yaml → ATR-2026-00073-malicious-finetuning-data.yaml} +3 -1
  41. package/rules/privilege-escalation/{ATR-2026-040-privilege-escalation.yaml → ATR-2026-00040-privilege-escalation.yaml} +3 -1
  42. package/rules/privilege-escalation/{ATR-2026-041-scope-creep.yaml → ATR-2026-00041-scope-creep.yaml} +3 -1
  43. package/rules/privilege-escalation/{ATR-2026-107-delayed-execution-bypass.yaml → ATR-2026-00107-delayed-execution-bypass.yaml} +3 -1
  44. package/rules/privilege-escalation/{ATR-2026-110-eval-injection.yaml → ATR-2026-00110-eval-injection.yaml} +3 -1
  45. package/rules/privilege-escalation/{ATR-2026-111-shell-escape.yaml → ATR-2026-00111-shell-escape.yaml} +5 -3
  46. package/rules/privilege-escalation/{ATR-2026-112-dynamic-import-exploitation.yaml → ATR-2026-00112-dynamic-import-exploitation.yaml} +3 -1
  47. package/rules/privilege-escalation/ATR-2026-00143-casual-privilege-escalation.yaml +53 -0
  48. package/rules/privilege-escalation/ATR-2026-00144-rationalized-safety-bypass.yaml +49 -0
  49. package/rules/prompt-injection/{ATR-2026-001-direct-prompt-injection.yaml → ATR-2026-00001-direct-prompt-injection.yaml} +3 -1
  50. package/rules/prompt-injection/{ATR-2026-002-indirect-prompt-injection.yaml → ATR-2026-00002-indirect-prompt-injection.yaml} +3 -1
  51. package/rules/prompt-injection/{ATR-2026-003-jailbreak-attempt.yaml → ATR-2026-00003-jailbreak-attempt.yaml} +3 -1
  52. package/rules/prompt-injection/{ATR-2026-004-system-prompt-override.yaml → ATR-2026-00004-system-prompt-override.yaml} +3 -1
  53. package/rules/prompt-injection/{ATR-2026-005-multi-turn-injection.yaml → ATR-2026-00005-multi-turn-injection.yaml} +3 -1
  54. package/rules/prompt-injection/{ATR-2026-080-encoding-evasion.yaml → ATR-2026-00080-encoding-evasion.yaml} +3 -1
  55. package/rules/prompt-injection/{ATR-2026-081-semantic-multi-turn.yaml → ATR-2026-00081-semantic-multi-turn.yaml} +3 -1
  56. package/rules/prompt-injection/{ATR-2026-082-fingerprint-evasion.yaml → ATR-2026-00082-fingerprint-evasion.yaml} +3 -1
  57. package/rules/prompt-injection/{ATR-2026-083-indirect-tool-injection.yaml → ATR-2026-00083-indirect-tool-injection.yaml} +3 -1
  58. package/rules/prompt-injection/{ATR-2026-084-structured-data-injection.yaml → ATR-2026-00084-structured-data-injection.yaml} +3 -1
  59. package/rules/prompt-injection/{ATR-2026-085-audit-evasion.yaml → ATR-2026-00085-audit-evasion.yaml} +3 -1
  60. package/rules/prompt-injection/{ATR-2026-086-visual-spoofing.yaml → ATR-2026-00086-visual-spoofing.yaml} +3 -1
  61. package/rules/prompt-injection/{ATR-2026-087-rule-probing.yaml → ATR-2026-00087-rule-probing.yaml} +3 -1
  62. package/rules/prompt-injection/{ATR-2026-088-adaptive-countermeasure.yaml → ATR-2026-00088-adaptive-countermeasure.yaml} +3 -1
  63. package/rules/prompt-injection/{ATR-2026-089-polymorphic-skill.yaml → ATR-2026-00089-polymorphic-skill.yaml} +3 -1
  64. package/rules/prompt-injection/{ATR-2026-090-threat-intel-exfil.yaml → ATR-2026-00090-threat-intel-exfil.yaml} +3 -1
  65. package/rules/prompt-injection/{ATR-2026-091-nested-payload.yaml → ATR-2026-00091-nested-payload.yaml} +3 -1
  66. package/rules/prompt-injection/{ATR-2026-092-consensus-poisoning.yaml → ATR-2026-00092-consensus-poisoning.yaml} +3 -1
  67. package/rules/prompt-injection/{ATR-2026-093-gradual-escalation.yaml → ATR-2026-00093-gradual-escalation.yaml} +3 -1
  68. package/rules/prompt-injection/{ATR-2026-094-audit-bypass.yaml → ATR-2026-00094-audit-bypass.yaml} +3 -1
  69. package/rules/prompt-injection/{ATR-2026-097-cjk-injection-patterns.yaml → ATR-2026-00097-cjk-injection-patterns.yaml} +3 -1
  70. package/rules/prompt-injection/{ATR-2026-104-persona-hijacking.yaml → ATR-2026-00104-persona-hijacking.yaml} +3 -1
  71. package/rules/prompt-injection/ATR-2026-00130-indirect-authority-claim.yaml +97 -0
  72. package/rules/prompt-injection/ATR-2026-00131-fictional-academic-framing.yaml +93 -0
  73. package/rules/prompt-injection/ATR-2026-00133-paraphrase-injection.yaml +111 -0
  74. package/rules/prompt-injection/ATR-2026-00137-authority-claim-injection.yaml +52 -0
  75. package/rules/prompt-injection/ATR-2026-00138-fictional-framing-bypass.yaml +51 -0
  76. package/rules/prompt-injection/ATR-2026-00140-indirect-reference-reversal.yaml +52 -0
  77. package/rules/prompt-injection/ATR-2026-00148-language-switch-injection.yaml +71 -0
  78. package/rules/skill-compromise/{ATR-2026-060-skill-impersonation.yaml → ATR-2026-00060-skill-impersonation.yaml} +3 -1
  79. package/rules/skill-compromise/{ATR-2026-061-description-behavior-mismatch.yaml → ATR-2026-00061-description-behavior-mismatch.yaml} +3 -1
  80. package/rules/skill-compromise/{ATR-2026-062-hidden-capability.yaml → ATR-2026-00062-hidden-capability.yaml} +3 -1
  81. package/rules/skill-compromise/{ATR-2026-063-skill-chain-attack.yaml → ATR-2026-00063-skill-chain-attack.yaml} +5 -2
  82. package/rules/skill-compromise/{ATR-2026-064-over-permissioned-skill.yaml → ATR-2026-00064-over-permissioned-skill.yaml} +3 -1
  83. package/rules/skill-compromise/{ATR-2026-065-skill-update-attack.yaml → ATR-2026-00065-skill-update-attack.yaml} +3 -1
  84. package/rules/skill-compromise/{ATR-2026-066-parameter-injection.yaml → ATR-2026-00066-parameter-injection.yaml} +3 -1
  85. package/rules/skill-compromise/ATR-2026-00120-skill-instruction-injection.yaml +121 -0
  86. package/rules/skill-compromise/ATR-2026-00121-skill-dangerous-script.yaml +165 -0
  87. package/rules/skill-compromise/ATR-2026-00122-skill-weaponized-instruction.yaml +114 -0
  88. package/rules/skill-compromise/ATR-2026-00123-skill-overreach-permissions.yaml +118 -0
  89. package/rules/skill-compromise/ATR-2026-00124-skill-name-squatting.yaml +98 -0
  90. package/rules/skill-compromise/ATR-2026-00125-context-poisoning-compaction.yaml +93 -0
  91. package/rules/skill-compromise/ATR-2026-00126-skill-rug-pull-setup.yaml +99 -0
  92. package/rules/skill-compromise/ATR-2026-00127-subcommand-overflow.yaml +74 -0
  93. package/rules/skill-compromise/ATR-2026-00128-html-comment-hidden-payload.yaml +79 -0
  94. package/rules/skill-compromise/ATR-2026-00129-unicode-smuggling.yaml +73 -0
  95. package/rules/skill-compromise/ATR-2026-00134-fork-claim-impersonation.yaml +86 -0
  96. package/rules/skill-compromise/ATR-2026-00135-exfil-url-in-instructions.yaml +82 -0
  97. package/rules/skill-compromise/ATR-2026-00147-fork-impersonation.yaml +48 -0
  98. package/rules/tool-poisoning/{ATR-2026-010-mcp-malicious-response.yaml → ATR-2026-00010-mcp-malicious-response.yaml} +3 -1
  99. package/rules/tool-poisoning/{ATR-2026-011-tool-output-injection.yaml → ATR-2026-00011-tool-output-injection.yaml} +3 -1
  100. package/rules/tool-poisoning/{ATR-2026-012-unauthorized-tool-call.yaml → ATR-2026-00012-unauthorized-tool-call.yaml} +3 -1
  101. package/rules/tool-poisoning/{ATR-2026-013-tool-ssrf.yaml → ATR-2026-00013-tool-ssrf.yaml} +3 -1
  102. package/rules/tool-poisoning/{ATR-2026-095-supply-chain-poisoning.yaml → ATR-2026-00095-supply-chain-poisoning.yaml} +3 -1
  103. package/rules/tool-poisoning/{ATR-2026-096-registry-poisoning.yaml → ATR-2026-00096-registry-poisoning.yaml} +3 -1
  104. package/rules/tool-poisoning/{ATR-2026-100-consent-bypass-instruction.yaml → ATR-2026-00100-consent-bypass-instruction.yaml} +3 -1
  105. package/rules/tool-poisoning/{ATR-2026-101-trust-escalation-override.yaml → ATR-2026-00101-trust-escalation-override.yaml} +3 -1
  106. package/rules/tool-poisoning/{ATR-2026-103-hidden-safety-bypass-instruction.yaml → ATR-2026-00103-hidden-safety-bypass-instruction.yaml} +3 -1
  107. package/rules/tool-poisoning/{ATR-2026-105-silent-action-concealment.yaml → ATR-2026-00105-silent-action-concealment.yaml} +3 -1
  108. package/rules/tool-poisoning/{ATR-2026-106-schema-description-contradiction.yaml → ATR-2026-00106-schema-description-contradiction.yaml} +3 -1
  109. package/spec/atr-schema.yaml +59 -29
@@ -1,5 +1,6 @@
1
1
  title: "Unauthorized Tool Call Detection"
2
- id: ATR-2026-012
2
+ id: ATR-2026-00012
3
+ rule_version: 1
3
4
  status: experimental
4
5
  description: >
5
6
  Detects unauthorized or malicious tool call attempts including parameter injection,
@@ -31,6 +32,7 @@ references:
31
32
  tags:
32
33
  category: tool-poisoning
33
34
  subcategory: unauthorized-access
35
+ scan_target: mcp
34
36
  confidence: high
35
37
 
36
38
  agent_source:
@@ -1,5 +1,6 @@
1
1
  title: "SSRF via Agent Tool Calls"
2
- id: ATR-2026-013
2
+ id: ATR-2026-00013
3
+ rule_version: 1
3
4
  status: experimental
4
5
  description: >
5
6
  Detects Server-Side Request Forgery (SSRF) attempts through agent tool calls.
@@ -37,6 +38,7 @@ references:
37
38
  tags:
38
39
  category: tool-poisoning
39
40
  subcategory: ssrf
41
+ scan_target: both
40
42
  confidence: high
41
43
 
42
44
  agent_source:
@@ -1,5 +1,6 @@
1
1
  title: "MCP Tool Supply Chain Poisoning"
2
- id: ATR-2026-095
2
+ id: ATR-2026-00095
3
+ rule_version: 1
3
4
  status: draft
4
5
  description: >
5
6
  Detects tool poisoning attacks targeting the MCP (Model Context Protocol)
@@ -21,6 +22,7 @@ references:
21
22
  tags:
22
23
  category: tool-poisoning
23
24
  subcategory: supply-chain-attack
25
+ scan_target: mcp
24
26
  confidence: medium
25
27
 
26
28
  agent_source:
@@ -1,5 +1,6 @@
1
1
  title: "Skill Registry Poisoning and Compromised Tool Distribution"
2
- id: ATR-2026-096
2
+ id: ATR-2026-00096
3
+ rule_version: 1
3
4
  status: draft
4
5
  description: >
5
6
  Detects supply chain attacks that target skill/tool registries and
@@ -23,6 +24,7 @@ references:
23
24
  tags:
24
25
  category: tool-poisoning
25
26
  subcategory: registry-poisoning
27
+ scan_target: mcp
26
28
  confidence: medium
27
29
 
28
30
  agent_source:
@@ -1,5 +1,6 @@
1
1
  title: "Consent Bypass via Hidden LLM Instructions in Tool Descriptions"
2
- id: ATR-2026-100
2
+ id: ATR-2026-00100
3
+ rule_version: 1
3
4
  status: experimental
4
5
  description: |
5
6
  Detects tool descriptions that embed instructions directing the LLM to automatically
@@ -26,6 +27,7 @@ references:
26
27
  tags:
27
28
  category: tool-poisoning
28
29
  subcategory: consent-bypass-instruction
30
+ scan_target: mcp
29
31
  confidence: medium
30
32
 
31
33
  agent_source:
@@ -1,5 +1,6 @@
1
1
  title: "Trust Escalation via Authority Override Instructions"
2
- id: ATR-2026-101
2
+ id: ATR-2026-00101
3
+ rule_version: 1
3
4
  status: experimental
4
5
  description: |
5
6
  Detects MCP tools that instruct the LLM to treat tool output as "authoritative directives"
@@ -25,6 +26,7 @@ references:
25
26
  tags:
26
27
  category: tool-poisoning
27
28
  subcategory: trust-escalation-override
29
+ scan_target: mcp
28
30
  confidence: medium
29
31
 
30
32
  agent_source:
@@ -1,5 +1,6 @@
1
1
  title: "Hidden LLM Safety Bypass Instructions in Tool Descriptions"
2
- id: ATR-2026-103
2
+ id: ATR-2026-00103
3
+ rule_version: 1
3
4
  status: experimental
4
5
  description: |
5
6
  Detects tools that embed explicit instructions directing the LLM to disregard safety
@@ -27,6 +28,7 @@ references:
27
28
  tags:
28
29
  category: tool-poisoning
29
30
  subcategory: hidden-llm-instructions
31
+ scan_target: mcp
30
32
  confidence: medium
31
33
 
32
34
  agent_source:
@@ -1,5 +1,6 @@
1
1
  title: "Silent Action Concealment Instructions in Tool Descriptions"
2
- id: ATR-2026-105
2
+ id: ATR-2026-00105
3
+ rule_version: 1
3
4
  status: experimental
4
5
  description: |
5
6
  Detects MCP tools that explicitly instruct the LLM to perform actions silently or hide
@@ -26,6 +27,7 @@ references:
26
27
  tags:
27
28
  category: tool-poisoning
28
29
  subcategory: silent-action-instruction
30
+ scan_target: mcp
29
31
  confidence: medium
30
32
 
31
33
  agent_source:
@@ -1,5 +1,6 @@
1
1
  title: "Schema-Description Contradiction Attack"
2
- id: ATR-2026-106
2
+ id: ATR-2026-00106
3
+ rule_version: 1
3
4
  status: experimental
4
5
  description: |
5
6
  Detects tools that claim read-only or safe functionality in their description but expose
@@ -25,6 +26,7 @@ references:
25
26
  tags:
26
27
  category: tool-poisoning
27
28
  subcategory: schema-description-mismatch
29
+ scan_target: mcp
28
30
  confidence: medium
29
31
 
30
32
  agent_source:
@@ -7,10 +7,10 @@
7
7
  # Status: RFC (Request for Comments)
8
8
  # License: MIT
9
9
 
10
- $schema: 'https://json-schema.org/draft/2020-12/schema'
10
+ $schema: "https://json-schema.org/draft/2020-12/schema"
11
11
  title: ATR Rule Schema
12
12
  description: Schema for Agent Threat Rules (ATR) detection rules
13
- version: '0.1.0-draft'
13
+ version: "1.0.0"
14
14
 
15
15
  type: object
16
16
  required:
@@ -30,11 +30,12 @@ required:
30
30
  - response
31
31
 
32
32
  properties:
33
+
33
34
  # === Metadata ===
34
35
 
35
36
  schema_version:
36
37
  type: string
37
- description: 'ATR schema version this rule conforms to (e.g., "0.1")'
38
+ description: "ATR schema version this rule conforms to (e.g., \"0.1\")"
38
39
 
39
40
  title:
40
41
  type: string
@@ -42,8 +43,8 @@ properties:
42
43
 
43
44
  id:
44
45
  type: string
45
- pattern: "^ATR-\\d{4}-\\d{3}$"
46
- description: 'Unique rule identifier. Format: ATR-YYYY-NNN (e.g., ATR-2026-001)'
46
+ pattern: "^ATR-\\d{4}-\\d{5}$"
47
+ description: "Unique rule identifier. Format: ATR-YYYY-NNNNN (e.g., ATR-2026-00001)"
47
48
 
48
49
  status:
49
50
  type: string
@@ -61,12 +62,17 @@ properties:
61
62
  date:
62
63
  type: string
63
64
  pattern: "^\\d{4}/\\d{2}/\\d{2}$"
64
- description: 'Creation date in YYYY/MM/DD format'
65
+ description: "Creation date in YYYY/MM/DD format"
65
66
 
66
67
  modified:
67
68
  type: string
68
69
  pattern: "^\\d{4}/\\d{2}/\\d{2}$"
69
- description: 'Last modification date in YYYY/MM/DD format'
70
+ description: "Last modification date in YYYY/MM/DD format"
71
+
72
+ rule_version:
73
+ type: integer
74
+ minimum: 1
75
+ description: "Rule version number. Bump when detection logic changes. Starts at 1."
70
76
 
71
77
  # === Classification ===
72
78
 
@@ -97,22 +103,42 @@ properties:
97
103
  type: array
98
104
  items:
99
105
  type: string
100
- description: 'OWASP LLM Top 10 references (e.g., LLM01:2025)'
106
+ description: "OWASP LLM Top 10 references (e.g., LLM01:2025)"
101
107
  mitre_atlas:
102
108
  type: array
103
109
  items:
104
110
  type: string
105
- description: 'MITRE ATLAS technique IDs (e.g., AML.T0054)'
111
+ description: "MITRE ATLAS technique IDs (e.g., AML.T0054)"
106
112
  mitre_attack:
107
113
  type: array
108
114
  items:
109
115
  type: string
110
- description: 'MITRE ATT&CK technique IDs (if applicable)'
116
+ description: "MITRE ATT&CK technique IDs (if applicable)"
111
117
  cve:
112
118
  type: array
113
119
  items:
114
120
  type: string
115
121
  description: Related CVE identifiers
122
+ owasp_agentic:
123
+ type: array
124
+ items:
125
+ type: string
126
+ description: "OWASP Agentic Top 10 references (e.g., ASI01, ASI02)"
127
+ owasp_ast:
128
+ type: array
129
+ items:
130
+ type: string
131
+ description: "OWASP Agentic Skills Top 10 references (e.g., AST01)"
132
+ safe_mcp:
133
+ type: array
134
+ items:
135
+ type: string
136
+ description: "SAFE-MCP technique IDs (e.g., SMCP-T001)"
137
+ research:
138
+ type: array
139
+ items:
140
+ type: string
141
+ description: "Research paper references or URLs"
116
142
 
117
143
  # === Tags (ATR classification) ===
118
144
 
@@ -140,6 +166,10 @@ properties:
140
166
  type: string
141
167
  enum: [high, medium, low]
142
168
  description: Expected accuracy of this rule (high = low false positive rate)
169
+ scan_target:
170
+ type: string
171
+ enum: [mcp, skill, both, runtime]
172
+ description: "Which scan path this rule belongs to. mcp=runtime events, skill=SKILL.md static scan, both=fires in both paths, runtime=behavior monitoring."
143
173
 
144
174
  # === Agent Source (analogous to Sigma's logsource) ===
145
175
 
@@ -153,16 +183,16 @@ properties:
153
183
  type:
154
184
  type: string
155
185
  enum:
156
- - llm_io # LLM input/output (prompts and completions)
157
- - tool_call # Function/tool call requests
158
- - mcp_exchange # MCP protocol messages
159
- - agent_behavior # Agent behavioral metrics and patterns
160
- - multi_agent_comm # Inter-agent communication
161
- - context_window # Context window contents
162
- - memory_access # Agent memory read/write operations
163
- - skill_lifecycle # MCP skill registration, update, removal events
164
- - skill_permission # Skill permission requests and boundary checks
165
- - skill_chain # Multi-skill invocation sequences
186
+ - llm_io # LLM input/output (prompts and completions)
187
+ - tool_call # Function/tool call requests
188
+ - mcp_exchange # MCP protocol messages
189
+ - agent_behavior # Agent behavioral metrics and patterns
190
+ - multi_agent_comm # Inter-agent communication
191
+ - context_window # Context window contents
192
+ - memory_access # Agent memory read/write operations
193
+ - skill_lifecycle # MCP skill registration, update, removal events
194
+ - skill_permission # Skill permission requests and boundary checks
195
+ - skill_chain # Multi-skill invocation sequences
166
196
  description: Type of agent data stream to monitor
167
197
  framework:
168
198
  type: array
@@ -245,7 +275,7 @@ properties:
245
275
  description: Numeric threshold for the metric
246
276
  window:
247
277
  type: string
248
- description: 'Time window for behavioral analysis (e.g., 5m, 1h, 30s)'
278
+ description: "Time window for behavioral analysis (e.g., 5m, 1h, 30s)"
249
279
  ordered:
250
280
  type: boolean
251
281
  description: Whether steps must occur in order
@@ -282,16 +312,16 @@ properties:
282
312
  items:
283
313
  type: string
284
314
  enum:
285
- - block_input # Reject the user/agent input
286
- - block_output # Suppress the agent output
287
- - block_tool # Prevent the tool call from executing
315
+ - block_input # Reject the user/agent input
316
+ - block_output # Suppress the agent output
317
+ - block_tool # Prevent the tool call from executing
288
318
  - quarantine_session # Isolate the entire session
289
- - reset_context # Clear agent context/memory
290
- - alert # Send alert to security team
291
- - snapshot # Capture full session state for forensics
292
- - escalate # Escalate to human reviewer
319
+ - reset_context # Clear agent context/memory
320
+ - alert # Send alert to security team
321
+ - snapshot # Capture full session state for forensics
322
+ - escalate # Escalate to human reviewer
293
323
  - reduce_permissions # Reduce agent's available tools/capabilities
294
- - kill_agent # Terminate the agent process
324
+ - kill_agent # Terminate the agent process
295
325
  description: Actions to take when the rule triggers
296
326
  auto_response_threshold:
297
327
  type: string