AI 开发包大规模投毒:Mistral、TanStack、Guardrails AI 集体中招,npm 供应链正在失控?

最近,整个开源开发圈再次爆出一起极其严重的「供应链攻击」事件。这次被攻击的不再是什么冷门小工具,而是大量开发者每天都在使用的热门 AI 与前端生态项目,包括:

  • TanStack
  • Mistral AI
  • Guardrails AI
  • UiPath
  • OpenSearch

攻击者通过一种名为 Mini Shai-Hulud 的自传播蠕虫,大规模污染 npm 与 PyPI 软件包,甚至连 GitHub Actions、OIDC 身份认证、SLSA 安全签名等现代 CI/CD 安全机制都被绕过。

20260512143023 691472

更离谱的是:

这些恶意包,甚至带着“官方合法签名”。

这意味着很多自动化安全检测系统,都会误以为它们是“可信”的。

根本原因

三个漏洞环环相扣,每个漏洞都是攻击的必要条件;单独一个漏洞都不足以发动攻击。

1. bundle-size.yml中的pull_request_target “Pwn Request” 模式

bundle-size.yml为 fork PR运行了pull_request_target,并在该触发上下文中检出了 fork 的 PR 合并引用并运行了构建:

on:
  pull_request_target:
    paths: ['packages/**', 'benchmarks/**']

jobs:
  benchmark-pr:
    steps:
      - uses: actions/checkout@v6.0.2
        with:
          ref: refs/pull/${{ github.event.pull_request.number }}/merge # fork's merged code

      - uses: TanStack/config/.github/setup@main # transitively calls actions/cache@v5

      - run: pnpm nx run @benchmarks/bundle-size:build # executes fork-controlled code

 

这次到底发生了什么?

根据 TanStack 官方事后分析报告,攻击者在 2026 年 5 月 11 日,仅用了大约 6 分钟时间,就成功向 npm 发布了:

  • 42 个 TanStack 包
  • 共 84 个恶意版本

这些包并不是通过“盗取 npm Token”上传的。

而是攻击者直接劫持了官方 CI/CD 发布流程。

简单来说:

攻击者不是“伪装官方”。

而是:

直接利用官方服务器帮自己发布恶意代码。

20260512142816 954694

攻击链:这次的手法非常高级

这次攻击最危险的地方,在于它并不是简单的 npm 账号泄露。

而是结合了多个高级攻击技术:

1. GitHub Actions Cache Poisoning(缓存投毒)

攻击者利用 GitHub Actions fork 与主仓库之间的缓存共享机制,向 CI 环境注入恶意缓存。

随后正式发布流程读取了这些缓存。

恶意代码因此进入官方构建环境。

2. pull_request_target 漏洞链

攻击者利用 GitHub Actions 中臭名昭著的:

pull_request_target

安全设计缺陷。

这个问题业内甚至有个专门名字:

Pwn Request

它允许来自 Fork 的代码,在特定情况下获取高权限执行能力。

3. OIDC Token 内存窃取

更夸张的是:

攻击者甚至不是直接偷 Token 文件。

而是:

直接从 GitHub Runner 进程内存里提取 OIDC Token。

随后利用 GitHub 官方身份,生成可信发布流程。

为什么这次特别危险?

20260512143036 472285

因为它已经不是传统意义上的“恶意 npm 包”了。

过去很多攻击:

  • 是维护者账号被盗
  • 或 npm Token 泄露
  • 或上传山寨包

但这次:

官方 CI/CD 系统本身被利用。

结果就是:

恶意包拥有合法安全签名

根据安全研究人员分析:

这可能是首个:

“带合法 SLSA Level 3 Attestation 的 npm 蠕虫”

简单理解:

连供应链安全签名都是真的。

很多企业内部的自动化审计系统:

  • 会信任这些签名
  • 会自动放行
  • 不会触发告警

这也是这次事件最恐怖的地方。

已波及大量 AI 与开发生态

 

20260512142830 672373

目前已确认受影响的项目包括:

  • TanStack
  • Mistral AI
  • Guardrails AI
  • UiPath
  • OpenSearch
  • Squawk
  • 多个 PyPI AI 包

安全机构称:

目前已发现超过 170 个受污染的软件包,恶意版本数量超过 400 个。

Mini Shai-Hulud:正在变成“供应链蠕虫”

这次攻击真正可怕的地方:

是它具有“自传播能力”。

感染一个开发者后:

恶意代码会继续:

  • 搜索 CI/CD Token
  • 搜索 GitHub Secrets
  • 搜索 npm 发布权限
  • 自动感染更多项目

这已经越来越像:

“开源生态版勒索病毒”。

安全公司 StepSecurity 表示:

这次攻击与此前:

  • Bitwarden CLI 投毒
  • Axios 供应链攻击
  • Trivy 事件

存在明显关联。

npm / PyPI 生态,正在进入高危时代

过去很多开发者有一种错误认知:

“热门开源包应该最安全”

但现实可能恰恰相反。

因为:

热门包拥有:

  • 巨量下载量
  • 自动 CI/CD
  • 企业级信任
  • 深层依赖传播

一旦被污染:

影响范围会呈指数级扩散。

Axios 事件就是典型案例。

当时恶意版本仅上线数小时,就已经影响大量自动更新环境。

普通开发者现在应该怎么办?

如果你使用:

  • npm
  • pnpm
  • yarn
  • pip
  • poetry

建议立即开始:

1. 锁定依赖版本

不要无脑:

npm install xxx@latest

生产环境最好:

  • 固定版本
  • 使用 lockfile
  • 禁止自动升级

2. 检查最近安装记录

重点排查:

  • 最近 48 小时更新
  • AI 相关 SDK
  • TanStack 生态
  • 自动化 CI 工具

3. 审查 GitHub Actions 权限

尤其避免:

pull_request_target

同时:

  • 禁止 fork PR 获取敏感权限
  • 不共享 CI Cache
  • 限制 OIDC Token 生命周期

4. 不要盲目信任“官方签名”

这次事件已经证明:

即使:

  • 签名是真的
  • 来源是真的
  • 发布链是真的

也依然可能被投毒。

这件事真正暴露的问题

现代软件开发:

已经越来越依赖:

  • GitHub Actions
  • npm
  • PyPI
  • 自动化发布
  • 第三方依赖

但问题是:

整个生态默认建立在:

“所有人都不会作恶”

的基础之上。

而现实是:

一个热门包被攻陷。

就可能影响:

数百万开发者。

甚至整个 AI 行业。

写在最后

过去几年:

AI 大模型疯狂发展。

但很多人忽略了一件事:

真正决定 AI 安全性的,未必是模型本身。

而是:

模型背后的开发生态。

如今:

攻击者已经开始系统性瞄准:

  • AI SDK
  • Agent 框架
  • 自动化开发工具
  • CI/CD 流程
  • 开源依赖链

而这次 Mini Shai-Hulud 事件,可能只是开始。

未来几年:

“供应链投毒”

很可能会成为整个 AI 行业最大的安全问题之一。

×

感谢您的支持

alipay
支付宝
wechat
微信支付
bitcoin
Bitcoin
usdt
USDT
QR Code