资讯

从 Vercel 到 Tanstack,前端仓库再度遭遇供应链攻击。前端安全不存在了?

对 TanStack 因恶意 PR 利用 GitHub Actions 缓存投毒并诱发 npm 供应链攻击的事件进行深度复盘与影响范围梳理。

Enivia
2 分钟阅读

好像自从 AI Coding 能力被大范围普及之后,攻击事件在前端生态中简直是超高频出现,前端安全方面的问题几乎就没停过。

先是有 React Server Components 安全漏洞,又有 Vercel 遭遇入侵。

最近 TanStack 也遭到了攻击。

事件经过

2026 年 5 月 11 日,UTC 时间 19 点 20 分到 19 点 26 分之间,有 84 个恶意 npm 包被发布到了 @tanstack 的命名空间下。

These 包并非由盗取凭证的攻击者发布,而是直接通过 TanStack 的合法发布流程发布的

恶意版本在几小时内就传播到了其他几十个维护者那里。

仅 @tanstack/react-router 这一个包,每周的下载量就超过 1270 万。

简单回顾这次攻击

5 月 10 日,攻击者以账户 zblgg fork 了 TanStack/router 仓库,并故意更名为 zblgg/configuration 避免其出现在 fork 列表中。

5 月 11 日,攻击者向 TanStack/router 的 main 分支提交了一个看似正常的 PR #7378,标题为 “WIP:简化历史构建”。

这个 PR 触发了 TanStack 工作流中使用的 pull_request_target 触发器,并执行了对对应 CI 流程。

PR 中包含了恶意代码,它会在 CI 运行时窃取 GitHub Actions 写缓存的权限,以及 OIDC 令牌,然后将恶意 payload 写入仓库共享的 pnpm-store 缓存。

然后,这个 PR 之后会不会被合并就无所谓了,因为 pnpm 缓存中已经被成功投毒。

后续其它分支再运行 release 等流程,就会从被污染的缓存中拉取依赖,构建出有问题的包,并自动使用窃取的 OIDC 令牌直接发布到 npm。

影响范围

被攻击版本
@tanstack/react-router1.169.5, 1.169.8
@tanstack/vue-router1.169.5, 1.169.8
@tanstack/solid-router1.169.5, 1.169.8
@tanstack/router-core1.169.5, 1.169.8
@tanstack/react-start1.167.68, 1.167.71
@tanstack/router-plugin1.167.38, 1.167.41

其它受影响仓库:

namespace被攻击的包本
@mistralai@mistralai/mistralai 2.2.2–2.2.4; -azure and -gcp variants
@uipath跨 UiPath 命名空间的 40+ 包
@draftlab / @draftauth@draftlab/auth, @draftlab/db, @draftauth/client, @draftlab/auth, @draftlab/db, @draftauth/client
misc.safe-action, cmux-agent-mcp, nextmove-mcp, ts-dna, cross-stitch
Enivia's Blog
AI 资讯· 热门文章 · Agent 工具 · Vibe Coding · 技术热点 · 效率工具
© 2026 Enivia's Blog. Built with curiosity and code.