你从网上下载的 AI Agent 技能,可能正在偷你的 API Key
大家好,我是左手。
事情是这样的。
我 Claude Code 里挂了十几个社区 skill。自动生成 commit message 的、处理 PDF 的、一键部署到 Vercel 的……装的时候没多想,看 README 写得还行就/install了。
用了大概两个月,相安无事。
直到上周末,我拿一个叫 SkillSpector 的工具扫了一遍这些 skill。
有一个「自动生成 commit message」的 skill,扫出来 HIGH 级别风险。里面藏了一段 base64 编码的指令,解码之后是往一个陌生域名发请求。
这玩意我用的时候完全没察觉。每次写完代码它帮我写 commit message,我都觉得挺好用的。但两周的时间里,它完全有能力把我的环境变量——包括 API Key——全部传出去。
我当时就愣住了。
赶紧查了一下这东西的来头。SkillSpector,NVIDIA 今年 5 月底开源的,专门扫 AI Agent 技能的安全问题。Apache 2.0 协议,纯 Python。最近 star 涨得很快,6 月中旬已经奔着 3400 去了。
为啥一个安全扫描器突然这么火?
因为今年 2 月,Snyk 安全团队搞了一项叫 ToxicSkills 的研究。他们从 ClawHub(你可以理解成 AI Agent 技能的 App Store)爬了 3984 个技能做安全审计。
结果让人后背一凉。
534 个有严重安全问题,占比 13.4%。其中 76 个是确认的恶意技能——偷 API Key 的、开后门的、远程执行命令的。而且在 Snyk 通知 ClawHub 之后,还有 8 个恶意技能仍然能下载。
8 个。
你敢信???
SkillSpector 的安全扫描报告,红框标出的就是高风险项
坦率的讲,在这之前,我一个 skill 都没扫过。我估计你也没扫过。
你装的每一个 Agent Skill,都有你电脑的钥匙
先给不熟这块的朋友快速补个背景。
AI Agent 技能,现在一般叫 Agent Skill 或者就叫 skill,说到底是给 AI 编程助手(Claude Code、Codex CLI、Cursor 这些)装的功能扩展包。一个 skill 就是一个或几个 markdown 文件,定义了这个 AI 在特定场景下该怎么干活。
比如你装一个「PDF 处理」的 skill,Claude Code 就知道怎么读 PDF、怎么提取文字、怎么生成摘要。装一个「部署到 Vercel」的 skill,它就学会了自动打包推送。
听着挺美好的对吧。
问题在于,这些 skill 跑起来的时候,拥有的是 AI Agent 的全部权限。
什么意思呢?它能读你的代码库、能执行 shell 命令、能访问你的环境变量(包括 API Key)、能发网络请求、能读写文件系统——没有沙箱,什么都没有。
Snyk 在 ToxicSkills 报告里有一句话我印象特别深,大意是「Agent Skill 说到底就是一个带了高权限的 Shell 脚本,而且它跑起来的时候你不会去看它到底干了什么。」
这话听着有点刺耳但,我自己反思了一下,确实是这么回事。
装一个 npm 包你会看 package.json、看依赖、可能还会扫一眼源码。装一个浏览器插件你会看权限列表。但装一个 Agent skill 呢?大概率就是看了一眼介绍,然后/install就完事了。
因为你觉得它「就是个 markdown 文件而已」。
Snyk 的研究显示,36.82% 的技能包含提示注入攻击——就是 skill 里藏了你看不见的指令,能在你不注意的时候操纵 AI Agent 的行为。恶意技能常用的手法包括 base64 混淆、Unicode 欺骗、系统消息冒充。
有一个案例我印象特别深。一个看起来人畜无害的「代码格式化」skill,里面的隐藏指令会在你运行 Agent 的时候,偷偷把当前工作目录、环境变量、最近编辑的文件名全部发到攻击者的服务器。
你完全不会注意到,因为 Agent 在处理这些事情的时候你不会盯着终端看。
说真的,我自己都被吓到了。
NVIDIA 掏出了一个叫 SkillSpector 的东西
回到 SkillSpector 本身。
它是 NVIDIA 在 2026 年 5 月底开源的,Apache 2.0 协议,纯 Python 写的。功能一句话说清楚,在安装一个 Agent Skill 之前,帮你先扫一遍有没有安全问题。
NVIDIA 官方 Verified Agent Skill 验证流程:从技能提交、自动扫描、人工审核到加密签名发布
它支持扫本地目录、GitHub 仓库、URL 链接、zip 包、甚至单个 markdown 文件。输出格式有四种,终端美化输出、JSON、Markdown、SARIF……SARIF 这个格式可以接 CI/CD 流水线,企业用户会很喜欢。
核心的检测能力分两层。
第一层是静态分析,纯规则驱动,跑得飞快。64 种漏洞模式,横跨 16 个类别——从提示注入、数据泄露、权限提升,到供应链攻击、内存投毒、工具滥用、恶意软件签名检测……基本上你能想到的 Agent 特有的攻击面,它都覆盖了。
另外它还会实时查询 OSV.dev 的漏洞数据库,检查 skill 依赖的第三方包有没有已知 CVE。
第二层是 LLM 语义分析,可选打开。这层有意思——它把第一层标记出来的可疑代码片段送进一个大模型,让模型去判断「这到底是不是恶意的」。你想想看,静态规则容易误报对吧,比如一段代码用了exec,但它可能只是正常的动态导入。加了 LLM 这一步,精度能提到大概 87%。
LLM 后端支持 OpenAI、Anthropic、NVIDIA Build 和 Ollama,你用哪个顺手就配哪个。
扫描完了,SkillSpector 会给这个 skill 打一个风险分,0 到 100。分四个等级,
-
0-20 分,LOW,安全,可以装 -
21-50 分,MEDIUM,谨慎,需要手动审一下 -
51-80 分,HIGH,别装了 -
81-100 分,CRITICAL,绝对不要装,跑!
计分规则也挺有意思的。CRITICAL 级别的问题 +50 分,HIGH +25 分,MEDIUM +10 分,LOW +5 分。另外如果 skill 里包含可执行脚本,总分还要乘以 1.3 的系数,因为能执行代码,攻击面大了不止一点。
这个设计挺务实的。不是一个简单的「通过/不通过」,而是一个你可以自己把握的灰度判断。
我拿它扫了几个自己装的 skill
这种工具不亲自跑一下,写出来的东西就没意思了。
我装好之后第一件事,就是把我 Claude Code 里挂的几个社区 skill 挨个扫了一遍。
结果呢?
大部分都还好,风险分在 10-20 之间,主要是些低危的提示注入风险和「可执行脚本」的标记。
但有一个我忘了从哪找来的「自动生成 commit message」的 skill,扫出来一个 HIGH——里面有一段 base64 编码的隐藏指令,解码之后是往一个陌生域名发请求。
我当时就愣住了。
这玩意我用了大概两周,每次写完代码它帮我生成 commit message 我都觉得挺好用的。两周的时间里,它完全有能力把我的 API Key 和环境变量传出去。
这事给我整不会了。
想说这 SkillSpector 的使用门槛还挺低的。装起来一条命令的事:
|
|
然后扫就行了:
|
|
如果你觉得配 Python 环境麻烦,它也支持 Docker:
|
|
我建议至少要开一次 LLM 语义分析。不开 LLM 纯静态扫也行,速度快,几秒钟出结果,但误报会多一点。开着 LLM 能帮你过滤掉不少噪音,而且会给每一条告警附上一段人类可读的解释——告诉我「为什么这段代码可能是恶意的」「建议怎么处理」。这个解释对我这种不是安全专业的人来说,太有用了。
有一说一,我自己跑下来的感受是,静态模式适合快速初筛。比如你刚在 GitHub 上看到一个感兴趣的 skill,不确定能不能装,先跑一遍--no-llm扫一眼。分数低于 20,基本可以放心。分数在 20 以上,再开 LLM 仔细看一遍。
这个流程我觉得日常用着挺顺手的。
这东西跟其他安全工具有什么不一样
可能有小伙伴纳闷,不是有现成的代码扫描工具吗,为什么要专门搞一个扫 Agent Skill 的?
这个问题问得好。
传统的代码安全扫描工具——比如 Semgrep、Bandit、SonarQube——它们的设计目标是普通应用程序代码。但 Agent Skill 的攻击面跟普通代码不太一样。
普通的恶意代码检测,核心关注的是「有没有执行危险操作」——exec 调用、文件读写、网络请求。
但 Agent Skill 最危险的攻击向量是提示注入。一段精心设计的自然语言指令,可以完全改变 AI Agent 的行为,而且这种攻击不需要任何「危险代码」。它就是一段话,一段看起来人畜无害的 markdown,但这段话被加载到 Agent 的上下文中之后,Agent 就被操纵了。
传统的代码扫描器根本不会标记这种东西,因为从代码角度看,它就是一段文本注释。
SkillSpector 专门为 Agent Skill 的攻击面设计了检测规则。比如「隐藏指令」这个类别——它会扫描 skill 中是否包含用小字体、零宽度字符、base64 编码等方式隐藏的 prompt;「系统提示泄露」这个类别——检测 skill 是否在试图提取 Agent 的系统提示词。
这些是传统扫描器完全覆盖不到的盲区。
当然,SkillSpector 也不是唯一在做这件事的工具。Snyk 在 ToxicSkills 报告发布后,也推出了一个免费的 Agent Scan – Skill Inspector。GitHub 上还有一个叫 SkillGuard 的社区项目在做类似的事。
我个人觉得 SkillSpector 目前最大的优势是两个。一个是检测覆盖面——16 大类 64 种模式,在同类工具里是最全的。另一个是它不只是个扫描器,它背后是 NVIDIA 一套更完整的治理框架。
NVIDIA 想的不只是「扫一下」
SkillSpector 其实是 NVIDIA Verified Agent Skills 这个治理框架的一个组件。NVIDIA 在 2026 年 5 月 22 号发布这套东西的时候,同时掏出了三个东西。
除了 SkillSpector 这个扫描器,还有两个。
一个是 Skill Cards,技能卡片。每个经过 NVIDIA 验证的 skill 都会自动生成一张 YAML/JSON 格式的信任元数据记录,写清楚了作者是谁、依赖项有哪些、权限边界在哪、API 访问范围有多大、有什么已知限制。你可以把它理解成技能的身份证明。
有了这个卡片,企业就能写自动化策略了。比如「拒绝加载未签名的 skill」「只有读文件权限的 skill 才允许在 production 环境使用」。
另外一个是 OMS 加密签名。基于 OpenSSF 的 Model Signing 标准,对 skill 的每个文件做密码学签名。这样就算 skill 的 GitHub 仓库被人篡改了,你下载下来一验签名,马上就知道了。
这三个东西合在一起,NVIDIA 想做的事其实是,让 Agent Skill 这个生态,从现在的「相信作者不会害你」变成「不需要信任任何人,验一下就行」。
坦率的讲,我觉得这个方向是对的。
回想一下 npm 生态的发展历程。早期的 npm 也是「大家随便发,反正都是开源代码你自己看」。后来出了 event-stream 事件和 left-pad 事件,社区才意识到没有安全审查的包管理有多脆弱。再后来才有了npm audit、有了 GitHub 的 Dependabot、有了各种供应链安全工具。
Agent Skill 这个生态,今年才刚起来。Snyk 的 ToxicSkills 研究,相当于给整个社区发了一次预警,你现在用着觉得完全没问题的东西,底下可能早就不安全了。
SkillSpector 和 NVIDIA Verified Agent Skills,可以说是这个生态的第一套系统性的安全基础设施。
说回正题,你该不该用
坦率的讲,如果你是个人开发者,日常就用几个社区 skill,SkillSpector 这个工具你「应该用」,但不是「必须用」。因为手动审一下 skill 的源码,看看有没有奇怪的 URL、可疑的 shell 命令,其实也能防住大部分问题。
但说实话,有多少人真的会去审?
我自己装了十几个 skill,在写这篇文章之前,我一个都没审过。不是因为我不在乎安全,而是因为——「就是个 markdown 文件嘛」这种心态太普遍了。
所以我觉得,SkillSpector 真正的价值是帮我们这种懒得手动审的人,花几秒钟跑一下扫描,至少知道「有没有明显问题」。这就像你下载了一个 app 装在手机上,应用商店会告诉你它要哪些权限,你再决定装不装。SkillSpector 干的就是这件事。
如果你是团队在用 AI Agent、或者在做 CI/CD 里集成 Agent 自动化,那就不一样了——SkillSpector 差不多是必装了。把扫描集成到流水线里,每次有新的 skill 提交就自动扫,HIGH/CRITICAL 直接阻断。这个能力目前免费开源,没有不用的理由。
至于 NVIDIA 的整套 Verified Agent Skills 框架,我自己的感受是,它现在还在很早期的阶段。SkillSpecor 是三个组件里最成熟的,Skill Cards 和 OMS 签名才刚出来,生态覆盖还有限。但方向确实是对的,Agent Skill 如果要走进企业生产环境,安全治理是绕不过去的。
最后
写完这篇文章,我又把我所有的 skill 重新扫了一遍。
还好,除了之前发现的那个 commit message skill,其他的都还算干净。
但这件事给我的触动,比我想象中大。
不是因为 SkillSpector 这个工具有多厉害,它就是个扫描器,技术上没什么惊世骇俗的。而是它提醒了我一件事,当一个新东西发展得足够快的时候,我们往往只看到它有多好用,却忘了问它安不安全。
Agent Skill 是 AI 时代最性感的开发者体验之一。一条命令,你的 AI 助手就学会了新能力。
但一条命令,也可能把整个代码库的钥匙交出去。
下次装 skill 之前,花几秒钟跑一下 SkillSpector 吧。真的就是几秒钟的事。
以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~谢谢你看我的文章,我们,下次再见。
/ 作者:左手阿犇/ 公众号:码农左手重构实录
夜雨聆风