介绍
# skill-guard
**ClawHub 技能的唯一预安装安全关卡。**
## 为什么选择 skill-guard?
| | **VirusTotal** (ClawHub 内置) | **skillscanner** (Gen Digital) | **skill-guard** | |---|---|---|---| | **运行时机** | 发布后 (服务端) | 按需查询 | **安装前 (客户端)** | | **检查内容** | 恶意软件特征码 | 它们的数据库 | **实际的技能内容** | | **提示词注入** | ❌ | ❌ | ✅ | | **数据窃取 URL** | ❌ | ❌ | ✅ | | **隐藏指令** | ❌ | ❌ | ✅ | | **AI 特定威胁** | ❌ | ❌ | ✅ | | **阻止安装** | ❌ | ❌ | ✅ |
**VirusTotal** 可以捕获已知的恶意软件二进制文件 —— 但无法标记 `<!-- IGNORE PREVIOUS INSTRUCTIONS -->`。
**skillscanner** 检查 Gen Digital 是否已审核它 —— 但无法扫描新的或更新的技能。
**skill-guard** 使用 [mcp-scan](https://github.com/invariantlabs-ai/mcp-scan) (Invariant Labs,已被 Snyk 收购) 来分析技能中的实际内容,捕获 AI 特定的威胁,并在发现问题时阻止安装。
## 问题所在
技能可能包含: - 🎭 **提示词注入** —— 隐藏的“忽略之前的指令”攻击 - 💀 **恶意软件载荷** —— 伪装在自然语言中的危险命令 - 🔑 **硬编码机密** —— 明文的 API 密钥、令牌 - 📤 **数据外泄** —— 泄露你的对话、记忆、文件的 URL - ⛓️ **恶意流程** —— 链式导向有害操作的指令
**一个恶意技能 = 受损的代理。** 你的代理无条件信任技能。
## 解决方案
```bash # Instead of: clawhub install some-skill ./scripts/safe-install.sh some-skill ```
skill-guard: 1. **下载到暂存区** (`/tmp/`) —— 绝不会接触你真实的技能文件夹 2. **使用 mcp-scan 扫描** —— Invariant/Snyk 的 AI 代理安全扫描器 3. **阻止或安装** —— 干净的技能将被安装,威胁将被隔离
## 它能捕获什么
真实案例 —— skill-guard 标记了以下恶意技能:
``` ● [E004]: Prompt injection detected (high risk) ● [E006]: Malicious code pattern detected ● [W007]: Insecure credential handling ● [W008]: Machine state compromise attempt ● [W011]: Third-party content exposure ```
VirusTotal: 0/76 个引擎。**mcp-scan 捕获了杀毒软件遗漏的内容。**
## 用法
```bash # Secure install (recommended) ./scripts/safe-install.sh <skill-slug>
# With version ./scripts/safe-install.sh <skill-slug> --version 1.2.3
# Force overwrite ./scripts/safe-install.sh <skill-slug> --force ```
## 退出代码
| 代码 | 含义 | 操作 | |------|---------|--------| | `0` | 干净 | 技能已安装 ✓ | | `1` | 错误 | 检查依赖/网络 | | `2` | 发现威胁 | 技能隔离在 `/tmp/` 中,决定前请先审查 |
## 发现威胁时
技能保留在 `/tmp/skill-guard-staging/skills/<slug>/` (隔离区)。你可以: 1. **审查** —— 阅读扫描输出,检查文件 2. **强制安装** —— `mv /tmp/skill-guard-staging/skills/<slug> ~/.openclaw/workspace/skills/` 3. **丢弃** —— `rm -rf /tmp/skill-guard-staging/`
## 环境要求
- `clawhub` CLI —— `npm i -g clawhub` - `uv` —— `curl -LsSf https://astral.sh/uv/install.sh | sh`
## 为什么这很重要
你的代理有权访问你的文件、消息,甚至可能是你的整台机器。一个恶意技能可以: - 读取你的机密并发送给别处 - 永久修改你的代理的行为 - 使用你的身份传播到其他系统
**信任,但要验证。** 安装前先扫描。