文章摘要
多个npm最新版本软件包遭到入侵,存在安全风险。该问题已在GitHub的TanStack/router项目中被报告,涉及软件供应链安全。
文章总结
以下是文章主要内容的精简中文陈述:
标题:多个npm最新版本遭恶意篡改
事件概述
2026年5月11日,TanStack/router项目的GitHub仓库发布紧急安全通告(Issue #7383),披露多个@tanstack/*系列npm包的最新版本被植入自传播恶意代码。攻击者通过篡改包的optionalDependencies字段,注入指向恶意GitHub仓库的依赖项,触发供应链攻击。
攻击技术细节
1. 恶意注入方式:
- 在package.json中添加伪造的optionalDependencies,指向攻击者控制的Git提交(如github:tanstack/router#79ac49eedf...)。
- 利用npm安装时的prepare生命周期脚本执行恶意代码(bun run tanstack_runner.js)。
恶意代码行为:
- 窃取敏感信息:包括AWS/GCP凭据、npmrc配置、GitHub令牌、SSH密钥等。
- 通过加密通道(Session/Oxen网络)外传数据。
- 自动扫描受害者维护的其他npm包并传播恶意代码。
持久化机制:
- 在Linux/macOS创建监控服务,若检测到令牌被撤销,会触发
rm -rf ~/删除用户目录。
- 在Linux/macOS创建监控服务,若检测到令牌被撤销,会触发
受影响版本
已确认14个@tanstack/*包的以下版本被篡改(每个包两个恶意版本,第二个标记为latest):
| 包名 | 恶意版本示例 |
|------|------------|
| @tanstack/react-router | 1.169.5 → 1.169.8 |
| @tanstack/router-core | 1.169.5 → 1.169.8 |
| ...(其他12个包,详见原文表格)
应对措施
- 项目团队已组织10余名维护者紧急处理,并禁用GitHub Actions的OIDC发布权限。
- 安全专家建议通过npm pack下载包后检查package.json和router_init.js文件确认是否受影响。
- 第三方机构Socket.dev已追踪到84个相关包及200+衍生感染包(完整列表见其官网)。
风险提示
- 直接撤销被盗令牌可能触发恶意脚本的"死锁开关",导致数据丢失。
- 用户应立即回退到已知安全版本,并检查系统是否存在持久化后门。
(注:省略了GitHub界面导航、用户互动表情等非核心内容,保留技术细节和响应行动关键信息。)
评论总结
以下是评论内容的总结,平衡呈现不同观点并保留关键引用:
攻击事件描述与影响
- Mini Shai-Hulud蠕虫通过劫持CI/CD管道窃取开发者密钥,已影响@tanstack等官方npm包(评论1)。
- 攻击具有报复性机制:若GitHub令牌被撤销,会触发
rm -rf ~删除用户目录(评论3、11)。 - 关键引用:
- "The payload installs a dead-man's switch... runs rm -rf ~"(评论3)
- "恶意提交中的脚本能利用工作流的OIDC令牌自行发布"(评论9)
对JS生态和npm的批评
- 认为JS/TS生态过度依赖第三方库,npm成为供应链攻击的高发地(评论7)。
- 批评微软对npm的管理优先级,称其为"包管理器的Windows"(评论4)。
- 关键引用:
- "JS和TS被认为是有害的...总是通过npm引入攻击"(评论7)
- "NPM是当前包管理器的Windows"(评论4)
防御建议
- 推荐使用pnpm并关闭生命周期脚本(评论6、15)。
- 建议项目隔离运行(如VM)并采用冷却期策略(评论16、17)。
- 关键引用:
- "每个人都应使用pnpm...后安装脚本是致命的"(评论10)
- "在2026年默认启用依赖的生命周期脚本简直是渎职"(评论15)
事件响应与责任争议
- 第三方能实时检测恶意包,但npm响应迟缓(评论13)。
- GitHub被指责因分叉仓库的共享存储设计加剧风险(评论10)。
- 关键引用:
- "微软/GitHub/npm只能重复'安全是首要任务',但每周都在发生"(评论13)
- "GitHub应承担大部分责任...分叉提交可通过共享存储访问"(评论10)
其他观点
- 部分用户表示放弃JS生态(评论2),也有认为攻击影响有限(评论5)。
- 对可信发布(Trusted Publishing)安全性的讨论(评论9)。
- 关键引用:
- "完全放弃JS生态的决定持续带来回报"(评论2)
- "可信发布本身不足以安全地从CI发布"(评论9)
总结:事件暴露了npm生态的系统性安全风险,核心争议集中在供应链管理、微软责任和防御措施有效性上,同时攻击的恶意性(如"死锁开关"机制)引发广泛担忧。