文章总结: 2026年5月11日TanStackJavaScript开源库遭遇供应链投毒攻击,攻击者通过GitHubActions漏洞向42个核心包注入84个恶意版本。恶意脚本router_init.js会窃取CI/CD凭证、OIDC令牌与云服务密钥,并具备蠕虫式自我传播能力。文档提供了受影响版本清单、文件哈希值、系统排查脚本及凭证轮换等应急处置方案。 综合评分: 87 文章分类: 供应链安全,漏洞预警,应急响应,恶意软件,安全工具
近百个恶意版本!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遭遇自动化投毒(含排查脚本)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论