cat README.md | head -20
SkillSpector
AI Agent 技能安全扫描器。64 种漏洞检测模式、16 大类、两阶段管道(静态 + LLM)、污点跟踪、MCP 投毒检测、OSV.dev 实时 CVE。在装技能之前,先看看它安不安全。
// 目录
// 概览
// 我装了几百个 AI 技能,从来没想过安全问题
我每天跑 GitHub AI 日报快三个月了,装过的 AI 技能没有一百也有八十。Claude Code 的 SKILL.md、Cursor 的 manifest、各种 MCP 工具包——看到有意思的就装,从来不觉得有什么问题。
直到看到 NVIDIA 这篇论文的数据,我才后背发凉。
NVIDIA 的研究团队爬了两大技能市场的 42,447 个 AI 技能,用自研的 SkillScan 框架对其中 31,132 个做了系统分析。结果:26.1% 的技能至少含有一个安全漏洞,5.2% 显示强烈的恶意意图。
更让人不安的是:包含可执行脚本的技能,出现漏洞的概率是纯指令类技能的 2.12 倍。
想一想——我每天装的那些带脚本的技能,每一个都可能是一个潜在的攻击面。os.environ 收集你的 API Key、requests.post() 把你的对话上下文发到外部服务器、exec() 直接执行任意代码——这些东西藏在 SKILL.md 的 scripts 目录里,你装的时候根本不会去翻。
这就是 NVIDIA 为什么要做 SkillSpector。它不是一个 AI 工具,它是一个安全审计工具,专门针对 AI Agent 技能这个新兴攻击面。
// 64 条规则拆开看:有些模式让你后背发凉
SkillSpector 内置了 64 种漏洞检测模式,分成 16 个大类。每一类都对应论文中发现的真实攻击类型。挑几个最让人不安的说:
提示注入(P1-P5)
大家不陌生,但关键是 P2(隐藏指令)——攻击者把恶意命令写在 HTML 注释里、零宽字符里、base64 编码里,你肉眼根本看不出来。P5(有害内容)是唯一的 CRITICAL 级别提示注入模式——可能直接导致物理伤害。
数据渗出(E1-E4)
E2(环境变量收割)是所有 AI 技能里最常见的攻击手段之一——一行 for key, val in os.environ.items() 就能把你所有的 API Key 收走,再配合 E1(外部传输)requests.post() 发出去。论文数据里,数据渗出占比 13.3%,是第二大漏洞类型。
污点跟踪(TT1-TT5)
这是最硬核的部分。SkillSpector 不只是做简单的关键字匹配,它会做数据流追踪:你的环境变量从哪来、流到哪里去、中间有没有经过净化。TT3(凭证渗出链)和 TT5(外部输入到代码执行)都是 CRITICAL 级别——从「拿到你的密钥」到「把密钥发出去」的完整攻击链。
MCP 工具投毒(TP1-TP4)
这个分类我之前没见过。TP1 检测工具元数据里的隐藏指令(HTML 注释、零宽字符、base64),TP2 检测 Unicode 欺骗(同形字、RTL 覆盖),TP3 检测参数描述注入,TP4 检测描述与行为不一致。四个模式直接针对 MCP 协议这个新出现的安全盲区,而且是 LLM 驱动的检测——TP4 必须用 LLM 才能判断「描述说的和代码做的是不是一回事」。
行为 AST 分析(AST1-AST8)
直接分析 Python AST,找 exec()、eval()、subprocess、os.system 这些危险调用。AST8(危险执行链)是 CRITICAL——exec() 加上来自网络或编码数据的动态源,等于给攻击者开了个任意代码执行的后门。
YARA 签名(YR1-YR4)
直接用 YARA 规则匹配已知恶意软件、Webshell、加密挖矿程序和黑客工具。已经不是「AI 安全」了,这是传统安全领域的方法论直接搬过来用。
完整 16 大类一览:提示注入、数据渗出、权限提升、供应链、过度代理、输出处理、系统提示泄露、内存毒化、工具滥用、流氓 Agent、触发器滥用、行为 AST、污点跟踪、YARA 签名、MCP 最小权限、MCP 工具投毒。
// 两阶段检测:静态分析快,LLM 语义分析准
SkillSpector 的检测管道分两个阶段:
阶段一:静态分析。11 个静态分析器并行跑,包括正则匹配、AST 分析、YARA 规则、OSV.dev 实时 CVE 查询。速度快,召回率高——大部分问题在这一步就能抓到。但误报也多,因为静态分析不理解上下文。
阶段二:LLM 语义分析(可选)。把阶段一的结果喂给 LLM,让它判断「这个到底是真漏洞还是误报」。论文报告精确率从静态分析的约 60% 提升到 86.7%,召回率 82.5%。LLM 提示自带反越狱保护——防止恶意技能反过来操纵分析过程。
这个两阶段设计是实用的。纯静态太吵,纯 LLM 太慢还费钱。先粗筛再精排,跟安全团队的工作流一致。
// 实测:扫描一个技能只需几秒
安装和基本使用很直接:
输出示例:
风险评分系统很直观:CRITICAL +50 分、HIGH +25 分、MEDIUM +10 分、LOW +5 分,有可执行脚本再乘 1.3x。0-20 LOW(安全)、21-50 MEDIUM(谨慎)、51-100 HIGH/CRITICAL(不要安装)。
还有一个细节我觉得很到位:OSV.dev 实时 CVE 查询。SC4 规则不是靠内置的漏洞列表,而是实时查 OSV.dev 的 API——覆盖 PyPI 和 npm 上数万个公告。离线环境自动降级到小型内置列表。你的依赖里如果有刚披露的 CVE,它也能抓到。
// 架构:四步扫描流水线
// 竞品对比
NVIDIA 不是唯一做 AI 技能安全扫描的。Cisco 在 2026 年 1 月就发布了 skill-scanner(2.2K Stars,v2.0.11),OWASP 在 2026 年初启动了 Agentic Skills Top 10 安全框架。三个项目放在一起看:
| 维度 | NVIDIA SkillSpector | Cisco skill-scanner | OWASP AST10 |
|---|---|---|---|
| 定位 | 安全扫描工具 | 安全扫描工具 | 安全框架/标准 |
| 检测模式 | 64 种 / 16 大类 | 8 个分析器 | 10 类风险定义 |
| 独有能力 | 污点跟踪 · MCP 投毒 | VirusTotal · AI Defense | 通用技能格式提案 |
| LLM 分析 | OpenAI/Anthropic/NVIDIA | + AWS/Google/Azure | N/A |
| 输出格式 | Terminal/JSON/MD/SARIF | +HTML | N/A |
| CI/CD | SARIF 可对接 | GitHub Actions + pre-commit | 检查清单 |
| 误报处理 | LLM 语义过滤 | 元分析器 + LLM 共识 | 建议语义+行为检测 |
| Python | 3.12+ | 3.10+ | N/A |
| 安装 | git clone + make | pip install 一行 | 文档下载 |
| 正式 Release | 无 | v2.0.11 | v1.0-2026(孵化中) |
| 许可证 | Apache 2.0 | Apache 2.0 | CC BY-SA 4.0 |
SkillSpector 的优势在深度。64 种检测模式覆盖了 AI 技能安全的几乎所有维度,特别是 MCP 相关的 8 种模式(LP1-LP4 + TP1-TP4),目前没有其他工具做这个。污点跟踪(TT1-TT5)也是独有的。如果你特别关心 MCP 安全——而且你应该关心,因为 MCP 正在成为 Agent 通信的事实标准——SkillSpector 是唯一的选择。
Cisco skill-scanner 的优势在成熟度。更早发布、有正式 Release、安装更简单、CI/CD 集成更完善。LLM 共识模式是个聪明的抗误报设计。VirusTotal 和 AI Defense 云端分析是 SkillSpector 没有的能力。
最好的用法?两个都装。SkillSpector 扫 MCP 漏洞和污点追踪,Cisco skill-scanner 扫恶意软件和做 CI 集成。它们互补,不冲突。
OWASP AST10不是工具,是安全框架。它定义了 10 类 Agent 技能安全风险(AST01 恶意技能到 AST10 跨平台复用风险),还提出了一个「通用技能格式」提案——想用签名验证 + 权限白名单 + Merkle 根透明日志从协议层面解决安全问题。方向是对的,但还在孵化阶段,Q4 2026 才会出 v1.0 正式版。
// 检测性能数据
数据来源:Liu et al. (2026) "Agent Skills in the Wild: An Empirical Study of Security Vulnerabilities at Scale",样本量 42,447 个技能。漏洞类型分布:数据渗出 13.3%、权限提升 11.8%、提示注入和供应链风险紧随其后。
// 不是没有短板
Bus Factor ≈ 2。项目 16 个 commit,核心就两个人。keshprad 贡献 11 个 commit,wernerkasselman-au 贡献 1 个。NVIDIA 出品不代表 NVIDIA 投入了很多人——更像是一个小团队的内部项目开放源码。
没有正式 Release。pyproject.toml 里版本号已经到 2.1.3 了,但 GitHub Releases 页面是空的。没有版本标签、没有变更日志。对于一个安全工具来说,这是不可忽视的问题——你怎么确保你用的版本是经过测试的?
CI/CD 集成缺失。没有 GitHub Actions、没有 pre-commit 钩子。虽然 SARIF 输出格式可以对接 CI 工具,但你需要自己写集成脚本。Cisco 的 skill-scanner 在这方面做得好太多。
26 个 Open Issues + 14 个 Open PR。对于只有 16 个 commit 的项目来说,这个积压比例有点高。TP3 的修复刚刚合并(6 月 10 日),说明一些检测模式还在调试中。
非英语内容盲区。论文明确说了,SkillSpector 可能遗漏非英语技能中的模式。对中文用户来说这是个实际限制——国内 AI 社区的技能用中文写指令注入,可能绕过正则匹配。
没有动态分析。纯静态 + LLM,不会真正执行代码。一些运行时行为(条件触发、延迟执行)静态分析是看不到的。
Python 3.12+ 门槛。Cisco skill-scanner 只要求 3.10+。很多服务器还在跑 3.10 或 3.11,这一条可能就拦住一些人。
// 综合评分
✅ 污点跟踪和 MCP 工具投毒是独有能力
✅ 论文支撑,不是拍脑袋设计的规则
✅ OSV.dev 实时 CVE 查询
✅ 两阶段检测(静态 + LLM)实用且有效
✅ Apache 2.0 可商用 · NVIDIA 出品企业背书
❌ 没有正式 GitHub Release
❌ 没有 CI/CD 集成
❌ Python 3.12+ 门槛偏高
❌ 非英语内容检测有盲区
❌ 26 Issues / 14 PRs 积压
❌ 没有动态分析能力
// 跟我在做的事有什么关系
我每天跑的 GitHub AI 日报自动化,本身就是一个 AI Agent 技能的消费者。WebFetch 技能、文件操作技能、Obsidian 同步技能——每一个都在我的本地环境里执行。如果其中任何一个被植入恶意代码,它理论上可以读取我的 .env 文件、把我的 API Key 发到外部服务器、或者修改我的 Obsidian 笔记。
这不是假想的风险。论文里 13.3% 的技能有数据渗出漏洞,5.2% 有恶意意图。我装了快三个月的技能,从来没有扫描过任何一个。
SkillSpector 给了我一个很实际的启示:AI Agent 的安全不是「未来问题」,是「现在问题」。我们每天讨论 Agent 能不能做更多事,但很少有人问——你装的那些技能,你真的信任吗?
OWASP 在 2026 年初就紧急启动了 Agentic Skills Top 10 项目。ClawHavoc 事件(1184 个恶意技能)、ClawHub 仓库污染、Snyk 检测到 280+ 个泄露 API Key 的技能——都是 2025-2026 年的真实案例。
我接下来的计划:先把每天评测的项目过一遍 SkillSpector,看看我自己装的东西到底安不安全。如果发现什么有意思的结果,会单独写一篇。
// 参考链接
NVIDIA/SkillSpector — 项目仓库
Cisco skill-scanner — 竞品参考
OWASP Agentic Skills Top 10 — 安全框架
Liu et al., "Agent Skills in the Wild: An Empirical Study of Security Vulnerabilities at Scale", 2026 — 论文
OSV.dev — 开源漏洞数据库
SkillSpector 不是完美的安全方案——论文自己也说了,86.7% 的精确率意味着 13.3% 的误报或漏报。但它是目前唯一深度覆盖 MCP 安全和污点追踪的工具,方向是对的。AI Agent 的安全审计会变成标配,就像 npm audit 之于 Node.js 项目。
我会持续记录一个每天跑 GitHub AI 日报的人如何用 AI 工具、踩什么坑、做出什么判断。如果你也关心 AI 安全这件事,关注我,我们一起往前试。