SkillSpector
AI Agent 技能安全扫描工具,64种漏洞模式检测,支持 Docker 一键部署
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
AI Agent 技能安全扫描工具,64种漏洞模式检测,支持 Docker 一键部署
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你给 AI 编程助手 Claude Code 安装了一个新技能(Skill),让它帮你读文件、跑脚本、调用 API——然后它悄悄把你的 ~/.ssh/id_rsa 发到了境外服务器。这是科幻情节吗?
2026 年初,NVIDIA 安全研究团队 Liu 等人发布了一份大规模实证研究,扫描了 42,447 个 AI Agent 技能(来自主流技能市场),惊人地发现:26.1% 的技能存在安全漏洞,5.2% 显示明显恶意意图。这个数字意味着——你每安装 4 个技能,就有 1 个可能有问题,每 20 个里有 1 个甚至在主动作恶。
这直接催生了 SkillSpector——NVIDIA 开源的 AI Agent 技能安全扫描器,专门回答一个问题:这个技能,能安全安装吗?
SkillSpector 并非凭空诞生,而是基于 2026 年发表的学术研究论文《Agent Skills in the Wild: An Empirical Study of Security Vulnerabilities at Scale》。该研究由 NVIDIA 安全团队主导,系统性地分析了来自主要技能市场的真实技能生态,规模达 4.3 万余个技能包。研究结论令人警醒:可执行脚本占比越高的技能,漏洞率是纯 Markdown 描述技能的 2.12 倍。
项目由 NVIDIA 官方维护,采用 Apache-2.0 许可证,目前版本 2.1.4,GitHub stars 超过 6200,是当前 AI Agent 安全领域最受关注的开源工具之一。
SkillSpector 内置 64 种漏洞检测规则,覆盖 16 个安全攻击类别,是目前最全面的 AI 技能安全扫描方案。以下是各分类的核心检测逻辑:
检测 5 种模式:指令覆盖(P1)、隐藏指令(P2)、数据外传命令(P3)、行为操纵(P4)、有害内容(P5)。当技能试图指示 AI 忽略安全约束、植入隐藏指令或发送敏感上下文时触发。
检测 4 种:外部传输(E1)、环境变量收割(E2)、文件系统扫描(E3)、上下文泄漏(E4)。专门捕捉 os.environ.items() 遍历 API key 并发送至外部服务器的行为——这是恶意技能最常见的窃密手段。
检测 3 种:过度权限申请(PE1)、sudo/root 执行(PE2)、凭证访问(PE3)。技能如果请求 SSH key、token、密码等凭证即触发。
检测 6 种:未固定版本依赖(SC1)、远程脚本执行(SC2)、混淆代码(SC3)、已知漏洞依赖(SC4,实时查 OSV.dev)、废弃依赖(SC5)、域名仿冒(SC6)。SC4 最为关键——通过 OSV.dev 实时查询 PyPI 和 npm 已知 CVE,覆盖数万条漏洞记录。
检测 4 种:无限制工具访问(EA1)、自主决策(EA2)、能力蔓延(EA3)、无上限资源消耗(EA4)。当技能在未经用户确认的情况下执行高影响决策即触发。
通过 Python AST 解析,检测代码中的危险调用:
| 模式 | 危险等级 | 检测内容 |
|---|---|---|
| AST1 | CRITICAL | exec() 直接执行任意代码 |
| AST2 | HIGH | eval() 动态求值 |
| AST3 | HIGH | __import__() 动态导入任意模块 |
| AST4 | HIGH | subprocess 调用外部命令 |
| AST5 | HIGH | os.system 等 shell 执行族 |
| AST6 | MEDIUM | compile() 从字符串创建代码对象 |
| AST7 | MEDIUM | 非字面量的 getattr() 动态属性访问 |
| AST8 | CRITICAL | exec/eval + 动态来源(网络/编码数据)组合链 |
追踪数据从 source 到 sink 的流向:直接污染流(TT1)、变量中介流(TT2)、凭证外泄链(TT3,CRITICAL)、文件读→网络外泄(TT4,HIGH)、外部输入→代码执行(TT5,CRITICAL)。
内置 YARA 规则检测已知恶意软件:恶意软件特征(YR1,CRITICAL)、Webshell(YR2,CRITICAL)、挖矿程序(YR3,HIGH)、黑客工具(YR4,HIGH)。
针对 Model Context Protocol 技能的专项攻击:
最小权限检测(4 种): 未声明能力(LP1)、通配符权限(LP2)、缺失权限声明(LP3)、过度声明权限(LP4)。
工具投毒检测(4 种): 隐藏指令(TP1,HTML注释/零宽字符/base64)、Unicode 欺骗(TP2,同形异义字/RTL覆盖)、参数描述注入(TP3)、描述与实际行为不匹配(TP4,需 LLM 语义分析)。
SkillSpector 采用业界罕见的两阶段分析流水线,兼顾速度与精度:
通过 11 个专项静态分析器执行高速模式匹配,无需 LLM 调用即可检测:正则表达式规则匹配、AST 行为分析、YARA 签名扫描、OSV.dev CVE 实时查询。覆盖所有文件,高召回率(约 75% 覆盖率),中等精度(部分误报)。
启用时调用 LLM(支持 OpenAI、Anthropic、NVIDIA build.nvidia.com)进行上下文评估,过滤误报并提供人类可读的解释,将精度提升至约 87%。LLM Prompt 内置反越狱保护,防止恶意技能操纵分析过程。
整体流水线基于 LangGraph 实现,采用图式编排(graph.py),支持节点可插拔扩展。核心状态管理(state.py)协调各分析节点的结果聚合与报告生成。
src/skillspector/
├── graph.py # LangGraph 流水线编排
├── state.py # 分析状态管理
├── models.py # Pydantic 数据模型
├── cli.py # Typer CLI 入口
├── nodes/
│ ├── analyzers/ # 11个专项分析器
│ │ ├── static_runner.py # 静态分析调度器
│ │ ├── behavioral_ast.py # AST 行为分析
│ │ ├── behavioral_taint_tracking.py # 污点追踪
│ │ ├── static_patterns_*.py # 各分类正则规则
│ │ ├── static_yara.py # YARA 扫描
│ │ ├── osv_client.py # OSV.dev API 客户端
│ │ ├── mcp_least_privilege.py # MCP 最小权限
│ │ └── mcp_tool_poisoning.py # MCP 工具投毒
│ ├── meta_analyzer.py # 元数据聚合
│ ├── report.py # 报告生成
│ └── resolve_input.py # 多格式输入解析
└── providers/ # LLM 提供商适配
├── anthropic/
├── openai/
└── nv_build/
| 组件 | 技术选型 | 作用 |
|---|---|---|
| 核心框架 | LangGraph ≥1.0.10 | 图式 Agent 流水线编排 |
| CLI | Typer 0.23.x | 命令行界面 |
| 数据模型 | Pydantic ≥2.12 | 结构化数据验证 |
| HTTP | httpx ≥0.28 | 异步 HTTP(OSV.dev 调用) |
| LLM 调用 | openai ≥2.25 | OpenAI 兼容接口 |
| 规则引擎 | yara-python ≥4.5 | 二进制/文本签名匹配 |
| 代码风格 | ruff | linting + formatting |
| 测试 | pytest + pytest-asyncio | 单元 + 集成测试 |
| 包管理 | hatchling | PEP 517 构建 |
Python 版本要求 3.12~3.13,这是因为项目依赖中 Typer <0.24 与 semgrep 的 click 版本冲突,需要较新的 Python 环境。
项目有完善的测试体系(tests/ 目录):
tests/fixtures 目录下包含精心构造的各类恶意技能样本,用于验证检测规则的准确性。
| 分数区间 | 等级 | 建议 |
|---|---|---|
| 0-20 | LOW | ✅ 可安全安装 |
| 21-50 | MEDIUM | ⚠️ 谨慎安装 |
| 51-80 | HIGH | 🔴 不建议安装 |
| 81-100 | CRITICAL | 🔴 禁止安装 |
加分规则:CRITICAL +50,HIGH +25,MEDIUM +10,LOW +5;可执行脚本(Python/Shell 等)乘以 1.3 倍系数。
git clone https://github.com/NVIDIA/skillspector.git
cd skillspector
make docker-build
# 静态扫描(无需 API key)
docker run --rm -v "$PWD:/scan" skillspector scan ./my-skill/ --no-llm
# 带 LLM 分析(需配置 API key)
docker run --rm -v "$PWD:/scan" --env-file .env skillspector scan ./my-skill/
# 输出 JSON 报告
docker run --rm -v "$PWD:/scan" skillspector scan ./my-skill/ --format json --output report.json
git clone https://github.com/NVIDIA/skillspector.git
cd skillspector
uv venv .venv && source .venv/bin/activate
make install
skillspector scan ./my-skill/
支持终端(默认,彩色格式化)、JSON(机器解析)、Markdown(文档化)、SARIF(CI/CD 集成)四种输出格式。
必须承认的局限:
行业争议点:
LLM 语义分析阶段需要将技能内容发送给第三方 API(OpenAI/Anthropic),意味着你扫描的技能内容实际上会被上传——这与技能本身的安全扫描初衷存在微妙悖论。项目通过本地 Ollama/vLLM 兼容接口部分解决了这个问题,但默认仍需上传。
SkillSpector 的出现标志着 AI Agent 安全从理论走向工程化。随着 Claude Code、Codex CLI、Cursor 等 AI 编程工具的普及,技能生态急剧膨胀,但安全标准几乎空白。NVIDIA 这项开源填补了关键空白:
从增长曲线看,AI Agent 安全工具正在从「极客玩具」进化为企业级刚需,SkillSpector 目前是这一赛道的标杆项目。
总结:SkillSpector 是 AI Agent 技能安全领域的旗舰级开源工具,由 NVIDIA 官方维护,基于大规模实证研究,提供 64 种漏洞检测规则、两阶段分析架构(静态+LLM)、多格式报告输出和极简部署体验(Docker 一条命令)。适合所有使用 AI 编程工具(Claude Code、Codex CLI 等)的开发者——安装任何第三方技能前,跑一下 SkillSpector,是对自己数字资产的基本保护。