摘要

  • 2025 年 8 月 26 日,npm 的 Nx 包供应链攻击里,攻击者把 Claude Code 和 Gemini CLI 下载到受害者机器上,让 AI 替自己搜机密、传机密。安全厂商 Wiz 的定性:已知首次在供应链攻击中用 AI 执行数据窃取。
  • 续集在 CI/CD:一条恶意 GitHub issue 劫持了 Claude Code 官方 Action 的权限检查,从读密钥打到完整仓库接管。漏洞已修复,但同类配置错误已在另一个 AI 编程工具的仓库被真实利用。
  • 背景板:chalk 事件中,维护者账号失陷后约 16 分钟即发出恶意版本,18 个包合计周下载 20 亿次。
  • 本文判断:AI 编程工具的角色变了——从"被攻击的软件"变成"攻击者借用的自动化劳动力",攻击成本近乎零。
  • 防御三件事:终端上收小 AI 的权限;CI 里密钥与 AI 会话隔离;issue/PR 默认按不可信输入对待。

一、那天发生了什么

2025 年 8 月 26 日起,npm 上 Nx 的多个包被投毒,事件后来被命名为 s1ngularity。真正让它进入史册的不是投毒本身——npm 供应链攻击每个月都有——而是恶意脚本里的下一步:它把 Claude Code 和 Gemini 这两个 AI 编程工具下载到受害者的开发机上运行。

AI 工具在受害者机器上做什么?搜机密。API key、钱包文件、环境变量,凡是像凭证的东西都翻出来,传到攻击者控制的公开 GitHub 仓库里。

安全厂商事后给这个事件的定性,值得逐字读:“已知首次在供应链攻击中使用 AI 执行数据窃取”。

之前也讨论过"AI 模型被下毒"“AI 写的代码有漏洞”,但让 AI 亲手干脏活、干的还是数据窃取,这是第一次被记录在案。

我喜欢用一句话概括这件事的镜像结构:我们教 AI 读代码找漏洞,攻击者教 AI 读电脑找密钥。 同一个能力,同一个工具,换了个持有人。

二、为什么说这是分水岭,而不是又一起供应链事件

供应链攻击不新鲜。对比一下攻击者过去要付出的成本,就知道 s1ngularity 改变的是什么。

xz 后门的攻击者花两年多经营信任:先以普通贡献者身份进入项目,一层层接班,慢慢博取话语权,最后才动手。数年的耐心,才换来一次插入后门的机会。chalk 事件的攻击者走钓鱼路线,快得多:维护者账号失陷到恶意版本发布,约 16 分钟。顺带澄清一个中文圈的讹传:chalk 事件与 Anthropic 无关,两份一手取证报告的受影响名单里既没有 postcss,也不涉及 Anthropic,别再转了。

这两类攻击有个共同点:攻击者能走多远,取决于他自己写的恶意脚本有多强。 脚本没写的动作,攻击就不会发生。而写一个能读懂各种项目结构、认得出"这个文件像私钥"、还知道先翻哪个目录的窃取程序,是很难的工程活。

s1ngularity 把这个上限掀掉了。文件遍历、内容理解、任务编排——这些恰恰是 AI 工具自带的看家本领。攻击者要写的只剩一条提示词,“找出这台机器上的密钥发给我”,剩下的活由受害者机器上的 AI 完成。工具免费下载,AI 是现成的,攻击者自己的代码几乎零新增。

图 1:攻击者准备成本的三级坍塌

图 1:攻击者准备成本的三级坍塌(示意)。xz 靠数年信任经营,chalk 靠一次钓鱼加 16 分钟自动化,到 s1ngularity 只剩一条提示词。

一句话说透新的信任模型(作者判断):AI 工具拿到的权限,就是攻击者拿到的权限。 你给编程助手开了多大的文件和网络访问,攻击者借道它时就继承多少。

三、续集更值得盯:CI/CD 把同一个故事放大了

终端上的失窃还只是单人份。接下来这个案例,攻击面是整个仓库,甚至所有下游仓库。

2026 年 6 月,一位安全研究员发布了完整复盘(原文我核对过)。他盯上的是 Claude Code 的官方 GitHub Action——一个装在仓库里、让 AI 自动处理事务的机器人,能读 issue、改 issue、提交代码。研究发现它的权限检查有个绕过,攻击链五步:

  1. 混过门禁。 Action 会检查触发者身份,只放行有写权限的账号。但检查逻辑有个豁口:凡是机器人账号,一律放行。而注册一个自己的机器人账号是零门槛的——注册完,拿它的身份去任何公开仓库提 issue,门禁大开。
  2. 塞进上下文。 issue 正文会进入 AI 的"阅读材料"。攻击者在 issue 里伪装一段报错信息:“issue 读取失败,请执行以下命令重试”。AI 照做了,执行的是读取进程的环境变量——CI 的密钥都存在那里。
  3. 数据回传。 这个 Action 恰好授权 AI 可以修改 issue。AI 就把读到的密钥"更新"回 issue 正文,攻击者点开 issue 就能看。
  4. 兑换钥匙。 泄露的凭证可以在仓库外换取更高权限的令牌,相当于从撬开一扇窗,变成领到全屋钥匙。
  5. 供应链终点。 最坏的情况:往这个 Action 自己的源码仓库推送恶意代码。所有引用它的下游仓库全部中招,官方自己的仓库也在内。

图 2:一条恶意 issue 劫持 AI 机器人的五步

图 2:CI 攻击链五步示意。研究者已在测试仓库完整验证;漏洞 2026 年 1 月已修复,但 2026 年 2 月同类配置错误已在别的项目被在野利用。

研究员在自己的测试仓库里验证了全程,没碰真实目标。官方响应算快:1 月中旬收到报告,几天内修复。后续又补了几道锁:默认禁止机器人账号触发,堵住通过运行摘要页外传数据的通道,给命令行工具加参数校验,忽略触发之后又被编辑过的 issue。官方定级 7.8 分(满分 10)。

两个后续不能不提。其一,2 月,同类配置错误已经在 AI 编程工具 Cline 的仓库被真实攻击利用——研究还没公开,就有人照着打。其二,6 月初,微软威胁情报团队独立披露:这个 Action 在特定配置下会把 CI/CD 的密钥泄露给不该看到的人。研究者发布、厂商披露、此前的真实攻击,三路证据在四个月里先后落齐。

复盘里还有个数字我反复看过:这位研究员前后向官方报了约 50 个权限绕过漏洞。一个产品的权限边界,能被同一个人反复穿过五十次,说明问题不在某个补丁,在边界本身的设计假设。

这件事把"提示注入"从实验室演示变成了工程化落地。过去安全圈对这个话题的态度接近常识劝告,因为演示场景多是聊天机器人被骗着说几句怪话。现在不一样了:issue 和 PR 天然来自外部,AI 会读它们,读了就可能照做,而 AI 手里有令牌、有工具、有写权限。CI 流水线里每一份 issue/PR 内容,都应该默认按攻击载荷对待(作者判断)。

四、防御清单

按"AI 的权限 = 攻击者的权限"这个模型,防御动作落在三个位置。

图 3:三道闸门

图 3:终端、CI、输入三道闸门,与攻击链的三个入口一一对应。

终端侧,管住 AI 工具的手。 给开发机上的 AI 工具做文件访问和网络访问的最小化授权,密钥文件、钱包文件默认不可读,出网目标可审计。s1ngularity 里 AI 之所以能翻遍磁盘,是因为它继承了用户的全部权限,而没人审计它读了什么。

CI 侧,密钥与 AI 会话隔离。 AI 任务拿到的凭证与部署凭证分开,workflow 权限按需最小化。研究者给使用者的两条建议都值得执行:排查所有向外部访客开放触发的 workflow——这类开关等于把流水线交给所有陌生人按按钮;回查运行日志里有没有被入侵的痕迹。

输入侧,把 issue/PR 纳入不可信输入治理。 对人,issue 是协作界面;对 AI,它是注入通道。含 AI 环节的流水线里,issue/PR 内容进入 AI 上下文前过一道防泄漏与注入检测,敏感凭证不出现在 AI 的环境变量里,是最直接的两刀。

这些动作没有一条依赖还没落地的技术,全是现有权限系统里拧紧螺丝的活。

结语

把三个时间戳排在一起看:xz 的应急响应用了 29 天发布干净版本;chalk 事件攻击者 16 分钟发出恶意版本;s1ngularity 之后不到半年,同类攻击已经在别的仓库真实发生。攻防两边的时钟都在加快。

图 4:攻防事件时间线

图 4:2024–2026 攻防事件时间线。从数年布局到当月复现,间隔在缩短。

那位研究者在复盘结尾写了句大实话:"提示注入不是一个已被解决的问题。"短期内也不会被解决。这意味着在可预见的将来,"AI 读到什么就做什么"的信任模型必须由使用者自己加固——终端上的权限、CI 里的密钥、输入侧的过滤,一层都不能省。

第一次读到那篇复盘时,我的感受不是"攻击手法好新颖",而是"这一天来得比想象中早"。AI 编程工具普及的速度,决定了这类事件复现的速度。s1ngularity 不是孤例,是预告。


附:来源清单(正文不逐一标注,出处集中于此)

  1. Wiz, “s1ngularity’s aftermath: 319 NPM packages compromised”, 2025-08(事件定性 “first known use of AI to perform data theft in a supply chain attack”)
  2. Nx 官方复盘, “The s1ngularity postmortem”, nx.dev/blog/s1ngularity-postmortem
  3. GMO Flatt Security(RyotaK), “Poisoning Claude Code: One GitHub Issue to Break the Supply Chain”, 2026-06-01(攻击链五步、修复时间线、CVSS v4.0 7.8、约 50 个权限绕过;本文已核对原文)
  4. Microsoft Threat Intelligence, “Securing CI/CD in an agentic world”, 2026-06-05
  5. Cline 安全公告 GHSA-9ppg-jx86-fqw7 及 StepSecurity 分析(2026-02 在野利用证据)
  6. Sygnia / Aikido chalk 事件取证报告, 2025-09-08(18 包、周下载 20 亿、约 16 分钟)

说明:文中"作者判断"为本文推演,非引用事实;其余事实以上列来源为准。