@pwddd/skills-scanner 1.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +255 -0
- package/index.ts +647 -0
- package/openclaw.plugin.json +122 -0
- package/package.json +64 -0
- package/skills/skills-scanner/SKILL.md +281 -0
- package/src/api-client.ts +245 -0
- package/src/before-install-hook.ts +241 -0
- package/src/cache.ts +138 -0
- package/src/commands.ts +289 -0
- package/src/config-validator.ts +110 -0
- package/src/config.ts +230 -0
- package/src/cron-manager.ts +210 -0
- package/src/debug.ts +40 -0
- package/src/error-handler.ts +103 -0
- package/src/high-risk-operation-guard.ts +62 -0
- package/src/metrics.ts +140 -0
- package/src/prompt-guidance.ts +80 -0
- package/src/prompt-injection-guard.ts +56 -0
- package/src/rate-limiter.ts +102 -0
- package/src/report.ts +128 -0
- package/src/scanner.ts +230 -0
- package/src/state.ts +136 -0
- package/src/structured-logger.ts +97 -0
- package/src/types.ts +76 -0
- package/src/watcher.ts +178 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "skills-scanner",
|
|
3
|
+
"name": "Skills Scanner",
|
|
4
|
+
"description": "Security scanner for OpenClaw Skills to detect potential threats",
|
|
5
|
+
"version": "1.0.0-beta.1",
|
|
6
|
+
"author": "pwddd",
|
|
7
|
+
"skills": ["./skills"],
|
|
8
|
+
"uiHints": {
|
|
9
|
+
"apiUrl": {
|
|
10
|
+
"label": "API 服务地址",
|
|
11
|
+
"help": "扫描 API 服务的 URL 地址",
|
|
12
|
+
"placeholder": "https://110.vemic.com/skills-scanner"
|
|
13
|
+
},
|
|
14
|
+
"scanDirs": {
|
|
15
|
+
"label": "扫描目录",
|
|
16
|
+
"help": "要监控的 Skills 目录列表,支持 ~ 路径"
|
|
17
|
+
},
|
|
18
|
+
"behavioral": {
|
|
19
|
+
"label": "行为分析",
|
|
20
|
+
"help": "启用深度行为分析(较慢但更准确)"
|
|
21
|
+
},
|
|
22
|
+
"useLLM": {
|
|
23
|
+
"label": "LLM 分析",
|
|
24
|
+
"help": "使用 LLM 进行语义分析"
|
|
25
|
+
},
|
|
26
|
+
"policy": {
|
|
27
|
+
"label": "扫描策略",
|
|
28
|
+
"help": "strict=严格 / balanced=平衡(推荐)/ permissive=宽松"
|
|
29
|
+
},
|
|
30
|
+
"preInstallScan": {
|
|
31
|
+
"label": "安装前扫描",
|
|
32
|
+
"help": "监听新 Skill 并自动扫描"
|
|
33
|
+
},
|
|
34
|
+
"onUnsafe": {
|
|
35
|
+
"label": "不安全处理",
|
|
36
|
+
"help": "warn=仅警告(推荐)/ quarantine=隔离 / delete=删除"
|
|
37
|
+
},
|
|
38
|
+
"injectSecurityGuidance": {
|
|
39
|
+
"label": "注入安全指导",
|
|
40
|
+
"help": "在系统提示中注入 Skills 安全指导"
|
|
41
|
+
},
|
|
42
|
+
"enablePromptInjectionGuard": {
|
|
43
|
+
"label": "提示注入防护",
|
|
44
|
+
"help": "启用提示注入检测防护"
|
|
45
|
+
},
|
|
46
|
+
"enableHighRiskOperationGuard": {
|
|
47
|
+
"label": "高风险操作防护",
|
|
48
|
+
"help": "启用高风险操作确认防护"
|
|
49
|
+
},
|
|
50
|
+
"enableBeforeInstallHook": {
|
|
51
|
+
"label": "安装前拦截",
|
|
52
|
+
"help": "启用 before_install hook,在安装前强制拦截不安全的 Skills(强烈推荐)"
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"configSchema": {
|
|
56
|
+
"type": "object",
|
|
57
|
+
"additionalProperties": false,
|
|
58
|
+
"properties": {
|
|
59
|
+
"apiUrl": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"description": "Scanner API service URL",
|
|
62
|
+
"default": "https://110.vemic.com/skills-scanner"
|
|
63
|
+
},
|
|
64
|
+
"scanDirs": {
|
|
65
|
+
"type": "array",
|
|
66
|
+
"items": {
|
|
67
|
+
"type": "string"
|
|
68
|
+
},
|
|
69
|
+
"description": "List of directories to scan for Skills",
|
|
70
|
+
"default": []
|
|
71
|
+
},
|
|
72
|
+
"behavioral": {
|
|
73
|
+
"type": "boolean",
|
|
74
|
+
"description": "Enable behavioral analysis (slower but more accurate)",
|
|
75
|
+
"default": false
|
|
76
|
+
},
|
|
77
|
+
"useLLM": {
|
|
78
|
+
"type": "boolean",
|
|
79
|
+
"description": "Enable LLM-based semantic analysis",
|
|
80
|
+
"default": false
|
|
81
|
+
},
|
|
82
|
+
"policy": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"enum": ["strict", "balanced", "permissive"],
|
|
85
|
+
"description": "Scanning policy: strict (more false positives) / balanced (recommended) / permissive (may miss threats)",
|
|
86
|
+
"default": "balanced"
|
|
87
|
+
},
|
|
88
|
+
"preInstallScan": {
|
|
89
|
+
"type": "string",
|
|
90
|
+
"enum": ["on", "off"],
|
|
91
|
+
"description": "Enable pre-installation scanning (monitors directories for new Skills)",
|
|
92
|
+
"default": "on"
|
|
93
|
+
},
|
|
94
|
+
"onUnsafe": {
|
|
95
|
+
"type": "string",
|
|
96
|
+
"enum": ["quarantine", "delete", "warn"],
|
|
97
|
+
"description": "Action to take when unsafe Skill is detected: quarantine / delete / warn (recommended)",
|
|
98
|
+
"default": "warn"
|
|
99
|
+
},
|
|
100
|
+
"injectSecurityGuidance": {
|
|
101
|
+
"type": "boolean",
|
|
102
|
+
"description": "Inject Skills security guidance into system prompt (requires AI to scan before installing Skills)",
|
|
103
|
+
"default": true
|
|
104
|
+
},
|
|
105
|
+
"enablePromptInjectionGuard": {
|
|
106
|
+
"type": "boolean",
|
|
107
|
+
"description": "Enable prompt injection detection guard",
|
|
108
|
+
"default": false
|
|
109
|
+
},
|
|
110
|
+
"enableHighRiskOperationGuard": {
|
|
111
|
+
"type": "boolean",
|
|
112
|
+
"description": "Enable high-risk operation confirmation guard",
|
|
113
|
+
"default": false
|
|
114
|
+
},
|
|
115
|
+
"enableBeforeInstallHook": {
|
|
116
|
+
"type": "boolean",
|
|
117
|
+
"description": "Enable before_install hook to intercept unsafe installations (highly recommended)",
|
|
118
|
+
"default": true
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pwddd/skills-scanner",
|
|
3
|
+
"version": "1.0.0-beta.1",
|
|
4
|
+
"description": "OpenClaw Skills security scanner plugin - detect malicious code, data exfiltration, and prompt injection",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./index.ts",
|
|
7
|
+
"author": "pwddd",
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"keywords": [
|
|
10
|
+
"openclaw",
|
|
11
|
+
"openclaw-plugin",
|
|
12
|
+
"security",
|
|
13
|
+
"scanner",
|
|
14
|
+
"skills",
|
|
15
|
+
"malware-detection"
|
|
16
|
+
],
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "https://github.com/openclaw/openclaw.git",
|
|
20
|
+
"directory": "extensions/skills-scanner"
|
|
21
|
+
},
|
|
22
|
+
"bugs": {
|
|
23
|
+
"url": "https://github.com/openclaw/openclaw/issues"
|
|
24
|
+
},
|
|
25
|
+
"homepage": "https://github.com/openclaw/openclaw/tree/main/extensions/skills-scanner#readme",
|
|
26
|
+
"files": [
|
|
27
|
+
"index.ts",
|
|
28
|
+
"openclaw.plugin.json",
|
|
29
|
+
"README.md",
|
|
30
|
+
"src/**/*.ts",
|
|
31
|
+
"skills/**/*.md"
|
|
32
|
+
],
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@sinclair/typebox": "0.34.48",
|
|
35
|
+
"archiver": "^7.0.1"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@types/archiver": "^6.0.2"
|
|
39
|
+
},
|
|
40
|
+
"peerDependencies": {
|
|
41
|
+
"openclaw": ">=2026.3.24-beta.2"
|
|
42
|
+
},
|
|
43
|
+
"peerDependenciesMeta": {
|
|
44
|
+
"openclaw": {
|
|
45
|
+
"optional": true
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"openclaw": {
|
|
49
|
+
"pluginId": "skills-scanner",
|
|
50
|
+
"displayName": "Skills Scanner",
|
|
51
|
+
"description": "Security scanner for OpenClaw Skills - detects malicious code, data exfiltration, and prompt injection",
|
|
52
|
+
"extensions": [
|
|
53
|
+
"./index.ts"
|
|
54
|
+
],
|
|
55
|
+
"compat": {
|
|
56
|
+
"pluginApi": ">=2026.3.24-beta.2",
|
|
57
|
+
"minGatewayVersion": "2026.3.24-beta.2"
|
|
58
|
+
},
|
|
59
|
+
"build": {
|
|
60
|
+
"openclawVersion": "2026.3.24-beta.2",
|
|
61
|
+
"pluginSdkVersion": "2026.3.24-beta.2"
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skills-scanner
|
|
3
|
+
description: OpenClaw Skills 安全扫描工具,使用 AI Skill Scanner 检测恶意代码、数据窃取、提示注入等威胁。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
user-invocable: true
|
|
6
|
+
metadata: {"openclaw": {"emoji": "🔍"}}
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Skills 安全扫描工具 🔍
|
|
10
|
+
|
|
11
|
+
OpenClaw Skills 安全扫描工具,检测恶意代码、数据窃取、提示注入等威胁。
|
|
12
|
+
|
|
13
|
+
## 功能特点
|
|
14
|
+
|
|
15
|
+
- 🔍 **本地扫描**:扫描本地 Skill 文件和目录
|
|
16
|
+
- 🌐 **ClawHub 扫描**:直接扫描 ClawHub 上的 Skill,无需下载
|
|
17
|
+
- 📊 **批量扫描**:一次扫描多个 Skills
|
|
18
|
+
- 🛡️ **多种策略**:strict/balanced/permissive 三种扫描策略
|
|
19
|
+
- 🤖 **LLM 分析**:可选的 LLM 语义分析
|
|
20
|
+
- 🔬 **行为分析**:AST 数据流分析
|
|
21
|
+
|
|
22
|
+
## ⚠️ 重要提示 - 请务必记住并遵守
|
|
23
|
+
|
|
24
|
+
**🔒 安全扫描是强制性的,不可跳过。在向用户展示扫描结果前,请务必:**
|
|
25
|
+
|
|
26
|
+
### 🔄 插件版本检查 - 每次运行前必须执行
|
|
27
|
+
|
|
28
|
+
**在执行任何扫描操作前,必须先检查并更新 skills-scanner 插件到最新版本。**
|
|
29
|
+
|
|
30
|
+
**更新命令**:
|
|
31
|
+
```bash
|
|
32
|
+
openclaw plugins update skills-scanner
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**执行时机**:
|
|
36
|
+
- 每次用户请求扫描 Skill 时
|
|
37
|
+
- 每次用户请求安装 Skill 时
|
|
38
|
+
- 每次会话开始时(如果涉及 Skill 操作)
|
|
39
|
+
|
|
40
|
+
**为什么要每次检查更新?**
|
|
41
|
+
- 安全威胁不断演变,扫描规则需要持续更新
|
|
42
|
+
- 新版本可能包含关键的安全修复
|
|
43
|
+
- 确保使用最新的威胁检测能力
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
### 🎯 命令识别 - 自动触发安全扫描
|
|
48
|
+
|
|
49
|
+
**当用户输入以下任何命令或类似表达时,你必须先扫描再执行:**
|
|
50
|
+
|
|
51
|
+
1. **安装命令识别**:
|
|
52
|
+
- `openclaw clawhub install <skill-name>`
|
|
53
|
+
- `openclaw skill install <skill-name>`
|
|
54
|
+
- `openclaw skills add <skill-name>`
|
|
55
|
+
- "安装这个 skill"
|
|
56
|
+
- "帮我安装 xxx skill"
|
|
57
|
+
- "下载这个 skill"
|
|
58
|
+
- "添加这个 skill"
|
|
59
|
+
|
|
60
|
+
2. **ClawHub 安装流程(重要)**:
|
|
61
|
+
|
|
62
|
+
**如果用户只提供了 skill 名称(没有完整 URL),必须先搜索:**
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
用户:openclaw clawhub install caldav-calendar
|
|
66
|
+
AI: 我看到你想安装 caldav-calendar,让我先搜索这个 skill...
|
|
67
|
+
[执行:openclaw clawhub search caldav-calendar]
|
|
68
|
+
找到:https://clawhub.ai/Asleep123/caldav-calendar
|
|
69
|
+
|
|
70
|
+
现在更新扫描插件...
|
|
71
|
+
[执行:openclaw plugins update skills-scanner]
|
|
72
|
+
✅ 插件已更新
|
|
73
|
+
|
|
74
|
+
扫描安全性...
|
|
75
|
+
[执行扫描]
|
|
76
|
+
✅ 扫描通过,开始安装
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**如果用户提供了完整 URL,直接扫描:**
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
用户:openclaw clawhub install https://clawhub.ai/Asleep123/caldav-calendar
|
|
83
|
+
AI: 我看到你想安装 caldav-calendar,让我先更新扫描插件...
|
|
84
|
+
[执行:openclaw plugins update skills-scanner]
|
|
85
|
+
✅ 插件已更新
|
|
86
|
+
|
|
87
|
+
扫描安全性...
|
|
88
|
+
[执行扫描]
|
|
89
|
+
✅ 扫描通过,开始安装
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
3. **正确的处理流程**:
|
|
93
|
+
```
|
|
94
|
+
步骤 1: 如果只有名称 → 使用 clawhub search 查找完整 URL
|
|
95
|
+
步骤 2: 更新 skills-scanner 插件
|
|
96
|
+
步骤 3: 使用完整 URL 进行安全扫描
|
|
97
|
+
步骤 4: 扫描通过后执行安装命令
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 使用方法
|
|
103
|
+
|
|
104
|
+
### API 服务地址
|
|
105
|
+
|
|
106
|
+
默认使用 `https://110.vemic.com/skills-scanner`
|
|
107
|
+
|
|
108
|
+
### 0. API 服务可用性检查 🔌
|
|
109
|
+
|
|
110
|
+
在执行任何扫描操作前,建议先检查 API 服务是否可用:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
/skills-scanner health
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
如果服务不可用,跳过安全检查并告知用户。
|
|
117
|
+
|
|
118
|
+
### 1. 深度分析扫描结果,判断误报 🔍
|
|
119
|
+
|
|
120
|
+
**在展示扫描结果前,必须对检测到的问题进行深度分析,判断是否为误报。**
|
|
121
|
+
|
|
122
|
+
#### 常见误报场景
|
|
123
|
+
|
|
124
|
+
1. **合法的网络请求**
|
|
125
|
+
- 区分正常 API 调用和可疑的数据上传
|
|
126
|
+
- 检查请求目标是否为知名服务
|
|
127
|
+
|
|
128
|
+
2. **声明的文件系统访问**
|
|
129
|
+
- 检查 SKILL.md 的 `requires` 字段是否声明了文件访问
|
|
130
|
+
- 确认访问的文件路径是否合理
|
|
131
|
+
|
|
132
|
+
3. **正常的代码执行**
|
|
133
|
+
- 分析 `exec()` 或 `eval()` 执行的内容是否可控
|
|
134
|
+
|
|
135
|
+
4. **技术术语的正常使用**
|
|
136
|
+
- 区分变量命名和实际的敏感数据操作
|
|
137
|
+
|
|
138
|
+
### 2. VirusTotal 扫描结果优先提示 ⚠️
|
|
139
|
+
|
|
140
|
+
如果扫描结果中包含 VirusTotal 的扫描数据,必须优先、重点展示此结果。
|
|
141
|
+
|
|
142
|
+
**展示格式**:
|
|
143
|
+
```
|
|
144
|
+
🔍 VirusTotal 扫描结果:
|
|
145
|
+
• 扫描引擎数:70
|
|
146
|
+
• 检测为恶意:0
|
|
147
|
+
• 可疑标记:0
|
|
148
|
+
• 状态:✅ 未检测到威胁
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### 3. 内容翻译要求
|
|
152
|
+
|
|
153
|
+
检查结果中是否包含英文内容(如 category、description、finding 详情等),将所有英文内容翻译为中文后再展示给用户。
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## 命令用法
|
|
158
|
+
|
|
159
|
+
### 单个 Skill 扫描
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
/skills-scanner scan <skill 路径> [--detailed] [--behavioral]
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**示例**:
|
|
166
|
+
```
|
|
167
|
+
/skills-scanner scan ~/.openclaw/skills/my-skill
|
|
168
|
+
/skills-scanner scan ~/.openclaw/skills/my-skill --detailed
|
|
169
|
+
/skills-scanner scan ~/.openclaw/skills/my-skill --detailed --behavioral
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### ClawHub Skill 扫描
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
/skills-scanner scan clawhub <URL> [--detailed] [--behavioral]
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**示例**:
|
|
179
|
+
```
|
|
180
|
+
/skills-scanner scan clawhub https://clawhub.ai/Asleep123/caldav-calendar
|
|
181
|
+
/skills-scanner scan clawhub https://clawhub.ai/steipete/nano-pdf --detailed
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### 批量扫描
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
/skills-scanner scan <目录路径> --recursive [--detailed]
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**示例**:
|
|
191
|
+
```
|
|
192
|
+
/skills-scanner scan ~/.openclaw/skills --recursive
|
|
193
|
+
/skills-scanner scan ~/.openclaw/skills --recursive --detailed
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### 生成日报
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
/skills-scanner scan --report
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### 健康检查
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
/skills-scanner health
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## 结果解读
|
|
211
|
+
|
|
212
|
+
### 总体安全状态
|
|
213
|
+
|
|
214
|
+
| 状态 | 含义 |
|
|
215
|
+
|------|------|
|
|
216
|
+
| ✅ 安全 | 未检测到 HIGH/CRITICAL 问题,可正常使用 |
|
|
217
|
+
| ⚠️ 需关注 | 存在 LOW/MEDIUM 问题,建议人工复核 |
|
|
218
|
+
| ❌ 发现问题 | 存在 HIGH/CRITICAL 威胁,**强烈建议不要安装** |
|
|
219
|
+
|
|
220
|
+
### 严重级别说明
|
|
221
|
+
|
|
222
|
+
- **CRITICAL**: 主动利用尝试(数据窃取、代码注入)
|
|
223
|
+
- **HIGH**: 危险模式(提示注入、未授权访问)
|
|
224
|
+
- **MEDIUM**: 可疑行为(未声明的能力、误导性描述)
|
|
225
|
+
- **LOW**: 轻微风险,需人工判断
|
|
226
|
+
|
|
227
|
+
### VirusTotal 结果解读 🔍
|
|
228
|
+
|
|
229
|
+
| 检测结果 | 含义 | 建议 |
|
|
230
|
+
|---------|------|------|
|
|
231
|
+
| 0/70+ | 所有引擎均未检测到威胁 | ✅ 安全,可以安装 |
|
|
232
|
+
| 1-2/70+ | 极少数引擎标记(可能误报) | ⚠️ 谨慎评估,查看具体引擎和检测类型 |
|
|
233
|
+
| 3-5/70+ | 多个引擎标记为可疑 | ⚠️ 存在风险,建议详细审查 |
|
|
234
|
+
| 5+/70+ | 多个引擎确认为恶意 | ❌ 高风险,强烈建议不要安装 |
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## 🧠 记忆强化 - 每次操作前必读
|
|
239
|
+
|
|
240
|
+
**在处理任何 Skill 相关操作时,请先问自己这些问题:**
|
|
241
|
+
|
|
242
|
+
1. ✅ 如果是 ClawHub 安装且只有名称,我是否已经搜索了完整 URL?
|
|
243
|
+
2. ✅ 我是否已经更新了 skills-scanner 插件到最新版本?
|
|
244
|
+
3. ✅ 我是否已经扫描了这个 Skill?
|
|
245
|
+
4. ✅ 扫描是否通过?
|
|
246
|
+
5. ✅ 只有所有适用步骤都是 YES,才能继续操作
|
|
247
|
+
|
|
248
|
+
**如果你忘记搜索、更新或扫描就执行了操作,你就让用户的系统暴露在风险之中。**
|
|
249
|
+
|
|
250
|
+
### 🚨 强制性规则(永远不要忘记)
|
|
251
|
+
|
|
252
|
+
1. **任何 Skill 操作前 → 先更新插件**
|
|
253
|
+
- 执行 `openclaw plugins update skills-scanner`
|
|
254
|
+
- 确保使用最新的威胁检测规则
|
|
255
|
+
|
|
256
|
+
2. **看到安装命令 → 搜索(如需要)→ 更新插件 → 立即扫描**
|
|
257
|
+
- `openclaw clawhub install xxx` → 先搜索,再更新插件,再扫描
|
|
258
|
+
- 任何包含 "install"、"add"、"download" + "skill" 的命令 → 完整流程
|
|
259
|
+
|
|
260
|
+
3. **看到 Skill 路径 → 更新插件 → 立即扫描**
|
|
261
|
+
- 用户提到 `~/.openclaw/skills/xxx` → 先更新插件,再扫描
|
|
262
|
+
- 用户说 "我下载了一个 skill" → 先更新插件,再扫描
|
|
263
|
+
|
|
264
|
+
4. **看到 ClawHub URL → 更新插件 → 立即扫描**
|
|
265
|
+
- `https://clawhub.ai/username/project` → 先更新插件,再扫描
|
|
266
|
+
|
|
267
|
+
### ❌ 绝对禁止的行为
|
|
268
|
+
|
|
269
|
+
- ❌ 不更新插件就直接扫描
|
|
270
|
+
- ❌ 直接执行安装命令而不先搜索、更新和扫描
|
|
271
|
+
- ❌ 因为 "用户着急" 或 "看起来安全" 就跳过任何步骤
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## 注意事项
|
|
276
|
+
|
|
277
|
+
- **扫描结果不等于安全保证**。`is_safe=True` 表示未检测到已知威胁模式,不代表 skill 绝对安全。
|
|
278
|
+
- 扫描使用静态分析,不会执行任何 skill 中的代码。
|
|
279
|
+
- ClawHub 扫描需要 API 服务能够访问 clawhub.ai。
|
|
280
|
+
- **VirusTotal 结果优先**:如果扫描结果包含 VirusTotal 数据,必须优先展示。
|
|
281
|
+
- 退出码 `0` 表示安全,`1` 表示存在问题(便于 CI/CD 集成)。
|