← 返回日报
🌐 机器翻译 · DeepSeek · GitHub

NVIDIA SkillSpector


NVIDIA SkillSpector

SkillSpector 是一款针对 AI 智能体技能的安全扫描器。在安装智能体技能之前,检测漏洞、恶意模式和安全风险。

概述

AI 智能体技能(被 Claude Code、Codex CLI、Gemini CLI 等使用)在隐式信任和极少审查的情况下执行。研究表明,26.1% 的技能包含漏洞,5.2% 表现出可能的恶意意图。SkillSpector 帮助你回答:“这个技能安装安全吗?”

文档 — [开发指南](link) — 架构、包布局以及如何扩展分析器流水线。

特性

首先创建并激活虚拟环境(所有 make 目标假设 venv 已激活)。使用 uvpip;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 | 传输对话 |

📖 阅读原文 →