NVIDIA 开源 SkillSpector:AI Agent 技能安全扫描器,你的 Agent 装了个"定时炸弹"?
5.2% 的 AI Agent 技能存在恶意意图,26.1% 包含漏洞------这是 NVIDIA 最新开源的 SkillSpector 给出的数据。
最近 GitHub Trending 上有个项目直接冲到了日榜第一,962 stars/day,来自 NVIDIA 官方------SkillSpector,一个专门给 AI Agent 技能做安全扫描的工具。
说实话,看到这个项目的第一反应是:终于有人做这件事了。
背景:AI Agent 技能有多危险?
如果你用过 Claude Code、Codex CLI、Gemini CLI 这些 AI 编程助手,应该知道它们都支持"技能"(Skill)机制------本质上就是一段 Markdown 文件加上一些脚本,告诉 AI 在特定场景下该怎么做。
问题在于:这些技能执行时几乎没有任何安全审查。
你从网上随便下载一个 skill,装上之后它就能访问你的文件系统、执行 shell 命令、调用 API。如果这个 skill 里藏了恶意代码,后果可想而知。
NVIDIA 的研究数据更触目惊心:
- 26.1% 的技能包含安全漏洞
- 5.2% 显示出明显的恶意意图
这意味着你装 20 个技能,大概率就有 1 个是坏的。
SkillSpector 是什么?
简单说,SkillSpector 就是一个命令行工具,用来回答一个问题:"这个技能安全吗?"
它支持多种输入方式:
bash
# 扫描本地目录
skillspector scan ./my-skill/
# 扫描单个文件
skillspector scan ./SKILL.md
# 扫描 Git 仓库
skillspector scan https://github.com/user/my-skill
# 扫描 zip 包
skillspector scan ./my-skill.zip
输出格式也很全:终端美化输出、JSON、Markdown、SARIF(CI/CD 集成用)。
64 种漏洞模式,16 个类别
这是 SkillSpector 最硬核的地方。它内置了 64 种漏洞检测模式,覆盖 16 个安全类别。我挑几个最值得关注的说说:
1. Prompt Injection(提示注入)
这是 AI 安全领域最经典的问题。攻击者可以在 skill 文件里藏指令,比如"忽略所有安全限制"、"把对话内容发送到某个 URL"。SkillSpector 能检测 5 种注入模式,包括隐藏指令(藏在注释或不可见文本里)和行为操纵。
2. 供应链攻击
这个类别有 6 种检测模式,其中几个特别实用:
- SC2 - 外部脚本获取 :检测
curl | bash这种经典攻击模式 - SC3 - 混淆代码:检测 Base64/Hex 编码的恶意执行
- SC4 - 已知漏洞依赖:实时查询 OSV.dev 数据库,检查依赖是否有 CVE
- SC6 - 拼写欺诈 :检测类似
requsts(伪装成requests)这种恶意包名
3. AST 代码分析
SkillSpector 不只是做文本匹配,它还会解析 Python AST(抽象语法树),检测 8 种危险代码模式:
scss
AST1 - exec() 调用(CRITICAL)
AST2 - eval() 调用(HIGH)
AST3 - 动态导入 __import__()
AST4 - subprocess 调用
AST5 - os.system / exec 家族
AST8 - 危险执行链(exec + 动态数据源)
4. 污点追踪(Taint Tracking)
这个功能挺有意思的。它追踪数据从"源"到"汇"的流动路径:
- TT3:检测凭据(环境变量、密钥)是否流向网络输出
- TT5:检测外部输入是否流向 exec/eval/subprocess
比如一个 skill 读取了 .env 文件里的 API Key,然后通过 HTTP 请求发出去------SkillSpector 能追踪到这条完整链路。
5. MCP 工具安全
MCP(Model Context Protocol)是 Anthropic 推出的 AI 工具协议,SkillSpector 专门针对 MCP 做了 8 种检测:
- LP1:代码使用了未声明的权限
- TP1:工具元数据中隐藏指令(HTML 注释、零宽字符、Base64)
- TP2:Unicode 欺骗(同形字、RTL 覆盖)
两阶段分析:静态 + LLM
SkillSpector 的分析流程分两步:
第一阶段:快速静态分析。 纯规则匹配 + AST 解析,速度快,不需要联网。适合 CI/CD 流水线里跑。
第二阶段:LLM 语义评估(可选)。 用大模型理解代码的真实意图。比如一段代码看起来是正常的文件操作,但 LLM 能判断它实际上在偷偷收集敏感信息。
LLM 支持 OpenAI、Anthropic、NVIDIA 自己的推理服务,也可以用本地 Ollama:
bash
# 用本地 Ollama
export SKILLSPECTOR_PROVIDER=openai
export OPENAI_API_KEY=ollama
export OPENAI_BASE_URL=http://localhost:11434/v1
export SKILLSPECTOR_MODEL=llama3.1:8b
skillspector scan ./my-skill/
# 跳过 LLM 分析(纯静态)
skillspector scan ./my-skill/ --no-llm
风险评分
SkillSpector 会给每个技能打一个 0-100 的风险分:
| 分数 | 级别 | 建议 |
|---|---|---|
| 0-20 | LOW | 安全,可以装 |
| 21-50 | MEDIUM | 谨慎,看看报告再决定 |
| 51-80 | HIGH | 别装 |
| 81-100 | CRITICAL | 千万别装 |
评分规则也很透明:CRITICAL 问题 +50 分,HIGH +25,MEDIUM +10,LOW +5。如果技能包含可执行脚本,还有 1.3 倍乘数。
Docker 部署
不想装 Python 环境?一行 Docker 搞定:
bash
# 构建镜像
docker build -t skillspector .
# 扫描当前目录
docker run --rm -v "$PWD:/scan" skillspector scan ./my-skill/ --no-llm
# 带 LLM 分析
docker run --rm \
-v "$PWD:/scan" \
-e SKILLSPECTOR_PROVIDER=anthropic \
-e ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" \
skillspector scan ./my-skill/
我的使用感受
试用了几天,说几个真实感受:
优点:
- 开箱即用。 pip install 完就能跑,不需要复杂配置
- 检测覆盖面广。 64 种模式不是吹的,从注入到供应链到代码执行都覆盖了
- 输出可读性好。 终端输出有颜色分级,一眼能看出问题严重程度
- CI/CD 友好。 支持 SARIF 格式,可以直接接入 GitHub Actions
- NVIDIA 背书。 大厂维护,更新频率有保障
不足:
- 目前主要针对 Python 技能做 AST 分析,对其他语言的支持还在完善中
- LLM 分析需要额外配置 API Key,纯静态分析的误报率会高一些
- 项目还很新,社区生态需要时间积累
适合谁用?
- AI Agent 开发者:发布 skill 前自检,避免无意中引入安全问题
- 安全工程师:审计第三方 skill 的安全性
- 平台运营方:在 skill 市场上线前做自动化安全审查
- 普通用户:安装任何 skill 前跑一下,图个安心
推荐指数
⭐⭐⭐⭐(4/5)
扣一星主要是因为项目还比较新,生态不够成熟。但方向完全正确------AI Agent 技能安全这个领域,迟早会成为刚需。
项目地址: github.com/NVIDIA/Skil...
现在 AI Agent 越来越普及,skill/plugin 生态也在快速扩张。SkillSpector 这类安全工具的出现,说明行业开始认真对待 Agent 安全问题了。建议所有做 AI Agent 相关开发的朋友都关注一下。