近百个恶意版本!TanStack遭遇自动化投毒(含排查脚本)

admin 2026-05-14 14:03:16 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 2026年5月11日TanStackJavaScript开源库遭遇供应链投毒攻击,攻击者通过GitHubActions漏洞向42个核心包注入84个恶意版本。恶意脚本router_init.js会窃取CI/CD凭证、OIDC令牌与云服务密钥,并具备蠕虫式自我传播能力。文档提供了受影响版本清单、文件哈希值、系统排查脚本及凭证轮换等应急处置方案。 综合评分: 87 文章分类: 供应链安全,漏洞预警,应急响应,恶意软件,安全工具


cover_image

近百个恶意版本!TanStack遭遇自动化投毒(含排查脚本)

微步在线

2026年5月12日 12:36 北京

在小说阅读器读本章

去阅读

5月11日,微步情报局监测到全球广泛使用的JavaScript开源库TanStack遭遇供应链投毒。

攻击者通过伪装仓库中的孤立commit,利用GitHub Actions漏洞向42个@tanstack/*核心包精准注入了84个恶意版本,被篡改的组件普遍新增一个约 2.3 MB、经过重度混淆的router_init.js 文件,可窃取CI/CD凭证、OIDC令牌与云服务密钥,并借助窃取的凭证自动向npm发布更多受感染包以实现横向扩散。目前,感染活动仍在持续,恶意版本数量仍在上升,排查方式参见后文。

本次攻击特点如下:

  • 凭证窃取范围广: 恶意脚本会窃取包括 AWS/GCP 密钥、.npmrc 文件、GitHub 令牌(Actions环境变量/gh CLI)、SSH 私钥在内的大量凭证。
  • 自我传播能力强: 恶意代码具备蠕虫能力,会通过窃取的 OIDC 令牌自动向 NPM 发布受感染的新组件版本,横向传播。
  • 威胁开发者: 恶意脚本会篡受感染的开发者环境中的 VS Code 和 Claude Code配置,实现持久化。

时间线(UTC)

2026年5月10日 17:16 : 攻击者创建了 zblgg/configuration 仓库,伪装成配置仓库。

●2026年5月11日 15:46: 攻击者在其控制的仓库中创建了一个孤立的(orphaned)commit,内含恶意核心载荷tanstack_runner.js。

●2026年5月11日 19:20 – 19:26: 攻击者通过该 commit 向42个@tanstack/*包发布了84个恶意版本。

●2026年5月11日 19:46: 安全研究员ashishkurmi在内部监控中检测到攻击。

●2026年5月11日 20:01:stepsecurity向 TanStack 官方发出预警。

●后续: TanStack 官方立即响应,关闭发布管道,并与 NPM 官方合作移除了所有恶意版本。

影响范围

直接影响: 84个@tanstack/* 组件包被投毒。常见受影响包及版本如下:

●确认安全:@tanstack/query*、@tanstack/table*、@tanstack/form*等主流工具库不在本次影响范围内。

排查方案

1. 项目依赖排查

立即检查项目的package-lock.json或yarn.lock文件,包含上述任一恶意版本号的依赖,即可确认受影响。强烈建议运行以下命令精确检查,并核对文件的哈希值:

其已知的 SHA-256 哈希值为:

●router_init.js / router_runtime.js:ab4fcadaec49c03278063dd269ea5eef82d24f2124a8e15d7b90f2fa8601266c

2. 系统受感染检查

确认以下文件和持久化配置是否存在,这些是恶意代码的典型植入特征:

●Claude Code 配置目录:.claude/settings.json(包含恶意 hooks)、.claude/router_runtime.js

●VS Code 任务配置:.vscode/tasks.json(被篡改)

●环境变量: 检查进程环境变量中是否存在__DAEMONIZED标识,这是恶意代码用于防止重复执行的机制。

3. 命令检查

3.1 检查Git仓库异常提交

运行以下命令,检查仓库中是否有恶意提交:

git log –all–[email protected] –oneline

若发现可疑提交,请立即调查其内容。

3.2 恶意行为发现(Linux)

find ~ -path ‘*/.claude/setup.mjs’ -o -path ‘*/.vscode/setup.mjs’

find ~/.config -name ‘*gh-token-monitor*’

find ~/.local/bin -name ‘gh-token-monitor.sh’

find /tmp -name ‘tmp.ts018051808.lock’

ps aux | grep -E ‘tanstack_runner|router_runtime|gh-token-monitor|bun’

若发现可疑行为,请立即调查其内容。

3.3 npm脚本研判是否安装恶意库(全平台)

执行方式:node check-versions.js

check-versions.js的sha256:

99180aec0f99b2e0fe0753453e4d88f8f9ac86a411c45ed23bcaea6b0db541a6

可访问微步云沙箱S查询下载:https://s.threatbook.com/

临时处置建议

网络层面阻断:如无业务需求,阻止对*.getsession.org域名的出站访问。

隔离受影响机器:立即将受害机器与公司网络和互联网断开,防止更多凭证外泄。

轮换所有凭证:在一台未受感染的独立、安全机器上,轮换所有可能泄露的凭证。优先级如下:

●NPM 令牌: 攻击者会滥用 OIDC 信任机制进行发布。

●GitHub 个人访问令牌 (PATs)和 OIDC 信任配置。

●AWS、GCP等静态密钥和服务角色凭证。

●Vault 令牌、Kubernetes service account 令牌等。

彻底清除并重装环境:删除整个node_modules目录和package-lock.json/yarn.lock文件,然后重新执行npm install或yarn。

IOC

文件

router_init.js / router_runtime.js

●SHA256 ab4fcadaec49c03278063dd269ea5eef82d24f2124a8e15d7b90f2fa8601266c

●SHA1 12ed9a3c1f73617aefdb740480695c04405d7b4b

●MD5 833fd59ebe66a4449982c6d18db656b4

tanstack_runner.js / router_init.js

●SHA256 2ec78d556d696e208927cc503d48e4b5eb56b31abc2870c2ed2e98d6be27fc96

●SHA1 e7d582b98ca80690883175470e96f703ef6dc497

●MD5 b82e54923f7e440664d2d75bd31588ca

网络

hxxp://filev2[.]getsession[.]org/file/

以下不能封禁

hxxp://169[.]254[.]169[.]254/latest/api/token (AWS EC2 IMDSv2 token acquisition)

hxxp://169[.]254[.]170[.]2(AWS ECS 任务元数据端点凭据收获)

hxxps://api[.]GitHub[.]com/repos/ (GitHub REST API — secrets enmulation and repo manipulation)

hxxps://registry[.]NPMJS[.]org/-/npm/v1/tokens(NPM 令牌验证)

vault[.]svc[.]cluster[.]local:8200(集群内 HashiCorp Vault API 端点)

参考链接

https://socket.dev/blog/tanstack-npm-packages-compromised-mini-shai-hulud-supply-chain-attack


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:微步在线 《近百个恶意版本!TanStack遭遇自动化投毒(含排查脚本)》

评论:0   参与:  0