Skill Security Scanner

Security

自动检测 JavaScript、TypeScript、Python 和 Shell 文件中的数据外泄、注入、代码混淆与木马后门等安全风险并生成详细报告。

Install

openclaw skills install skill-sec-scan-en

🔒 Skill Security Scanner

企业级 Skill 安全检测工具

自动检测 ClawHub / GitHub / 本地 Skill 的安全风险,支持 JavaScript、TypeScript、Python、Shell 等多种文件类型,基于威胁情报驱动的静态分析引擎。


🎯 核心能力

能力说明
多文件检测支持 .js.ts.py.sh 四种文件类型
威胁分类4 大威胁类别:数据外泄、注入攻击、代码混淆、木马后门
检测规则57 条精细化检测规则,覆盖 60+ 危险操作特征
智能评分100 分制安全评分,量化风险等级
白名单机制支持用户自定义信任的 Skill

🛡️ 威胁分类体系

分类代码风险类型
数据外泄 (EXFIL)EXFIL凭证访问、私钥泄露、网络后门、HTTP 服务
注入攻击 (INJECTION)INJECTION命令执行、npx/远程包执行、动态代码执行、提示注入、越狱攻击
代码混淆 (OBFUSCATION)OBFUSCATIONBase64 编码、环境触发、隐藏执行、持久化进程
木马后门 (TROJAN)TROJAN文件删除、凭证读取、进程终止、postinstall 攻击

📊 检测规则清单

威胁类型规则数代表性规则
INJECTION19cmd-execution、npx-exec、dynamic-exec、prompt-injection、jailbreak、backtick-injection、system-probing、crypto-operation
EXFIL18credential-access、vault-access、private-key、network-backdoor、database-access、config-write、wallet-access、port-listening、proxy-tor、git-operation、file-download
TROJAN14destructive-delete、process-kill、shell-injection、persistent-timer、archive-exploit、arbitrary-write、deserialize
OBFUSCATION6base64、env-trigger、hidden-exec、persistent-shell
合计57-

⚡ 快速开始


触发方式

当用户提出以下问题时自动触发:

类型触发短语
扫描检测"扫描 [链接/名称] 的安全性"
"检测一下 [skill名称]"
"帮我扫描一下这个 skill"
风险询问"[skill] 有风险吗"
"这个 skill 安全吗"
"检查 [链接] 是否有安全问题"
安全评估"评估一下 [名称] 的安全性"
"[skill] 会不会有恶意代码"
通用触发"scan security"
"安全检测"

🤖 Agent 理解指南

当用户提到以下任一关键词时,执行扫描:

必须触发:检测、扫描、安全、风险、恶意代码、危险 链接识别:clawhub.ai、github.com Skill 名称:任何后缀为 -skill 或在 skills 目录下的名称


💬 自然语言示例

用户: 帮我检测一下 https://clawhub.ai/AphobiaCat/aibtc
Agent: [识别到 clawhub.ai 链接 + 检测关键词]
      [执行 ./scripts/scan.sh https://clawhub.ai/AphobiaCat/aibtc]
      [生成完整报告]

用户: 这个 skill 安全吗?https://clawhub.ai/chrisochrisochriso-cmyk/clawsec
Agent: [识别到 clawhub.ai 链接 + 安全询问]
      [执行扫描]

用户: 检测一下 aibtc 这个 skill 有没有风险
Agent: [识别到 skill 名称 + 风险检测]
      [执行扫描]

用户: 帮我看看这个 skill:clawsec
Agent: [识别到 skill 名称]
      [执行扫描]

⚠️ 重要:完整报告规范

每次扫描完成必须生成完整报告,包含:

报告章节必须包含
📋 基本信息Skill名称、功能描述、扫描文件数、检测问题数
📊 安全评分评分 + 等级(安全/可疑/危险)
⚠️ 风险详情表格形式:序号、分类、风险、等级、文件
🎯 结论明确建议(通过/谨慎/禁止)+ 具体原因

威胁分类

分类说明示例
EXFIL数据外泄凭证访问、私钥、API密钥
INJECTION恶意注入命令注入、提示投毒、越狱攻击
OBFUSCATION混淆隐藏Base64、Hex 编码、条件触发
TROJAN木马后门远程执行、文件删除、进程控制

评分规则

评分等级建议
80-100✅ 安全可正常使用
60-79⚠️ 可疑建议审查后使用
<60🚫 危险不推荐安装

使用方法

模式一:扫描远程 Skill(推荐)

直接粘贴 ClawHub 或 GitHub 链接,查看帮助:

./scripts/scan.sh --help
# 扫描 ClawHub Skill
./scripts/scan.sh https://clawhub.ai/owner/skill-name

# 示例
./scripts/scan.sh https://clawhub.ai/chrisochrisochriso-cmyk/clawsec

# 扫描 GitHub 仓库
./scripts/scan.sh https://github.com/user/repo

模式二:扫描本地 Skill

指定本地 skill 目录路径:

# 扫描本地 skill
./scripts/scan.sh /path/to/skill

# 示例:扫描已安装的 skill
./scripts/scan.sh ~/.openclaw/workspace/skills/crypto-wallet

# 扫描当前目录下的 skill
./scripts/scan.sh ./my-skill

高级选项

# JSON 格式输出(程序解析用)
./scripts/scan.sh --format json /path/to/skill

# JSONL 格式输出(日志系统用,每行一个 JSON)
./scripts/scan.sh --format jsonl /path/to/skill > report.jsonl

# 批量扫描所有已安装的 skill
./scripts/scan-all.sh

白名单管理

# 添加到白名单(需用户确认)
./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         # 白名单文件(自动创建)

支持的文件类型

类型扩展名状态
JavaScript.js✅ 支持
TypeScript.ts✅ 支持
Python.py✅ 支持
Shell.sh✅ 支持

报告输出标准格式

检测完成后,报告必须使用以下标准 Markdown 格式输出:

标准模板

``` 🔒 Skill 安全检测报告 ════════════════════════════════════════════════════════════════════

Skill 名称: <skill-name> 扫描文件: <N>检测问题: <N>

📊 安全评分:✅/⚠️/🚫 <score>/100 — <status>

🔍 检测清单: ✅ 全部威胁分类已检测

文件类型状态
JavaScript (.js)✅/➖ 无
TypeScript (.ts)✅/➖ 无
Python (.py)✅/➖ 无
Shell (.sh)✅/➖ 无

🛡️ 威胁检测规则(共 57 项):

  • EXFIL (18): credential-access, vault-access, private-key...
  • INJECTION (19): remote-script, cmd-execution, npx-exec...
  • TROJAN (14): destructive-delete, process-kill...
  • OBFUSCATION (6): base64, env-trigger...

📊 检测结果: 发现 <N> 个风险(有问题时显示)

  • 🔴 critical: <N>
  • 🟠 high: <N>
  • 🟡 medium: <N>

⚠️ 风险详情:(有问题时显示)

#分类风险等级文件
1<分类><风险名><等级><文件>

每条风险解释:(有问题时显示)

  • <风险名> — <解释>

✅/⚠️/🚫 结论:<结论>

<补充说明>

════════════════════════════════════════════════════════════════════ ```

评分标准

评分状态结论
80-100✅ 安全建议使用
30-79⚠️ 可疑建议谨慎使用
0-29🚫 危险不推荐安装使用

示例三:批量扫描(scan-all)

批量扫描时,安全的 skill 仅显示汇总表,有风险的 skill 输出完整报告:

./scripts/scan-all.sh
════════════════════════════════════════════════════
     🔒 Skill 全盘安全扫描
════════════════════════════════════════════════════

📁 扫描目录: /Users/moer/.openclaw/workspace/skills

────────────────────────────────────────────────────
🔍 扫描: crypto-wallet
────────────────────────────────────────────────────
(安全 skill,跳过详细输出)

────────────────────────────────────────────────────
🔍 扫描: litcoin
────────────────────────────────────────────────────

════════════════════════════════════════════════════════════════════
                    🔒 Skill 安全检测报告
                     Skill Security Scanner v4.0
════════════════════════════════════════════════════════════════════

┌─────────────────────────────────────────────────────────────────┐
│ 📋 基本信息                                                    │
├─────────────────────────────────────────────────────────────────┤
│ Skill名称: litcoin
│ 扫描文件: 1 个
│ 检测问题: 2 个
└─────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────┐
│ 📊 安全评分                                                    │
├─────────────────────────────────────────────────────────────────┤
│ 评分: 🚫 55/100 — 危险
└─────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────┐
│ ⚠️  风险详情                                                    │
├─────┬──────────────┬──────────────────┬───────────┬─────────────┤
│  #  │ 分类         │ 风险             │ 等级      │ 文件        │
├─────┼──────────────┼──────────────────┼───────────┼─────────────┤
│  1  │ TROJAN       │ destructive-del  │ 🔴 critical │ miner.py   │
│  2  │ EXFIL        │ network-request  │ 🟠 high     │ miner.py   │
└─────┴──────────────┴──────────────────┴───────────┴─────────────┘

┌─────────────────────────────────────────────────────────────────┐
│ 🎯 结论                                                        │
├─────────────────────────────────────────────────────────────────┤
│ ⚠️  建议谨慎使用                                               │
│                                                               │
│ 原因: 检测到 2 个风险                                           │
│                                                               │
│ ⚠️  风险详情:                                                  │
│   • 文件删除 — 可删除/修改本地文件                              │
│   • 网络请求 — 可能向外部发送数据                               │
└─────────────────────────────────────────────────────────────────┘

════════════════════════════════════════════════════════════════════

════════════════════════════════════════════════════════════
                    📊 扫描汇总
════════════════════════════════════════════════════════════

📦 扫描总数: 19

│ Skill                          │ 评分   │
├────────────────────────────────┼────────┤
│ crypto-wallet                  │ 100    │
│ minebean                       │ 100    │
│ ...                            │ ...    │
│ litcoin                        │ 55     │
└────────────────────────────────┴────────┘

✅ 通过: 18
🚫 禁止运行: 1

⚠️  需要关注的 skill:
  - litcoin (评分: 55)

输出规则:

  • 安全 skill(100分):仅在汇总表显示名称和评分
  • 有风险 skill(<100分):输出完整报告(含风险表格+每条解释)

🤖 Agent 行为指南

批量扫描完成后,Agent 应主动提示用户可以单独检测:

✅ 通过: 14
🚫 需关注: 5

⚠️ 有风险的 skill:
• binance-web3 (40分)
• crypto-wallet (0分)
• dune-api (25分)
• litcoin (55分)
• solana-wallet (25分)

💡 想看某个 skill 的完整报告?直接说「扫描 crypto-wallet」或「单独检测 litcoin」

触发场景:

  • 用户执行 scan-all 或类似批量扫描
  • 扫描结果中有 skill 评分 < 100

提示原则:

  • 列出所有有风险的 skill 及其评分
  • 说明可以单独检测获取完整报告
  • 等待用户选择,不自动继续

JSONL 输出格式

{"skill":"example","category":"INJECTION","rule":"npx-exec","level":"critical","file":"handler.js","snippet":"npx --yes"}
{"skill":"example","category":"TROJAN","rule":"destructive-delete","level":"critical","file":"handler.js","snippet":"unlinkSync"}

字段说明

字段类型说明
skillstringSkill 名称
categorystring威胁分类
rulestring具体规则
levelstring风险等级
filestring涉及文件
snippetstring匹配片段

适用于日志系统、Elasticsearch 导入等场景。

JSON 输出验证

使用 --format json 时,脚本会自动验证 JSON 格式:

./scripts/scan.sh --format json <target> > output.json
# 脚本会自动检查 JSON 格式有效性

注意: 验证结果仅供参考,静态扫描存在局限性。


版本历史

版本日期更新内容
v1.0-基础命令注入检测
v2.0-混淆检测、间接执行、依赖审计
v3.02026-03-18整合 ClawHub jax 规则(AI投毒、木马检测)
v4.02026-03-18威胁分类、完整报告规范、JSONL 输出

参考文档

详细检测规则:references/rules.md