NVIDIA SkillSpector
SkillSpector 是一款针对 AI 智能体技能的安全扫描器。在安装智能体技能之前,检测漏洞、恶意模式和安全风险。
概述
AI 智能体技能(被 Claude Code、Codex CLI、Gemini CLI 等使用)在隐式信任和极少审查的情况下执行。研究表明,26.1% 的技能包含漏洞,5.2% 表现出可能的恶意意图。SkillSpector 帮助你回答:“这个技能安装安全吗?”
文档 — [开发指南](link) — 架构、包布局以及如何扩展分析器流水线。
特性
- 多格式输入:扫描 Git 仓库、URL、zip 文件、目录或单个文件
- 64 种漏洞模式,覆盖 16 个类别:提示注入、数据泄露、权限提升、供应链、过度代理、输出处理、系统提示泄露、内存中毒、工具滥用、恶意代理、触发器滥用、危险代码(AST)、污点追踪、YARA 签名、MCP 最小权限和 MCP 工具中毒
- 两阶段分析:快速静态分析 + 可选的 LLM 语义评估
- 实时漏洞查询:SC4 查询 OSV.dev 获取实时 CVE 数据,并自动离线回退
- 多种输出格式:终端、JSON、Markdown 和 SARIF 报告
- 风险评分:0-100 分,带有严重性标签和明确建议
快速开始
安装
首先创建并激活虚拟环境(所有 make 目标假设 venv 已激活)。使用 uv 或 pip;Makefile 优先使用 uv,否则使用 pip。
# 克隆仓库
git clone https://github.com/NVIDIA/skillspector.git
cd skillspector
# 创建并激活虚拟环境
uv venv .venv && source .venv/bin/activate
# 或:python3 -m venv .venv && source .venv/bin/activate
# 安装用于生产环境
make install
# 或安装包含开发依赖
make install-dev
Docker(无需 Python)
无需安装 Python,通过从附带的 Dockerfile 本地构建来运行 SkillSpector。该镜像基于 Docker 官方 Python 3.12-slim-bookworm 镜像。
构建镜像:
make docker-build
# 或:docker build -t skillspector .
通过将当前目录挂载到 /scan(容器的工作目录)来扫描本地目录:
docker run --rm -v "$PWD:/scan" skillspector scan ./my-skill/ --no-llm
通过传递带有本地 .env 文件的凭据进行 LLM 分析:
cat > .env << 'EOF'
SKILLSPECTOR_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ant-...
EOF
docker run --rm \
-v "$PWD:/scan" \
--env-file .env \
skillspector scan ./my-skill/
或者直接从你的 shell 环境传递凭据:
docker run --rm \
-v "$PWD:/scan" \
-e SKILLSPECTOR_PROVIDER=anthropic \
-e ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" \
skillspector scan ./my-skill/
通过写入挂载的目录将报告写入主机文件系统:
docker run --rm \
-v "$PWD:/scan" \
skillspector scan ./my-skill/ --no-llm --format json --output report.json
重复静态扫描的可选别名:
alias skillspector-docker='docker run --rm -v "$PWD:/scan" skillspector'
skillspector-docker scan ./my-skill/ --no-llm
基本用法
# 扫描本地技能目录
skillspector scan ./my-skill/
# 扫描单个 SKILL.md 文件
skillspector scan ./SKILL.md
# 扫描 Git 仓库
skillspector scan https://github.com/user/my-skill
# 扫描 zip 文件
skillspector scan ./my-skill.zip
输出格式
# 终端输出(默认)- 格式美观
skillspector scan ./my-skill/
# JSON 输出 - 机器可读
skillspector scan ./my-skill/ --format json --output report.json
# Markdown 输出 - 用于文档
skillspector scan ./my-skill/ --format markdown --output report.md
# SARIF 输出 - 用于 CI/CD 集成和 IDE 工具
skillspector scan ./my-skill/ --format sarif --output report.sarif
LLM 分析
为获得最佳结果,配置一个兼容 OpenAI 的 LLM 端点用于语义分析。使用 SKILLSPECTOR_PROVIDER 选择一个提供商;每个提供商都自带其捆绑的默认模型。SkillSpector 也适用于本地兼容 OpenAI 的服务器(Ollama、vLLM、llama.cpp)和托管推理网关。
| 提供商(SKILLSPECTOR_PROVIDER) | 凭据环境变量 | 端点 | 默认模型 | |---|---|---|---| | openai | OPENAI_API_KEY(+ 可选的 OPENAI_BASE_URL) | api.openai.com(或任何兼容 OpenAI 的 URL) | gpt-5.4 | | anthropic | ANTHROPIC_API_KEY | api.anthropic.com | claude-opus-4-6 | | nv_build | NVIDIA_INFERENCE_KEY | build.nvidia.com | deepseek-ai/deepseek-v4-flash |
# 标准 OpenAI
export SKILLSPECTOR_PROVIDER=openai
export OPENAI_API_KEY=sk-...
skillspector scan ./my-skill/
# Anthropic
export SKILLSPECTOR_PROVIDER=anthropic
export ANTHROPIC_API_KEY=sk-ant-...
skillspector scan ./my-skill/
# NVIDIA build.nvidia.com
export SKILLSPECTOR_PROVIDER=nv_build
export NVIDIA_INFERENCE_KEY=nvapi-...
skillspector scan ./my-skill/
# 本地 Ollama 或任何兼容 OpenAI 的端点
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/
# 覆盖提供商的默认模型
export SKILLSPECTOR_MODEL=gpt-5.2
skillspector scan ./my-skill/
# 跳过 LLM 分析(更快,仅静态分析)
skillspector scan ./my-skill/ --no-llm
漏洞模式
SkillSpector 检测 16 个类别中的 64 种漏洞模式:
提示注入(5 种模式)
| ID | 模式 | 严重性 | 描述 | |---|---|---|---| | P1 | 指令覆盖 | HIGH | 忽略安全约束的命令 | | P2 | 隐藏指令 | HIGH | 注释/不可见文本中的恶意指令 | | P3 | 泄露命令 | HIGH | 将上下文传输到外部的指令 | | P4 | 行为操纵 | MEDIUM | 改变代理决策的微妙指令 | | P5 | 有害内容 | CRITICAL | 可能导致身体伤害的指令 |
数据泄露(4 种模式)
| ID | 模式 | 严重性 | 描述 | |---|---|---|---| | E1 | 外部传输 | MEDIUM | 将数据发送到外部 URL | | E2 | 环境变量收集 | HIGH | 收集 API 密钥和机密 | | E3 | 文件系统枚举 | MEDIUM | 扫描目录以查找敏感文件 | | E4 | 上下文泄露 | HIGH | 传输对话 |