自动检测并评分 ClawHub、GitHub 和本地 Skill 中 JS、TS、Python、Shell 文件的安全风险,识别数据泄露、注入、混淆和木马等威胁。
🔒 Skill Security Scanner是一项面向实际任务的技能,主要用于企业级 Skill 安全检测工具;自动检测 ClawHub / GitHub / 本地 Skill 的安全风险,支持 JavaScript、TypeScript、Python、Shell 等多种文件类型,基于威胁情报驱动的静态分析引擎 + LLM 语义分析双层检测;
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
企业级 Skill 安全检测工具
自动检测 ClawHub / GitHub / 本地 Skill 的安全风险,支持 JavaScript、TypeScript、Python、Shell 等多种文件类型,基于威胁情报驱动的静态分析引擎 + LLM 语义分析双层检测。
用户提出检测请求
↓
Agent 运行 scan.sh 执行静态扫描
↓
Agent 输出完整安全报告(Markdown 格式)
↓
Agent 询问用户是否需要语义分析
↓
用户确认后
↓
Agent 生成 LLM 语义分析提示(从脚本输出中提取)
↓
用户将提示复制给 Agent
↓
Agent 执行 LLM 语义分析
↓
Agent 输出最终结论
| 能力 | 说明 |
|---|---|
| 多文件检测 | 支持 .js、.ts、.py、.sh 四种文件类型 |
| 威胁分类 | 4 大威胁类别:数据外泄、注入攻击、代码混淆、木马后门 |
| 检测规则 | 57 条精细化检测规则,覆盖 60+ 危险操作特征 |
| 智能评分 | 100 分制安全评分,量化风险等级 |
| LLM 语义分析 | 静态扫描定位疑似问题,用户确认后生成提示,Agent 执行深度分析 |
| 白名单机制 | 支持用户自定义信任的 Skill |
| 双层检测 | 静态规则精准定位 → LLM 语义判断真伪 |
| 分类 | 代码 | 风险类型 |
|---|---|---|
| 数据外泄 (EXFIL) | EXFIL | 凭证访问、私钥泄露、网络后门、HTTP 服务 |
| 注入攻击 (INJECTION) | INJECTION | 命令执行、npx/远程包执行、动态代码执行、提示注入、越狱攻击 |
| 代码混淆 (OBFUSCATION) | OBFUSCATION | Base64 编码、环境触发、隐藏执行、持久化进程 |
| 木马后门 (TROJAN) | TROJAN | 文件删除、凭证读取、进程终止、postinstall 攻击 |
| 威胁类型 | 规则数 | 代表性规则 |
|---|---|---|
| INJECTION | 19 | cmd-execution、npx-exec、dynamic-exec、prompt-injection、jailbreak、backtick-injection、system-probing、crypto-operation |
| EXFIL | 18 | credential-access、vault-access、private-key、network-backdoor、database-access、config-write、wallet-access、port-listening、proxy-tor、git-operation、file-download |
| TROJAN | 14 | destructive-delete、process-kill、shell-injection、persistent-timer、archive-exploit、arbitrary-write、deserialize |
| OBFUSCATION | 6 | base64、env-trigger、hidden-exec、persistent-shell |
| 合计 | 57 | - |
./scripts/scan.sh https://clawhub.ai/owner/skill-name ./scripts/scan.sh https://github.com/user/repo
./scripts/scan.sh /path/to/skill ./scripts/scan.sh ~/.openclaw/workspace/skills/crypto-wallet
./scripts/scan.sh --format json https://clawhub.ai/owner/skill-name
./scripts/scan-all.sh
| 评分 | 等级 | 建议 |
|---|---|---|
| 80-100 | ✅ 安全 | 可正常使用 |
| 30-79 | ⚠️ 可疑 | 建议审查后使用 |
| 0-29 | 🚫 危险 | 不推荐安装使用 |
静态扫描适合找"有没有危险操作",但判断不了"这个危险操作是不是工具本身的功能"。例如:
credential-access — 安全工具检测 credential 是正常功能,不是泄露backtick-injection — 可能是 Markdown 转义,不是命令注入npx-exec — 可能是构建/安装脚本,不是运行恶意包1. 用户:"检测 [skill] 的安全性"
2. Agent 执行:
bash scripts/scan.sh https://clawhub.ai/owner/skill-name
3. Agent 输出完整报告(包含所有章节)
4. Agent 询问:
"发现 {N} 个风险,安全评分 {score}/100。
是否需要我进行 LLM 语义分析来判断这些是真实威胁还是误报?"
5. 用户确认后,Agent 从脚本输出中提取 LLM 语义分析提示,
执行语义分析并输出结论
6. 用户选择不分析时,Agent 仅输出报告,不追问
🔒 **Skill 安全检测报告** ════════════════════════════════════════════════════════════════════ **Skill 名称:****扫描文件:** 个 **检测问题:** 个 📊 安全评分:✅/⚠️/🚫 /100 — 🔍 **检测清单:** ✅ 全部威胁分类已检测 | 文件类型 | 状态 | |----------|------| | JavaScript (.js) | ✅/➖ 无 | | TypeScript (.ts) | ✅/➖ 无 | | Python (.py) | ✅/➖ 无 | | Shell (.sh) | ✅/➖ 无 | **🛡️ 威胁检测规则(共 57 项):** - **EXFIL (18):** credential-access, vault-access... - **INJECTION (19):** remote-script, cmd-execution... - **TROJAN (14):** destructive-delete, process-kill... - **OBFUSCATION (6):** base64, env-trigger... 📊 **检测结果:** 发现 个风险 - 🔴 critical: 个 - 🟠 high: 个 - 🟡 medium: 个 --- **⚠️ 风险详情:** | # | 分类 | 风险 | 等级 | 文件 | |:---:|--------|------------------|-----------|------------| | 1 | <分类> | <风险名> | <等级> | <文件> | --- **每条风险解释:** - <风险名> — <解释> --- ✅/⚠️/🚫 **结论:<结论>** --- ⚠️ 发现 {N} 个风险,安全评分 {score}/100。 是否需要我进行 LLM 语义分析来判断这些是真实威胁还是误报?
当用户确认后,从脚本输出中提取以下内容生成提示:
# Skill 安全语义分析请求 ## 任务 你是一位专业的代码安全审计员。请从安全产品角度分析以下 Skill,判断它是否可以安全安装使用。 ## 安全评估六维框架 | 维度 | 问题 | 权重 | |------|------|------| | **1. 数据透明** | 它访问/发送了什么数据?去了哪里?是否告知用户? | 高 | | **2. 权限边界** | 申请的权限(网络/文件/进程/环境变量)是否超出声明功能? | 高 | | **3. 行为透明** | 有没有未声明的偷偷执行行为? | 极高 | | **4. 供应链风险** | 执行外部包(npx/pip/git)来源可信吗?版本固定吗? | 高 | | **5. 用户控制** | 用户能随时停止/禁用吗?敏感操作有确认吗? | 中 | | **6. 成本告知** | 有没有隐性成本(Gas费/算力消耗/付费API)? | 中 | ## 额外判断 如存在以下任一情况,直接标记为 failed: 1. **数据外泄**:向非功能必需的第三方发送用户数据 2. **偷偷执行**:在用户不知情时执行额外行为 3. **权限超出**:申请的权限超出 Skill 声明的功能范围 4. **供应链攻击**:执行来源不明的外部包 5. **用户无控制**:无法停止、或停止后自动重启 6. **成本不透明**:产生用户无法预估的成本 ## 分析要求 请按以下格式输出: ### 1. 六维评估 - **[维度名]**:[通过/关注/警告] — [简要说明] ### 2. 总体评估 - 语义检测结果:✅ passed / ⚠️ failed / 🚫 failed - 理由:综合六维判断,给出整体结论 ### 3. 逐文件分析 对每个有风险的文件,以表格形式输出: | 风险 | 判断 | 说明 | 越界行为 | |------|------|------|---------| | [风险名] | ✅误报/⚠️低风险/🚨真实威胁 | [详细解释] | ⚠️ 维度X+Y / 无明显越界行为 | ### 4. 最终建议 - 是否可以安装使用? - 需要注意什么? ## 静态扫描报告 [从脚本输出中提取风险表格 + 相关文件代码]
当用户提出以下问题时触发检测流程:
| 类型 | 触发短语 |
|---|---|
| 扫描检测 | "扫描 [链接/名称] 的安全性" |
| "检测一下 [skill名称]" | |
| "帮我扫描一下这个 skill" | |
| 风险询问 | "[skill] 有风险吗" |
| "这个 skill 安全吗" | |
| "检查 [链接] 是否有安全问题" | |
| 安全评估 | "评估一下 [名称] 的安全性" |
| "[skill] 会不会有恶意代码" |
./scripts/scan.sh --format json
{
"skill": "example-skill",
"score": 55,
"files": 3,
"issues": [
{"category":"INJECTION","rule":"backtick-injection","level":"critical","file":"handler.js","snippet":"backtick"}
]
}
# 添加到白名单 ./scripts/scan.sh --whitelist-add skill-name # 从白名单移除 ./scripts/scan.sh --whitelist-remove skill-name # 查看白名单 ./scripts/scan.sh --whitelist-list
skill-security-scanner/ ├── SKILL.md # 本文档 ├── scripts/ │ ├── scan.sh # 核心扫描脚本 │ └── scan-all.sh # 批量扫描脚本 ├── references/ │ ├── rules.md # 详细检测规则 │ └── dangerous-commands.md # 危险命令列表 └── whitelist.txt # 白名单文件(自动创建)
| 版本 | 日期 | 更新内容 |
|---|---|---|
| v1.0 | - | 基础命令注入检测 |
| v2.0 | - | 混淆检测、间接执行、依赖审计 |
| v3.0 | 2026-03-18 | 整合 ClawHub jax 规则(AI投毒、木马检测) |
| v4.0 | 2026-03-18 | 威胁分类、完整报告规范、JSONL 输出 |
| v4.1 | 2026-03-21 | 新增 LLM 语义分析提示生成(解决静态扫描误报) |
| v4.3 | 2026-03-21 | 重构 LLM 语义分析 prompt:引入安全评估六维框架 + 六维额外判断标准(数据透明/权限边界/行为透明/供应链风险/用户控制/成本告知);修复文件内容重复输出 bug |
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.5万人学习
最新文章