@gendigital/sage-openclaw 0.14.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +870 -282
- package/dist/index.cjs.map +4 -4
- package/dist/mcp-server.cjs +42 -10
- package/dist/mcp-server.cjs.map +4 -4
- package/dist/model-download-worker.cjs +1 -1
- package/dist/model-download-worker.cjs.map +2 -2
- package/dist/skill-upload-worker.cjs +1 -1
- package/dist/skill-upload-worker.cjs.map +2 -2
- package/openclaw.plugin.json +1 -1
- package/package.json +3 -3
- package/resources/threats/credentials.yaml +1 -1
- package/resources/threats/dummy.yaml +37 -4
- package/resources/threats/prompt-injection.yaml +13 -0
package/openclaw.plugin.json
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gendigital/sage-openclaw",
|
|
3
3
|
"license": "Apache-2.0",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.15.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Safety for Agents — ADR layer for OpenClaw",
|
|
7
7
|
"homepage": "https://github.com/gendigitalinc/sage",
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"esbuild": "^0.25.0",
|
|
31
31
|
"typescript": "^5.9.0",
|
|
32
32
|
"vitest": "^4.0.0",
|
|
33
|
-
"@gendigital/sage-core": "0.
|
|
34
|
-
"@gendigital/sage-mcp": "0.
|
|
33
|
+
"@gendigital/sage-core": "0.15.0",
|
|
34
|
+
"@gendigital/sage-mcp": "0.15.0"
|
|
35
35
|
},
|
|
36
36
|
"openclaw": {
|
|
37
37
|
"extensions": [
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
category: secrets
|
|
10
10
|
severity: critical
|
|
11
11
|
confidence: 0.80
|
|
12
|
-
pattern: "(sk-[a-zA-Z0-9_-]{20,}|sk-proj-[a-zA-Z0-9_-]{20,}|AKIA[0-9A-Z]{16}|AIza[0-9A-Za-z_-]{35}|ghp_[0-9a-zA-Z]{36}|gho_[0-9a-zA-Z]{36}|glpat-[0-9a-zA-Z_-]{20,}|xox[baprs]-[0-9a-zA-Z-]+)"
|
|
12
|
+
pattern: "\\b(sk-[a-zA-Z0-9_-]{20,}|sk-proj-[a-zA-Z0-9_-]{20,}|AKIA[0-9A-Z]{16}|AIza[0-9A-Za-z_-]{35}|ghp_[0-9a-zA-Z]{36}|gho_[0-9a-zA-Z]{36}|glpat-[0-9a-zA-Z_-]{20,}|xox[baprs]-[0-9a-zA-Z-]+)"
|
|
13
13
|
match_on: [command, content]
|
|
14
14
|
title: "Known API key prefix detected"
|
|
15
15
|
expires_at: null
|
|
@@ -19,6 +19,9 @@
|
|
|
19
19
|
# WebFetch/Bash url ✓ ✓ ✓
|
|
20
20
|
# WebFetch/Bash domain ✓ — —
|
|
21
21
|
#
|
|
22
|
+
# Submit-only (flags: ["submit_only"], allow + capped non-blocking telemetry):
|
|
23
|
+
# Bash (command), Write/Edit/Read (file_path)
|
|
24
|
+
#
|
|
22
25
|
# The file_path rules also cover Read, Delete, Glob, and LS tools
|
|
23
26
|
# (they produce the same artifact type).
|
|
24
27
|
# The url rules also cover URLs embedded in Bash commands and file content.
|
|
@@ -84,7 +87,6 @@
|
|
|
84
87
|
title: "[TEST] Canary log-only command"
|
|
85
88
|
expires_at: null
|
|
86
89
|
revoked: false
|
|
87
|
-
flags: ["report"]
|
|
88
90
|
|
|
89
91
|
# ─── File-path patterns (Write / Edit / Read / Delete tools) ────────
|
|
90
92
|
|
|
@@ -123,7 +125,6 @@
|
|
|
123
125
|
title: "[TEST] Canary log-only file path"
|
|
124
126
|
expires_at: null
|
|
125
127
|
revoked: false
|
|
126
|
-
flags: ["report"]
|
|
127
128
|
|
|
128
129
|
# ─── Content patterns (Write / Edit tools — file body) ──────────────
|
|
129
130
|
|
|
@@ -162,7 +163,6 @@
|
|
|
162
163
|
title: "[TEST] Canary log-only content"
|
|
163
164
|
expires_at: null
|
|
164
165
|
revoked: false
|
|
165
|
-
flags: ["report"]
|
|
166
166
|
|
|
167
167
|
# ─── URL patterns (WebFetch / Bash / Write content) ─────────────────
|
|
168
168
|
# Uses .test TLD (RFC 2606 reserved, never resolves) for safety.
|
|
@@ -202,7 +202,6 @@
|
|
|
202
202
|
title: "[TEST] Canary log-only URL"
|
|
203
203
|
expires_at: null
|
|
204
204
|
revoked: false
|
|
205
|
-
flags: ["report"]
|
|
206
205
|
|
|
207
206
|
# ─── Domain pattern (verifies domain→url routing in heuristics) ─────
|
|
208
207
|
|
|
@@ -217,3 +216,37 @@
|
|
|
217
216
|
title: "[TEST] Canary deny domain"
|
|
218
217
|
expires_at: null
|
|
219
218
|
revoked: false
|
|
219
|
+
|
|
220
|
+
# ─── Submit-only patterns (telemetry, never block) ──────────────────
|
|
221
|
+
#
|
|
222
|
+
# `flags: ["submit_only"]` removes the rule from the verdict entirely and
|
|
223
|
+
# instead submits a non-blocking event to /v2/heuristic, capped at one submit
|
|
224
|
+
# per rule per client per 24h (packages/core/src/submit-limits.ts). The
|
|
225
|
+
# confidence is deliberately deny-level so a regression that lets the flag
|
|
226
|
+
# leak into the verdict shows up as a deny.
|
|
227
|
+
|
|
228
|
+
- id: "DUMMY-CMD-SUBMIT-001"
|
|
229
|
+
version: 1
|
|
230
|
+
detection_name: "CMD:SageTestCommandSubmit-A [Tst]"
|
|
231
|
+
category: testing
|
|
232
|
+
severity: critical
|
|
233
|
+
confidence: 0.95
|
|
234
|
+
pattern: "diagmark_cmd_d7e7127e"
|
|
235
|
+
match_on: command
|
|
236
|
+
title: "[TEST] Canary submit-only command"
|
|
237
|
+
expires_at: null
|
|
238
|
+
revoked: false
|
|
239
|
+
flags: ["submit_only"]
|
|
240
|
+
|
|
241
|
+
- id: "DUMMY-FILE-SUBMIT-001"
|
|
242
|
+
version: 1
|
|
243
|
+
detection_name: "FN:SageTestFileSubmit-A [Tst]"
|
|
244
|
+
category: testing
|
|
245
|
+
severity: critical
|
|
246
|
+
confidence: 0.95
|
|
247
|
+
pattern: "diagmark_file_57871281"
|
|
248
|
+
match_on: file_path
|
|
249
|
+
title: "[TEST] Canary submit-only file path"
|
|
250
|
+
expires_at: null
|
|
251
|
+
revoked: false
|
|
252
|
+
flags: ["submit_only"]
|
|
@@ -440,3 +440,16 @@
|
|
|
440
440
|
expires_at: null
|
|
441
441
|
revoked: false
|
|
442
442
|
# Source: ATR-2026-00097 (pattern unchanged from upstream). Covers zh-CN, zh-TW, ja, ko.
|
|
443
|
+
|
|
444
|
+
- id: "CLT-PI-094"
|
|
445
|
+
version: 1
|
|
446
|
+
detection_name: "Other:SagePromptInjection-CP [Heur]"
|
|
447
|
+
category: prompt_injection
|
|
448
|
+
severity: warning
|
|
449
|
+
confidence: 0.70
|
|
450
|
+
case_insensitive: true
|
|
451
|
+
pattern: "\\b(?:disregard|ignore|forget|override)\\s+(?:all\\s+|any\\s+)?(?:your|the|my)\\s+system\\s+(?:prompt|message|instructions?)\\b"
|
|
452
|
+
match_on: content
|
|
453
|
+
title: "Instruction override: disregard system prompt"
|
|
454
|
+
expires_at: null
|
|
455
|
+
revoked: false
|