圈小蛙

npm爆发大规模供应链攻击:TanStack生态遭投毒,攻击者植入“自毁型”蠕虫

这次攻击发生在 UTC 时间 2026 年 5 月 11 日 19:20 至 19:26 之间。攻击者并没有直接盗取 TanStack 团队成员的 npm 账号,而是通过一套精密的“组合拳”绕过了安全防线。

根据 TanStack 官方发布的事故复盘报告,攻击者利用了 GitHub Actions 中 pull_request_target 工作流的信任漏洞。通过向 TanStack/router 提交一个看似无害的 PR,攻击者成功地将恶意代码注入到了 GitHub Actions 的缓存(Cache)中。

当维护者 Manuel 在 19:15 合并了一个正常的 CSS 修复补丁时,自动化发布流程启动并读取了被污染的缓存。恶意脚本在构建环境中通过提取内存中的 OIDC 令牌,直接获得了向 npm 官方仓库发布版本的权限,从而在短短 6 分钟内发布了 84 个包含毒素的受影响版本。

核心杀伤力:窃取、传播与“同归于尽”

安全专家及 TanStack 团队在调查中确认,受影响的包被植入了一个约 2.3 MB 的混淆脚本 router_init.js。其行为具有极强的破坏性:

1. 全方位凭证窃取

一旦开发者或 CI 环境运行了 npm install,恶意脚本会立即扫描环境,收集包括 AWS/GCP 凭证、Kubernetes 令牌、SSH 私钥、GitHub 访问令牌以及包含 npm 认证信息的 ~/.npmrc 文件。

2. 蠕虫式自我传播

这是一种典型的“以战养战”策略。脚本会利用窃取到的权限,自动在 npm 上搜索受害者拥有维护权限的其他项目,并将恶意代码注入后重新发布。这意味着感染会像病毒一样在开发者社区中链式传播。

3. 报复性自毁机制

这是本次攻击中最具毒辣色彩的技术细节。攻击者在 Linux 和 macOS 系统中安装了一个持久化守护进程。该进程会持续监控已窃取 GitHub 令牌的有效性。一旦开发者发现泄露并撤销了令牌,该脚本将视为“被发现”的信号,随即触发 rm -rf ~/ 命令,强制清空用户的家目录作为报复。

应急响应与防护建议

TanStack 创始人 Tanner Linsley 及其团队在收到来自 StepSecurity 的安全研究员 ashishkurmi 的预警后,在 20 分钟内迅速做出了响应。目前,所有受影响的版本均已在 npm 仓库中被标记为弃用(Deprecated)。

在此,圈小蛙提醒广大开发者,如果你在 2026 年 5 月 11 日左右安装或更新过 @tanstack/* 系列包(特别是 Router 和 History 相关包),请务必执行以下操作:

这次事件再次给开源社区敲响了警钟:即使是拥有严密工作流的大型项目,也可能在 GitHub Actions 的细微配置偏差上翻车。


本报道由 圈小蛙(qxwa.com) 科技资讯站特约撰稿。🐸️

Exit mobile version