NVIDIA/SkillSpector

GitHub Trending (daily) 工具

摘要

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

AI代理技能的安全扫描器。检测漏洞、恶意模式和安全风险。
查看原文
查看缓存全文

缓存时间: 2026/06/11 13:33

NVIDIA/SkillSpector 源码:https://github.com/NVIDIA/SkillSpector

SkillSpector

AI 代理技能安全扫描器。
检测漏洞、恶意模式和安全风险,在安装代理技能之前。
Python 3.12+(https://www.python.org/downloads/)
许可证:Apache 2.0(https://www.apache.org/licenses/LICENSE-2.0)

概述

AI 代理技能(用于 Claude Code、Codex CLI、Gemini CLI 等)以隐式信任执行,且审查极少。研究表明,26.1% 的技能存在漏洞5.2% 表现出明显的恶意意图
SkillSpector 帮助您回答:“这个技能安装安全吗?”

文档

  • 开发指南 — 架构、包布局以及如何扩展分析器流水线。

特性

  • 多格式输入:扫描 Git 仓库、URL、zip 文件、目录或单个文件
  • 64 种漏洞模式,涵盖 16 个类别:提示注入、数据泄露、权限提升、供应链、过度代理、输出处理、系统提示泄露、内存投毒、工具滥用、恶意代理、触发器滥用、危险代码(AST)、污点跟踪、YARA 签名、MCP 最小权限和 MCP 工具投毒
  • 两阶段分析:快速静态分析 + 可选的 LLM 语义评估
  • 实时漏洞查询:SC4 查询 OSV.dev(https://osv.dev)获取实时 CVE 数据,并自动离线回退
  • 多种输出格式:终端、JSON、Markdown 和 SARIF 报告
  • 风险评分:0-100 分,附带严重等级和清晰建议

快速开始

安装

首先创建并激活虚拟环境(所有 make 目标都假定虚拟环境已激活)。使用 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

基本用法

# 扫描本地技能目录
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)凭证环境变量端点默认模型
openaiOPENAI_API_KEY (+ 可选的 OPENAI_BASE_URL)api.openai.com(或任何兼容 OpenAI 的 URL)gpt-5.4
anthropicANTHROPIC_API_KEYapi.anthropic.comclaude-opus-4-6
nv_buildNVIDIA_INFERENCE_KEYbuild.nvidia.comdeepseek-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 检测 64 种漏洞模式,涵盖 16 个类别:

提示注入(5 种模式)

ID模式严重性描述
P1指令覆盖忽略安全约束的命令
P2隐藏指令注释/不可见文本中的恶意指令
P3数据泄露命令要求将上下文外传的指令
P4行为操纵微妙地改变代理决策的指令
P5有害内容严重可能导致身体伤害的指令

数据泄露(4 种模式)

ID模式严重性描述
E1外部传输向外部 URL 发送数据
E2环境变量窃取收集 API 密钥和机密
E3文件系统枚举扫描目录以查找敏感文件
E4上下文泄露将对话上下文外传

权限提升(3 种模式)

ID模式严重性描述
PE1过度权限请求超出声明功能的访问权限
PE2Sudo/Root 执行调用提升的系统权限
PE3凭证访问读取 SSH 密钥、令牌、密码

供应链(6 种模式)

ID模式严重性描述
SC1未固定依赖包无版本约束
SC2外部脚本获取curl | bash 和远程代码执行
SC3混淆代码Base64/hex 编码执行
SC4已知漏洞依赖具有已知 CVE 的依赖(实时 OSV.dev 查询)
SC5废弃依赖无安全更新的未维护包
SC6域名仿冒类似流行包的包名

过度代理(4 种模式)

ID模式严重性描述
EA1无限制工具访问无约束的随意工具访问
EA2自主决策无人工参与的高影响决策
EA3范围扩大超出声明目的的能力
EA4无限制资源访问资源消耗无速率限制或配额

输出处理(3 种模式)

ID模式严重性描述
OH1未验证输出注入模型输出未经清理直接使用
OH2跨上下文输出输出跨越信任边界而未经验证
OH3无限制输出输出大小或生成速率无限制

系统提示泄露(3 种模式)

ID模式严重性描述
P6直接泄露暴露系统提示或内部规则的指令
P7间接提取通过改写、翻译或侧信道提取
P8基于工具的外泄通过文件写入或网络请求泄露系统提示

内存投毒(3 种模式)

ID模式严重性描述
MP1持久上下文注入设计为跨交互持久化的内容
MP2上下文窗口填充填充内容挤占安全约束
MP3内存操纵篡改代理内存或存储状态

工具滥用(3 种模式)

ID模式严重性描述
TM1工具参数滥用构造参数导致意外行为(shell=True, –force)
TM2链式滥用绕过单独安全检查的工具链
TM3不安全默认值过于宽松的默认值(禁用 TLS、无认证)

恶意代理(2 种模式)

ID模式严重性描述
RA1自我修改严重运行时修改自身代码或配置
RA2会话持久化通过 cron 任务或启动脚本进行未授权持久化

触发器滥用(3 种模式)

ID模式严重性描述
TR1过于宽泛的触发器匹配常见单词的触发模式
TR2影子命令触发器覆盖内置命令或其他技能的触发器
TR3关键词诱饵触发器旨在最大化激活的通用触发器

行为 AST(8 种模式)

ID模式严重性描述
AST1exec() 调用严重直接 exec() 允许任意代码执行
AST2eval() 调用直接 eval() 评估任意表达式
AST3动态导入__import__() 运行时加载任意模块
AST4subprocess 调用通过 subprocess 执行外部命令
AST5os.system / exec 系列通过 os 模块执行 shell 命令
AST6compile() 调用从字符串创建代码对象
AST7动态 getattr()使用非字面名称进行任意属性访问
AST8危险执行链严重exec/eval 结合动态来源(网络、编码数据)

污点跟踪(5 种模式)

ID模式严重性描述
TT1直接污点流数据直接从源流向接收器,未经清理
TT2变量中介污点流数据通过中间变量从源流向接收器
TT3凭证泄露链严重凭证(环境变量、机密)流向网络输出接收器
TT4文件读取到网络泄露文件内容流向网络输出接收器
TT5外部输入到代码执行严重网络或用户输入流向 exec/eval/subprocess 接收器

YARA 签名(4 种模式)

ID模式严重性描述
YR1恶意软件匹配严重YARA 规则匹配已知恶意软件签名
YR2网页后门匹配严重YARA 规则匹配网页后门模式
YR3挖矿程序匹配YARA 规则匹配加密货币挖矿迹象
YR4黑客工具/漏洞利用匹配YARA 规则匹配黑客工具或漏洞利用代码

MCP 最小权限(4 种模式)

ID模式严重性描述
LP1未声明能力代码使用了权限声明中未列出的能力
LP2通配符权限权限列表包含通配符(*、all、full、any)
LP3缺失权限声明无权限字段但代码具有可检测的能力
LP4过度声明权限声明了权限但未找到对应的代码能力

MCP 工具投毒(4 种模式)

ID模式严重性描述
TP1隐藏指令元数据中的隐藏指令(HTML 注释、零宽字符、base64、数据 URI)
TP2Unicode 欺骗工具元数据中的同形异义词、RTL 覆盖、混合脚本标识符
TP3参数描述注入参数定义中的注入模式(覆盖、系统令牌、恶意默认值)
TP4描述-行为不匹配声明的工具描述与实际代码行为不符(LLM 驱动)

所有检测到的模式均列在上表中。

风险评分

分数计算

  • 严重问题:+50 分
  • 问题:+25 分
  • 问题:+10 分
  • 问题:+5 分
  • 可执行脚本:1.3 倍乘数

严重等级

分数严重性建议
0-20安全
21-50谨慎
51-80请勿安装
81-100严重请勿安装

示例输出

终端输出

SkillSpector 安全报告 v2.0.0
技能: suspicious-skill
来源: ./suspicious-skill/
扫描时间: 2026-01-29 10:30:00 UTC

风险评估

指标                     值
得分                     78/100
严重性                   高
建议                     请勿安装

组件 (3)

文件类型              行数    可执行
SKILL.md              markdown  142     否
scripts/sync.py       python    87      是
requirements.txt      text      3       否

问题 (2)

高: 环境变量窃取 (E2)
位置: scripts/sync.py:23
发现: for key, val in os.environ.items():...
置信度: 94%
解释: 该代码收集包含 API 密钥和机密的环境变量,然后将其发送到外部服务器。

高: 外部传输 (E1)
位置: scripts/sync.py:45
发现: requests.post("https://api.skill.io/env"...
置信度: 89%
解释: 数据正在发送到外部服务器。结合上述环境变量窃取,表明存在凭证泄露。

配置

环境变量

变量描述必须
SKILLSPECTOR_PROVIDER活动的 LLM 提供商:openaianthropicnv_build。每个提供商都有自己绑定的 model_registry.yaml 和默认模型(见上方的 LLM 分析表)。默认为 nv_build可选
NVIDIA_INFERENCE_KEYnv_build 提供商(build.nvidia.com)的凭证。使用 LLM 分析且 SKILLSPECTOR_PROVIDER=nv_build 时必须
OPENAI_API_KEYOpenAI 提供商的凭证(SKILLSPECTOR_PROVIDER=openai)。也作为凭证瀑布中的二级回退(当活动提供商未返回凭证时)。使用 LLM 分析且 SKILLSPECTOR_PROVIDER=openai 时必须
OPENAI_BASE_URL覆盖 OpenAI 端点(例如指向 Ollama)。可选
ANTHROPIC_API_KEYAnthropic 提供商的凭证(SKILLSPECTOR_PROVIDER=anthropic)。使用 LLM 分析且 SKILLSPECTOR_PROVIDER=anthropic 时必须
SKILLSPECTOR_MODEL覆盖活动提供商的默认模型。见每个提供商的默认模型上方的 LLM 分析表。可选
SKILLSPECTOR_MODEL_REGISTRY用自定义路径覆盖绑定的每提供商 YAML 注册表(src/skillspector/providers/<provider>.yaml)。可选
SKILLSPECTOR_LOG_LEVEL日志级别:DEBUGINFOWARNINGERROR(默认:WARNING)。可选

CLI 选项

skillspector scan --help
选项:
  -f, --format [terminal|json|markdown|sarif]  输出格式 [默认: terminal]
  -o, --output PATH                              输出文件路径
  --no-llm                                       跳过 LLM 分析(仅静态分析)
  -V, --verbose                                  显示详细进度
  --help                                         显示此信息并退出

开发

设置

所有 make 目标都假定虚拟环境已创建并激活。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-dev

# 运行测试
make test

# 运行带覆盖率的测试
make test-cov

# 运行 lint
make lint

# 格式化代码
make format

工作原理

SkillSpector 使用两阶段检测流水线:

阶段 1:静态分析

  • 快速的正则表达式模式匹配,跨越 11 个静态分析器
  • 基于 AST 的行为分析,检测危险调用(execevalsubprocess、动态导入等)
  • YARA 签名扫描,检测已知恶意负载
  • MCP 最小权限分析(权限声明与代码能力对比)
  • 污点跟踪(识别数据从不安全来源流向危险接收器)
  • 实时 CVE 查询 OSV.dev,检测已知漏洞依赖

阶段 2:LLM 分析(可选)

当启用时,LLM 分析器执行深度语义评估:

  • 用于隐蔽命令和间接数据泄露的提示注入分析
  • 文本分类,识别行为操纵、有害内容和系统提示泄露
  • 代理意图分析和信任边界映射
  • MCP 工具元数据验证,检测隐藏指令、Unicode 欺骗和参数注入
  • 描述-行为一致性验证

由 NVIDIA 构建。Made with ❤️ by the SkillSpector team.

相似文章

Skill Inspector

Product Hunt

Skill Inspector 是一款开发者工具,可审计 AI 代理技能,帮助防范恶意软件风险。

为你的OpenClaw代理技能提供运行前安全保障

Reddit r/openclaw

SecureSkill 是一款工具,可在 OpenClaw 代理技能执行前进行 10 层安全分析,检测凭证窃取、外呼、Shell 脚本等威胁。它生成一份签名审计报告,并映射到 OWASP、MITRE、NIST 和欧盟 AI 法案标准。