最近,整个开源开发圈再次爆出一起极其严重的「供应链攻击」事件。这次被攻击的不再是什么冷门小工具,而是大量开发者每天都在使用的热门 AI 与前端生态项目,包括:
- TanStack
- Mistral AI
- Guardrails AI
- UiPath
- OpenSearch
攻击者通过一种名为 Mini Shai-Hulud 的自传播蠕虫,大规模污染 npm 与 PyPI 软件包,甚至连 GitHub Actions、OIDC 身份认证、SLSA 安全签名等现代 CI/CD 安全机制都被绕过。

更离谱的是:
这些恶意包,甚至带着“官方合法签名”。
这意味着很多自动化安全检测系统,都会误以为它们是“可信”的。
根本原因
三个漏洞环环相扣,每个漏洞都是攻击的必要条件;单独一个漏洞都不足以发动攻击。
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 发布流程。
简单来说:
攻击者不是“伪装官方”。
而是:
直接利用官方服务器帮自己发布恶意代码。

攻击链:这次的手法非常高级
这次攻击最危险的地方,在于它并不是简单的 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 官方身份,生成可信发布流程。
为什么这次特别危险?

因为它已经不是传统意义上的“恶意 npm 包”了。
过去很多攻击:
- 是维护者账号被盗
- 或 npm Token 泄露
- 或上传山寨包
但这次:
官方 CI/CD 系统本身被利用。
结果就是:
恶意包拥有合法安全签名
根据安全研究人员分析:
这可能是首个:
“带合法 SLSA Level 3 Attestation 的 npm 蠕虫”
简单理解:
连供应链安全签名都是真的。
很多企业内部的自动化审计系统:
- 会信任这些签名
- 会自动放行
- 不会触发告警
这也是这次事件最恐怖的地方。
已波及大量 AI 与开发生态

目前已确认受影响的项目包括:
- 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 行业最大的安全问题之一。




