TanStack 又被攻击了

TL;DR · AI 摘要
攻击者通过伪造 PR 提交恶意代码,污染 pnpm 缓存并在数分钟内发布 84 个恶意 npm 版本,影响 42 个包。
核心要点
- 攻击者以 zblgg 名义提交 PR 7378,成功绕过审查
- CI 中恶意代码窃取 OIDC token 并写入 pnpm 缓存
- 84 个恶意版本于 2026 年 5 月 11 日 UTC 19:20-19:26 内自动发布
结构提纲
按章节快速跳转。
2026 年 5 月 11 日,攻击者通过伪造 PR 向 TanStack/router 仓库提交恶意代码,引发大规模 npm 供应链投毒。
vite_setup.mjs 在 CI 中提取 runner 内存中的 OIDC token 并写入 pnpm 缓存,实现持久化污染。
后续主分支构建从被污染的 pnpm 缓存拉取依赖,生成带毒包并使用窃取的 token 自动签名发布至 npm。
短短几分钟内共发布 84 个恶意版本,涉及 42 个 @tanstack/* 包,影响广泛且传播迅速。
官方已将受影响包置为废弃状态,并要求所有在 2026 年 5 月 11 日安装过该版本的用户轮换全部敏感凭证。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- TanStack 供应链攻击事件
- 攻击手法
- 伪造 PR(zblgg)
- 利用 CI 执行恶意脚本
- 内存提取 OIDC token
- 污染机制
- 写入 pnpm-store 缓存
- 持久化依赖污染
- 自动化发布
- 主分支构建拉取污染依赖
- 使用窃取 token 自动签名
- 发布 84 个恶意版本
- 影响与响应
- 42 个包,84 版本受影响
- 官方紧急弃用并发布通告
- 用户需轮换全部敏感凭证
金句 / Highlights
值得收藏与分享的关键句。
攻击者在 CI 环境中窃取 OIDC token 并写入 pnpm-store 缓存,实现持久性供应链污染。
84 个恶意版本在不到 10 分钟内被自动构建、签名并发布至 npm,攻击效率极高。
任何在 2026 年 5 月 11 日安装过受影响版本的用户必须立即轮换 AWS、GCP、Kubernetes、GitHub、npm、SSH 等所有凭证。
https://t.co/dPqNAkM1Ws 感觉现在这安全事件就没停过,Next 前几天也经常被搞。
攻击者发布了 84 malicious versions, 具体方式挺有趣的,让 AI 总结下:
1 攻击者以zblgg名义提交了一个看似正常的 PR 7378到 TanStack/router 仓库。 2 Github 在 PR 上运行 CI 3 PR" / X
Viking on X: "TanStack 又被攻击了 https://t.co/dPqNAkM1Ws 感觉现在这安全事件就没停过,Next 前几天也经常被搞。 攻击者发布了 84 malicious versions, 具体方式挺有趣的,让 AI 总结下: 1 攻击者以zblgg名义提交了一个看似正常的 PR 7378到 TanStack/router 仓库。 2 Github 在 PR 上运行 CI 3 PR" / X
Don’t miss what’s happening

Show translation
TanStack 又被攻击了 https://tanstack.com/blog/npm-suppl y-chain-compromise-postmortem… 感觉现在这安全事件就没停过,Next 前几天也经常被搞。 攻击者发布了 84 malicious versions, 具体方式挺有趣的,让 AI 总结下: 1 攻击者以zblgg名义提交了一个看似正常的 PR 7378到 TanStack/router 仓库。 2 Github 在 PR 上运行 CI 3 PR 中的恶意代码(vite_setup.mjs)在 CI 运行时窃取 GitHub Actions 的缓存写权限和 OIDC token(通过 runner 内存提取),然后将恶意 payload 写入共享的 pnpm-store 缓存。PR 随后都无所谓了,投毒缓存仍保留。 4 后续主分支的 release workflow 从被污染的缓存中拉取依赖,构建出带毒的包,并使用窃取的 OIDC token 自动签名、发布到 npm。 5 短短几分钟内发布了84 个恶意版本。 官方建议:任何在 2026-05-11 当天安装过受影响版本的用户,必须轮换各种凭证(AWS、GCP、Kubernetes、GitHub、npm、SSH 等)
Quote

TANSTACK
@tan_stack
·
11h
SECURITY ADVISORY — TanStack npm packages A supply-chain compromise affecting 42 @tanstack/* packages (84 versions total) was published to npm earlier today at approximately 19:20 and 19:26 UTC. Two malicious versions per package. Status: ACTIVE — packages are deprecated, npm
·
9
2