首页 科技快讯 赶紧检查!npm被投毒,可能已经在偷你的密钥!

赶紧检查!npm被投毒,可能已经在偷你的密钥!

来源:晰数塔互联网快讯 时间:2026年05月14日 20:24

(来源:石臻说AI)

石臻说AI

编辑:石臻

导读: 你用 npm 装过 TanStack 的包吗?如果在5月11日晚上装过——AWS密钥、GitHub Token、SSH私钥可能已经被偷走了。更恐怖的是:如果你发现中招想撤销 GitHub Token,黑客装了一个死亡开关,撤销那一刻就会触发 `rm -rf ~/`,直接删光你的主目录。

到底发生了什么

2026年5月11日北京时间凌晨3点20分,一场精心策划的供应链攻击悄悄启动。

攻击者发布了84个恶意版本,覆盖42个 @tanstack/* npm 包。只要你在那段时间跑过 npm install,你的机器就可能成了攻击者的数据金库。

被攻击的包全都是前端开发者熟悉的名字:@tanstack/react-router、@tanstack/query、@tanstack/history……

这不是小众工具。TanStack 系列每周下载量超过千万,用在全球无数公司的生产系统里。

三环连锁攻击,每一环都是精准设计

TanStack 官方复盘把这次攻击分析得非常透彻——这不是运气撞上去的漏洞,而是三个已知漏洞的环环相扣。

第一环:伪造身份混入代码

攻击者注册了一个 GitHub 账号 zblgg,从 TanStack/router fork 了一个仓库,然后向官方仓库发了一个 PR,标题叫"WIP: simplify history build"——看起来像个普通的代码优化。

关键在于这个 PR 里藏了一个 vite_setup.mjs 文件,里面是约 3 万行混淆过的 JS 代码。提交者身份写的是 claude ——不是 Anthropic 的 Claude,是伪造的身份信息。

第二环:毒化 GitHub Actions 缓存

TanStack 有一个 bundle-size.yml 工作流,它使用了 pull_request_target 触发器。这个触发器有一个危险特性:它会在 base 仓库的权限下运行来自 fork 的代码,并且能写入 base 仓库的 Actions 缓存。

攻击者的 PR 触发了这个工作流,执行了恶意的 vite_setup.mjs,这段代码把一个毒化的 pnpm 存储写入了缓存,缓存 key 精确匹配了发布工作流 release.yml 会用到的那个 key。

就像在面粉厂的原料仓里偷偷掺了砒霜,等着下游的面包厂用。

第三环:从内存里偷 OIDC Token

当 TanStack 开发者正常合并 PR 触发 release.yml 时,被毒化的缓存被恢复到 CI 运行环境里。恶意代码在这里做了一件教科书级别的操作:

通过 /proc/*/cmdline 找到 GitHub Actions Runner 进程,读取 /proc//maps 和 /proc//mem,直接从内存里提取 OIDC token。

然后用这个 token 直接向 npm registry 发包——完全绕过了正常的发布流程。

这个内存提取脚本,官方复盘里写道:"是来自 2025年3月 tj-actions/changed-files 事件的逐字照抄版本,连代码注释都没改。"

攻击者用的是完全公开的攻击手法。

你的机器上在跑什么

一旦有人在受感染的环境里跑了 npm install,router_init.js 就会在安装过程中自动执行。这个 2.3MB 的混淆脚本做了以下事情:

凭证收割:

AWS IMDS / Secrets Manager 凭证GCP 元数据服务 TokenKubernetes service account TokenVault Token~/.npmrc 里的 npm 发布密钥GitHub Token(环境变量、gh CLI、.git-credentials)SSH 私钥

数据外泄: 不走普通 HTTP,走的是 Session/Oxen 加密通讯网络(filev2.getsession.org、seed{1,2,3}.getsession.org),端对端加密,没有中央服务器可以封锁。

蠕虫传播: 枚举受害者在 npm 上维护的所有包,自动把恶意代码注入进去再发布。这就是为什么这次事件从 TanStack 蔓延到了 OpenSearch Python SDK(130万周下载)、mistralai Python 包、guardrails-ai,以及更多。

死亡开关(最危险的部分):

安全研究员 carlini 在 GitHub Issue 里发现了这个细节:脚本在 Linux 系统里会安装一个 systemd 用户服务,在 macOS 里会安装一个 LaunchAgent,每60秒检查一次被盗的 GitHub Token 是否还有效。

一旦你撤销 Token,它立刻执行 rm -rf ~/。

如何判断自己是否中招

第一步:检查是否安装了受感染版本

社区开发者 Rohit Tyagi 做了一个快速扫描工具:

npx supply-chain-attack

它会检查本机是否安装了已知受感染的包版本、npm 缓存里是否有痕迹、全局安装状态、以及可疑文件。

第二步:手动检查 package.json

在任何 @tanstack/* 包的 package.json 里,如果看到:

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

这就是感染标志。可以用这个命令验证:

npm pack @tanstack/@tar -xzf *.tgzcat package/package.json | grep -A3 optionalDependenciesls -la package/router_init.js

(npm pack 不会执行安装脚本,是安全操作。)

第三步:检查是否安装了持久化后门

如果你是 Linux 用户,检查:

ls ~/.config/systemd/user/ | grep gh-token-monitorsystemctl --user status gh-token-monitor

macOS 用户检查:

ls ~/Library/LaunchAgents/ | grep com.user.gh-token-monitor

受影响的时间窗口: 2026年5月11日 19:20 到 19:30 UTC(北京时间 5月12日凌晨 3:20–3:30),在这段时间内运行过任何 TanStack 包的 npm install 才可能中招。

中招了怎么办

⚠️ 先处理持久化后门,再撤销 Token

顺序非常重要。如果先撤销 GitHub Token,会触发 rm -rf ~/。

1

先找到并停止 gh-token-monitor 服务(见上方命令)

2

删除相关服务文件

3

然后再轮换所有凭证:

  - GitHub Token   - AWS / GCP / Kubernetes 凭证   - npm Token(

~/.npmrc

)   - SSH 私钥4

审计过去几小时的云服务操作日志,看是否有异常调用

5

用干净的 lockfile 重新安装依赖

如果你是 npm 包维护者:

检查你的包是否也被蠕虫感染——如果你的机器中了招,攻击者可能已经用你的凭证发布了新版本。

这次事件说明了什么

TanStack 官方复盘里有一句话挺扎心的:

"检测是靠外部的。我们是从第三方那里知道自己被攻击的。"

一个每周数千万下载量的顶级开源项目,被黑了20分钟才靠外部研究员发现。

这次攻击用的每一种技术都是公开资料:pull_request_target 滥用问题2023年就被研究透了,cache poisoning 攻击 Adnan Khan 2024年写了完整分析,内存提取 OIDC token 的 Python 脚本是 2025年3月事件里的原版照抄。

攻击者没有发明任何新东西,只是把三个已知漏洞拼在了一起。

对开发者来说,现实就是这样:npm install 这个每天跑无数次的命令,背后其实有相当大的供应链攻击面。社区里流传的建议是用 pnpm 并开启 minimumReleaseAge: 7d——让新发布的包等7天再安装,给安全社区足够的时间发现问题。

当然,这次攻击从发布到被发现只用了20分钟,7天根本不够。

更根本的防护还是落在两点:定期审计依赖、监控自己的发布管道。

参考链接

TanStack 官方事后复盘:https://tanstack.com/blog/npm-supply-chain-compromise-postmortemGitHub 安全跟踪 Issue:https://github.com/TanStack/router/issues/7383Socket Security 攻击追踪:https://socket.dev/supply-chain-attacks/mini-shai-huludStepSecurity 技术分析:https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem

相关推荐

赶紧检查!npm被投毒,可能已经在偷你的密钥!
速查你的支付宝,赶紧解除,有人被“偷”不少钱
清单之惑:npm供应链面临的新威胁
「Anchore」获 2000 万美元 A 轮融资,为客户提供量身定制的容器合规性检查方案
刚刚,GitHub宣布正式收购npm
被投毒的游族老板,是个什么样的人?
网购狗粮疑被投毒?涉事商家称是谣言
让科大讯飞一天蒸发120亿的“数据投毒”是啥?
快自查!!67款APP违法收集个人信息被通报!快看看你的手机有没有这些"偷窥狂"
GitHub宣布收购npm,微软或成最大赢家,开源界野蛮竞争影响1200万开发者

网址: 赶紧检查!npm被投毒,可能已经在偷你的密钥! http://www.xishuta.cn/newsview149580.html

所属分类:行业热点

推荐科技快讯