Shai-Hulud 2.0:解析2025年最激进的NPM供应链攻击“第二次降临”

本文深入分析了2025年11月发生的Shai-Hulud 2.0供应链攻击。攻击者通过npm包的preinstall脚本,在短短数小时内危害了数百个软件包和超过2.5万个GitHub仓库,大规模窃取云服务和开发者凭证,并利用Bun运行时进行规避。文章揭示了攻击原理、时间线、广泛影响,并给出了详细的应对与防护建议。

Shai-Hulud 2.0: Inside The Second Coming, the Most Aggressive NPM Supply Chain Attack of 2025

攻击者如何渗透npm生态系统,Check Point研究人员发现了什么,以及组织如何保护其开发流水线。

Shai-Hulud 2.0 活动(其运营者称之为“第二次降临”)是近年来观察到的最广泛、发展最迅速的npm供应链攻击之一。在2025年11月21日至23日期间,攻击者在短短几小时内就攻陷了数百个npm软件包和超过25,000个GitHub代码仓库。与安装后激活的传统恶意软件不同,该活动滥用了npm的preinstall生命周期脚本,使得恶意载荷能在安装完成前、甚至在安装失败时运行。

查看CISA公告 此处.

Check Point研究人员分析了攻击者创建的大量仓库,并确认该活动导致大规模的多云和开发者凭证暴露。在大约审查的20,000个仓库中,以下凭证被验证为已暴露:

  • 775个GitHub访问令牌
  • 373个AWS凭证
  • 300个GCP凭证
  • 115个Azure凭证

虽然许多条目是由于在相同的CI/CD环境中多次执行而产生的重复项,但仍然存在大量有效且敏感的密钥,这说明了此事件的广泛影响。

攻击活动时间线

  • 2025年9月:首次Shai-Hulud攻击出现,攻陷npm库并导致约5000万美元的加密货币被盗。
  • 2025年11月21日至23日:新一波攻击开始。攻击者引入了扩展的载荷、新的传播方法和更广泛的自动化。
  • 2025年11月24日:安全厂商开始发布警报,确认npm、CI和CD环境普遍受到危害。

Shai-Hulud攻击的工作原理

感染始于被劫持或恶意发布的受信任或仿冒npm软件包。一旦开发者安装受影响的软件包,恶意代码就会在preinstall步骤中执行,使攻击者能够早期访问开发或构建环境内部。

载荷包含两个主要组件:

  1. setup_bun.js,用于安装Bun运行时
  2. bun_environment.js,用于执行核心恶意逻辑

使用Bun而非Node.js是一种故意的规避技术。大多数安全工具和沙箱都优化为跟踪Node.js行为,这使得Bun成为在常见检测路径之外操作的一种有吸引力的方式。

一旦执行,恶意软件会枚举环境变量、SSH密钥、GitHub令牌、npm令牌、CI/CD变量以及跨AWS、Azure和GCP的云凭证。这些秘密被收集到结构化的JSON文件中,例如cloud.jsonenvironment.jsonactionsSecrets.json

攻击者不与外部命令和控制服务器通信,而是将被盗数据外泄到GitHub。他们创建标记为Sha1-Hulud: The Second Coming的公共仓库,并将窃取的秘密直接上传到其中。这种技术将恶意活动混入合法的GitHub API流量中,使得识别变得异常困难。

随后,恶意软件建立持久性。它将受感染系统注册为自托管的GitHub运行器,使攻击者能够远程执行任意工作流。此外,恶意工作流文件可以被插入受害者仓库中以维持长期访问,即使之后移除了受感染的软件包。该恶意软件还包含一个破坏性的故障安全机制,当检测到被遏制或分析时,能够擦除本地文件。

传播是部分自动化的。窃取的凭证被用来发布新的恶意npm软件包或创建新的GitHub仓库,从而在JavaScript生态系统中产生类似蠕虫的扩散。

影响

暴露的规模是巨大的。该活动导致:

  • 621个受感染的npm软件包
  • 25,000个被攻陷的GitHub仓库
  • 487个受影响的GitHub组织
  • 14,206个被泄露的秘密,其中2,485个仍然有效

暴露的数据类型包括GitHub和npm令牌、SSH密钥、云提供商凭证以及CI/CD秘密。受影响的生态系统涵盖加密相关库、工作流自动化工具和一系列开发平台。

该活动展示了依赖项级别的危害如何轻易升级为完全的多云访问、长期的开发者身份暴露以及CI/CD工作流的广泛渗透。

建议步骤

使用npm的组织应假设可能已暴露,并立即采取行动:

  • 审计依赖清单和锁文件
  • 移除受感染的软件包,并从可信来源重新安装
  • 清除npm缓存
  • 轮换在开发和CI/CD环境中使用的所有秘密
  • 检查GitHub运行器,删除任何未经授权或未知的条目
  • 在存在的情况下移除恶意工作流文件

预防措施

  • 在所有GitHub和npm账户上强制执行多因素认证
  • 监控GitHub组织内创建的意外仓库
  • 应用基于SBOM的扫描和完整性检查
  • 加强CI/CD隔离和秘密处理策略
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计