SkillSpector:NVIDIA 面向 AI Agent 技能的开源安全扫描工具
一款专为 AI Agent 技能设计的安全扫描工具,在安装前即可检测漏洞、恶意模式和安全风险。获得 NVIDIA 社区 10K Star 关注。保护 Claude Code、Codex CLI 及其他 Agent 框架。
- 更新于 2026-06-25
SkillSpector:NVIDIA 面向 AI Agent 技能的开源安全扫描工具 #
SkillSpector 是一款专为 AI Agent 技能设计的安全扫描工具——这些模块化插件和扩展程序为 Claude Code、GitHub Copilot、Codex CLI 和 Gemini CLI 等框架提供动力。该工具由 NVIDIA 开发,在 GitHub 上已获得 10,273 个 Star,旨在解决在生产环境中安装未经审核的 Agent 技能所带来的日益增长的安全隐患。
本文涵盖安装方法、扫描能力、漏洞检测、与 Agent 框架的集成,以及保护 AI Agent 生态系统的安全最佳实践。
TL;DR #
随着 AI Agent 技能越来越流行,安装未经审核的技能所带来的安全风险也在增加。SkillSpector 提供了针对 800 多种网络安全技能的自动扫描功能,能够在这些风险到达您的系统之前检测出漏洞、恶意模式和安全威胁。它支持所有主流 Agent 框架,并提供可操作的修复建议。
什么是 SkillSpector? #
SkillSpector 源于一个关键的观察:随着 AI Agent 技能在开发者工作流中的普及,安全攻击面也在急剧扩大。与传统软件包需要经过严格的代码审查不同,许多 Agent 技能只是简单的文本文件(SKILL.md),用于指示大语言模型执行任意操作——包括执行 Shell 命令、访问 API 以及修改文件。
该工具提供:
- AI Agent 技能文件的自动化漏洞扫描
- 基于模式的恶意行为检测,包括命令注入、数据外泄和权限提升
- 面向特定框架的分析,支持 Claude Code、GitHub Copilot、Codex CLI 等
- 修复建议,针对检测到的漏洞提供具体修复方案
- CI/CD 集成,支持在自动化流水线中进行安装前扫描
安装指南 #
前置条件 #
- Python:3.12+(异步扫描功能必需)
- 操作系统:Linux、macOS 或 Windows WSL2
- 磁盘空间:500MB(含扫描器及技能数据库)
- 网络:需要下载技能数据库和更新
方式一:通过 Pip 安装 #
# 从 PyPI 安装 SkillSpector
pip install skillspector
# 验证安装
skillspector --version
# 下载最新的技能数据库
skillspector update-db
方式二:从源码安装 #
# 克隆仓库
git clone https://github.com/NVIDIA/SkillSpector.git
cd SkillSpector
# 创建虚拟环境
python -m venv .venv
source .venv/bin/activate
# 以开发模式安装
pip install -e .
# 初始化扫描器
skillspector init --download-database
方式三:Docker 部署 #
# 拉取官方镜像
docker pull nvcr.io/nvidia/skillspector:latest
# 运行扫描
docker run --rm \
-v ${PWD}/skills:/app/skills \
nvcr.io/nvidia/skillspector:latest \
scan /app/skills
# 定期调度扫描
docker run -d \
--name skillspector \
-v ${PWD}/skills:/app/skills \
-v ${PWD}/reports:/app/reports \
nvcr.io/nvidia/skillspector:latest \
daemon --interval 3600
扫描能力 #
漏洞检测类别 #
SkillSpector 检测多个类别的漏洞:
| 类别 | 描述 | 严重程度 |
|---|---|---|
| 命令注入 | 执行任意 Shell 命令的技能 | 严重 |
| 数据外泄 | 将数据发送到外部端点的技能 | 严重 |
| 权限提升 | 试图获取更高权限的技能 | 高 |
| 凭证窃取 | 访问或传输凭证的技能 | 严重 |
| 文件篡改 | 读写任意文件的技能 | 中 |
| 网络访问 | 建立意外网络连接的技能 | 中 |
| API 滥用 | 误用 API 密钥或令牌的技能 | 高 |
| 社会工程 | 操纵用户执行不安全操作的技能 | 中 |
| 供应链 | 依赖未验证外部包的技能 | 高 |
| 信息泄露 | 暴露敏感系统信息的技能 | 低 |
基础扫描 #
# 扫描单个技能文件
skillspector scan my_skill.md
# 扫描技能目录
skillspector scan ./skills/
# 详细输出扫描
skillspector scan ./skills/ --verbose
# 生成报告
skillspector scan ./skills/ --output report.json --format json
高级扫描选项 #
# 按自定义严重程度阈值扫描
skillspector scan ./skills/ --min-severity high
# 按指定漏洞类别扫描
skillspector scan ./skills/ --categories command_injection,data_exfiltration
# 使用特定框架规则扫描
skillspector scan ./skills/ --framework claude-code
# 解析依赖并跟随符号链接
skillspector scan ./skills/ --resolve-deps --follow-links
# 带修复建议的扫描
skillspector scan ./skills/ --remediate --output fixes/
Python API 用法 #
from skillspector.scanner import SkillScanner
from skillspector.report import ReportFormatter
# 初始化扫描器
scanner = SkillScanner(
database_path="~/.skillspector/db",
categories=["all"],
severity_threshold="medium"
)
# 扫描技能文件
result = scanner.scan("suspicious_skill.md")
# 分析结果
print(f"发现漏洞数: {result.vulnerability_count}")
print(f"严重程度: {result.overall_severity}")
# 获取详细发现
for finding in result.findings:
print(f"- [{finding.severity}] {finding.category}: {finding.description}")
print(f" 位置: {finding.location}")
print(f" 修复建议: {finding.remediation}")
# 生成格式化报告
formatter = ReportFormatter(format="markdown")
report = formatter.generate(result)
print(report)
面向特定框架的分析 #
Claude Code 技能 #
Claude Code 技能是定义 Claude Code Agent 行为指令的 Markdown 文件。SkillSpector 对这些文件进行分析,检测:
- 指令中的危险 Shell 命令模式
- 技能内容中的 API 密钥暴露
- 超出预期范围的文件系统访问
- 网络连接请求
# 扫描 Claude Code 技能
skillspector scan ~/.claude/skills/ --framework claude-code
# 检查危险命令模式
skillspector check-commands ~/.claude/skills/ --framework claude-code
GitHub Copilot 技能 #
Copilot 技能为 Copilot Agent 定义自定义行为。SkillSpector 检测:
- 未经授权的代码仓库访问模式
- API 端点篡改
- 技能定义中的凭据收集
- 通过 Copilot 内置工具的数据外泄
# 扫描 Copilot 技能
skillspector scan ~/.config/github-copilot/skills/ --framework copilot
# 检查仓库访问模式
skillspector check-repo-access ~/.config/github-copilot/skills/
Codex CLI 技能 #
Codex CLI 技能扩展了 Codex Agent 的能力。SkillSpector 查找:
- 任意命令执行指令
- 超出项目范围的目录遍历
- 与未知端点的网络通信
- 环境变量篡改
# 扫描 Codex 技能
skillspector scan ~/.codex/skills/ --framework codex
# 检查环境变量篡改
skillspector check-env-manipulation ~/.codex/skills/
Gemini CLI 技能 #
Gemini CLI 技能为 Google 的 Gemini CLI Agent 提供自定义指令。SkillSpector 分析:
- 可能绕过安全措施的工具有使用模式
- 技能定义中的提示词注入向量
- 数据访问范围违规
- 外部 API 调用模式
# 扫描 Gemini CLI 技能
skillspector scan ~/.gemini/skills/ --framework gemini
# 检查提示词注入向量
skillspector check-injection ~/.gemini/skills/
CI/CD 集成 #
GitHub Actions 集成 #
# .github/workflows/skill-security.yml
name: Skill Security Scan
on:
pull_request:
paths:
- 'skills/**'
- '**/SKILL.md'
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install SkillSpector
run: pip install skillspector
- name: Update vulnerability database
run: skillspector update-db
- name: Scan skills
run: |
skillspector scan ./skills/ \
--min-severity high \
--output skillspector-report.json \
--format json
- name: Upload report
uses: actions/upload-artifact@v4
with:
name: skillspector-report
path: skillspector-report.json
GitLab CI 集成 #
# .gitlab-ci.yml
skill-security-scan:
image: python:3.12
script:
- pip install skillspector
- skillspector update-db
- skillspector scan ./skills/ --output gl-skillspector-report.json --format json
artifacts:
reports:
sast: gl-skillspector-report.json
安装前钩子 #
#!/bin/bash
# .git/hooks/pre-install-skill
# 在安装任何新技能之前运行 SkillSpector
skillspector scan "$1" --min-severity critical
if [ $? -ne 0 ]; then
echo "错误:技能包含严重漏洞。安装已阻止。"
exit 1
fi
echo "技能通过安全扫描。继续安装。"
exit 0
修复建议 #
自动修复建议 #
SkillSpector 为每个检测到的漏洞提供具体的修复步骤:
# 生成修复建议
skillspector scan ./skills/ --remediate --output-dir ./remediated/
# 查看修复详情
skillspector remediation ./skills/suspicious.md
示例修复输出:
发现项:Shell 命令中的命令注入
严重程度:严重
位置:第 45 行:"Execute: rm -rf /tmp/* && curl..."
修复建议:
1. 移除无限制的 Shell 命令模式
2. 替换为特定、有边界的命令
3. 对任何用户提供参数添加输入验证
修复前:rm -rf /tmp/* && curl $EXTERNAL_URL
修复后:find /tmp -name "*.log" -mtime +7 -delete
curl --max-time 30 --connect-timeout 10 "$SANITIZED_URL"
4. 为允许的外部域名添加白名单
5. 为外部请求实现速率限制
技能作者的安全最佳实践 #
- 最小化 Shell 命令范围:仅包含技能目的所必需的命令
- 验证所有输入:切勿将用户输入直接传递给 Shell 命令
- 避免处理凭证:不要在技能文件中包含 API 密钥、密码或令牌
- 限制文件系统访问:将文件操作限制在项目目录内
- 记录数据流向:清晰描述技能访问的数据及其发送位置
- 使用白名单:指定允许的域名、文件模式和命令参数
- 审查依赖项:审计技能所需的任何外部包
对比:SkillSpector 与传统安全工具 #
| 功能 | SkillSpector | Bandit | Snyk | Trivy |
|---|---|---|---|---|
| AI Agent 技能 | 支持 | 不支持 | 不支持 | 不支持 |
| SKILL.md 分析 | 支持 | 不支持 | 不支持 | 不支持 |
| 框架支持 | 4+ 种框架 | 仅 Python | 多平台 | 容器/文件 |
| 提示词注入 | 支持 | 不支持 | 部分支持 | 不支持 |
| 命令注入 | 支持 | 支持 | 支持 | 不支持 |
| 数据外泄 | 支持 | 不支持 | 支持 | 不支持 |
| CI/CD 就绪 | 支持 | 支持 | 支持 | 支持 |
| 价格 | 免费 | 免费 | 免费增值 | 免费(开源) |
局限性 #
- 基于模式的检测:一些复杂的攻击可能绕过模式匹配
- 语义理解:扫描器分析技能文本,但无法完全理解 LLM 的行为影响
- 框架演进:新的 Agent 框架需要更新的规则集
- 误报:合法的技能可能会触发需要人工审查的警告
- 数据库时效性:检测效果依赖于定期的数据库更新
入门清单 #
# 1. 安装 SkillSpector
pip install skillspector
# 2. 更新漏洞数据库
skillspector update-db
# 3. 扫描现有技能
skillspector scan ~/.claude/skills/ --framework claude-code
# 4. 设置 CI/CD 集成
# 从文档中添加 GitHub Actions 工作流
# 5. 配置安装前钩子
# 将安装前钩子复制到 git hooks 目录
# 6. 计划定期扫描
crontab -e
# 添加:0 */6 * * * skillspector scan ~/.claude/skills/ --output daily-report.json
结论 #
SkillSpector 填补了 AI Agent 安全领域的一个重要空白。随着 Agent 技能成为 AI 编程助手的标准扩展机制,专用安全扫描的需求变得至关重要。通过提供自动化漏洞检测、面向特定框架的分析和 CI/CD 集成,SkillSpector 帮助开发者维护安全的 Agent 生态系统。
SkillSpector 由 NVIDIA 开发,并由网络安全研究社区提供支持,它是首个面向新兴 AI Agent 技能生态系统的专用安全工具。其开源性质确保了透明度和社区驱动的改进,使其成为任何在生产环境中部署 AI Agent 技能的人不可或缺的工具。
来源 #
行动号召 #
立即保护您的 AI Agent 生态系统。访问 SkillSpector GitHub 仓库 开始使用。如需托管您的安全扫描基础设施,可考虑使用 HTStack 获取实惠的 CI/CD 运行器,或使用 DigitalOcean 托管 GitHub Actions 运行器。
如需大规模企业级安全扫描,ProxyShard 提供安全的代理基础设施,用于隔离 Agent 技能的执行环境。
常见问题 #
问:漏洞数据库应该多久更新一次? #
答:NVIDIA 建议每周更新数据库,最好在每次扫描之前更新。SkillSpector 包含自动更新检查功能,当有新签名可用时会通知您。对于 CI/CD 流水线,请将数据库更新配置为扫描步骤的一部分。
问:SkillSpector 是否适用于自定义或专有 Agent 框架? #
答:SkillSpector 的扫描引擎是框架无关的。虽然它包含了 Claude Code、Copilot、Codex CLI 和 Gemini CLI 的预配置规则,但您可以通过创建支持格式的规则文件,为任何 Agent 框架定义自定义规则集。
问:SkillSpector 能否检测 Agent 技能中的供应链攻击? #
答:可以。SkillSpector 分析技能依赖项、外部包引用和网络通信模式,以检测潜在的供应链攻击。它会标记那些依赖未验证包或与未知端点建立连接的技能。
问:扫描技能目录的预期时间是多少? #
答:对于典型的包含 100 个技能文件的目录,SkillSpector 可在 10 秒内完成全面扫描。较大的目录(1000+ 文件)可能需要 30-60 秒。扫描时间与文件数量呈线性关系,而非文件大小。
问:SkillSpector 是否支持团队协作功能? #
答:目前,SkillSpector 专注于个人扫描和报告。团队协作功能(如共享漏洞数据库和协作修复)计划在未来的版本中推出。JSON 报告格式设计为易于与团队协作平台集成。
问:SkillSpector 如何处理误报? #
答:SkillSpector 为每个发现分配置信度分数,并允许按严重程度阈值进行过滤。可以通过在配置中添加排除模式来抑制误报。NVIDIA 积极根据社区反馈审查和改进检测准确性。
💬 留言讨论