Hacker News 中文摘要

RSS订阅

TanStack NPM软件包遭入侵 -- TanStack NPM Packages Compromised

文章摘要

多个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)。

  1. 恶意代码行为

    • 窃取敏感信息:包括AWS/GCP凭据、npmrc配置、GitHub令牌、SSH密钥等。
    • 通过加密通道(Session/Oxen网络)外传数据。
    • 自动扫描受害者维护的其他npm包并传播恶意代码。
  2. 持久化机制

    • 在Linux/macOS创建监控服务,若检测到令牌被撤销,会触发rm -rf ~/删除用户目录。

受影响版本
已确认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.jsonrouter_init.js文件确认是否受影响。
- 第三方机构Socket.dev已追踪到84个相关包及200+衍生感染包(完整列表见其官网)。

风险提示
- 直接撤销被盗令牌可能触发恶意脚本的"死锁开关",导致数据丢失。
- 用户应立即回退到已知安全版本,并检查系统是否存在持久化后门。


(注:省略了GitHub界面导航、用户互动表情等非核心内容,保留技术细节和响应行动关键信息。)

评论总结

以下是评论内容的总结,平衡呈现不同观点并保留关键引用:

  1. 攻击事件描述与影响

    • 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)
  2. 对JS生态和npm的批评

    • 认为JS/TS生态过度依赖第三方库,npm成为供应链攻击的高发地(评论7)。
    • 批评微软对npm的管理优先级,称其为"包管理器的Windows"(评论4)。
    • 关键引用:
      • "JS和TS被认为是有害的...总是通过npm引入攻击"(评论7)
      • "NPM是当前包管理器的Windows"(评论4)
  3. 防御建议

    • 推荐使用pnpm并关闭生命周期脚本(评论6、15)。
    • 建议项目隔离运行(如VM)并采用冷却期策略(评论16、17)。
    • 关键引用:
      • "每个人都应使用pnpm...后安装脚本是致命的"(评论10)
      • "在2026年默认启用依赖的生命周期脚本简直是渎职"(评论15)
  4. 事件响应与责任争议

    • 第三方能实时检测恶意包,但npm响应迟缓(评论13)。
    • GitHub被指责因分叉仓库的共享存储设计加剧风险(评论10)。
    • 关键引用:
      • "微软/GitHub/npm只能重复'安全是首要任务',但每周都在发生"(评论13)
      • "GitHub应承担大部分责任...分叉提交可通过共享存储访问"(评论10)
  5. 其他观点

    • 部分用户表示放弃JS生态(评论2),也有认为攻击影响有限(评论5)。
    • 对可信发布(Trusted Publishing)安全性的讨论(评论9)。
    • 关键引用:
      • "完全放弃JS生态的决定持续带来回报"(评论2)
      • "可信发布本身不足以安全地从CI发布"(评论9)

总结:事件暴露了npm生态的系统性安全风险,核心争议集中在供应链管理、微软责任和防御措施有效性上,同时攻击的恶意性(如"死锁开关"机制)引发广泛担忧。