你下载了一个帮 AI 整理文件的技能。它表面上只写文档,背后却可能读取凭据、联网传走内容,甚至下载并运行别的程序。因为 Agent 技能会携带指令和脚本,还能接触文件或终端,安装它更像装软件扩展,而不是复制一段提示词。NVIDIA 开源的 SkillSpector,就是想在安装前先做一次安检。
本文涉及的功能与效果数据主要来自 NVIDIA 官方仓库,尚无第三方测试交叉验证。
它在查什么?
据 NVIDIA 介绍,SkillSpector 可以扫描 Git 仓库、URL、ZIP 文件、目录或单个文件,覆盖 17 类、共 71 种风险模式。其中包括提示注入——把恶意指令藏进技能或外部内容,诱使 Agent 偏离原任务;也包括数据外泄、权限提升、供应链污染、危险代码和工具滥用等。
这类风险并非只存在于设想中。据 Cato CTRL 披露,研究人员曾从 Anthropic 开源的 GIF Creator Skill 出发,只加入一个看似负责保存后处理的辅助函数,就让技能在首次授权后暗中下载并执行外部程序。在隔离测试中,这条链最终运行了 MedusaLocker 勒索软件并加密文件,全程没有第二次确认。争议的关键很直白:用户同意技能运行一次,究竟等于授权它走多远?
先用规则筛,再让模型读语义
SkillSpector 采用两阶段分析。第一阶段是静态分析,也就是不实际运行技能,先检查代码和配置中是否出现危险结构。第二阶段可选用 LLM 做语义评估,让大模型结合上下文判断一段指令到底在做什么。
这种组合有现实意义。规则扫描速度快、结果容易复查,但可能把正常的安全测试工具也视为危险;语义分析更有机会理解意图,却会引入模型选择、稳定性和数据处理方式等新问题。NVIDIA 尚未披露可选 LLM 评估所用模型、提示词、数据是否外发及成本,因此目前只能把它看成辅助判断。
扫描结果会给出 0—100 的风险分数、严重性标签和处置建议,并可输出为 Terminal、JSON、Markdown 或 SARIF。SARIF 是一种供持续集成系统和开发工具读取的安全报告格式。团队还可以用 glob 规则——按文件路径批量匹配——或 finding fingerprint(发现项的唯一指纹)建立基线,只显示复扫中新出现的问题。
针对第三方依赖,SC4 检查会实时查询 OSV.dev 的 CVE 数据。CVE 是公开登记的软件漏洞编号;断网时,工具会自动回退到离线模式。远程下载和压缩包也设有容量与文件数量上限,用来限制超大下载和“解压后突然膨胀”的压缩包攻击。
为什么现在值得关注?
据《Agent Skills in the Wild》论文,研究团队从 skills.rest 和 SkillsMP 抓取了 42,447 个技能,去重筛选后留下 31,132 个,并用两个人月人工标注了 500 个样本,以建立分类体系和校准规则。在这批数据中,NVIDIA 报告称 26.1% 含有漏洞,5.2% 显示出“可能的恶意意图”。后一个说法不能写成已经确认恶意。
更值得注意的是,初始样本中有 7,353 个技能因仓库变成 404 而被排除,占 17.3%。研究者认为,这可能造成幸存者偏差:消失的项目也许更集中地包含恶意内容。另一方面,安全与红队类技能的原始告警率达到 67.4%,其中又混有因正常用途而执行危险操作的工具。这说明高告警率不等于高检测准确率。
SkillSpector 也是 NVIDIA Verified Skills 流程的一部分。该流程把扫描、人工审核、实际评测和数字签名组合起来,通过后再进入 NVIDIA skills catalog。数字签名用于确认发布来源和内容完整性;它不能证明技能没有未知风险。工具还提供 Pi 和 OpenCode 扩展,可在 Agent 会话中直接发起扫描。
局限与未知
- “71 种模式、17 个类别”描述的是规则覆盖范围,不等于能可靠发现所有同类风险。官方没有公布准确率、召回率、误报率或与同类工具的对比。
- 31,132 个技能的完整抽样方式、漏洞判定标准、恶意意图标签方法和统计区间仍不充分,相关比例应视为研究样本结果,而非整个生态的定论。
- 安全扫描器只能做筛查。扫描通过不等于“可以放心安装”,仍需结合来源核验、最小权限、隔离运行和人工审查。