计算机安全 CrowdStrike、Shai-Hulud 以及即将到期的 CISA 2015:美国为何无法对软件供应链攻击保持警惕

CrowdStrike、Shai-Hulud 以及即将到期的 CISA 2015:美国为何无法对软件供应链攻击保持警惕

脆弱的链条遇上脆弱的法律

2025 年的安全新闻头条主要集中在勒索软件团伙、人工智能驱动的网络威胁以及地缘政治黑客活动。但开源世界的供应链中,尤其是在 npm JavaScript 生态系统中,正在发生一种更安静、更隐蔽的趋势。

最新一波攻击以“Shai-Hulud”为名,已危及数十个 npm 软件包,其中包括在CrowdStrike 命名空间下发布的软件包。仅凭这一点就足以敲响警钟:当攻击者能够毒害与全球最知名的网络安全供应商之一相关的软件包时,对软件生态系统的信任就岌岌可危了。

而这一切正值一个关键的政策背景: 《2015年网络安全信息共享法案》(CISA 2015)即将于9月底到期。CISA 2015为私营部门和联邦机构之间自愿且受责任保护的入侵指标(IOC)共享奠定了基础。如果CISA 2015失效,美国将束手无策地应对类似“夏伊胡鲁德”(Shai-Hulud)式的攻击。

Shai-Hulud 活动:供应链攻击剖析

1. 初始入侵

攻击者入侵了链接到合法软件包的 npm 账户(其中一些属于个人维护者,另一些属于组织命名空间)。通过修改package.json文件并嵌入名为bundle.js的恶意文件,他们成功入侵了原本值得信赖的项目。

2. Payload:Bundle.js植入程序

该植入程序并非狡猾的“脚本小子”恶意软件。它执行一系列精确的自动化任务:

  • 令牌收集:在主机环境中搜索诸如NPM_TOKENGITHUB_TOKENAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY之类的秘密。
  • 工具部署:下载并运行TruffleHog ,这是一款开源实用程序,通常用于扫描存储库中泄露的机密信息。本例中,它被重新用于扫描本地系统。
  • 验证:通过执行轻量级 API 请求来验证收集的令牌,以确认哪些凭证是有效的。
  • 通过 CI/CD 实现持久化:创建或修改.github/workflows目录,以插入恶意的 GitHub Actions 工作流——通常名为shai-hulud.yamlshai-hulud-workflow.yml 。这些工作流可以在未来的 CI/CD 运行期间重新泄露机密信息。
  • 泄露:将被盗的凭证和结果发送到硬编码的 webhook 端点,通常通过一次性基础设施进行控制。
  • 3.传播

    由于 npm 软件包之间紧密关联,即使是单一的入侵也可能造成连锁反应。恶意版本被上传到 npm 仓库,并自动分发给更新或安装依赖项的开发者。这意味着数千个下游项目可能无意中拉取了中毒代码。

    9月初发生的tinycolor事件就凸显了这一风险。该库( @ctrl/tinycolor )每周下载量达数百万次。当它被Shai-Hulud载荷入侵后,超过40个下游软件包被感染。

    4. CrowdStrike 命名空间泄露

    最令人震惊的发现是,在@crowdstrike npm 命名空间下发布的软件包也遭到了攻击。Socket.dev 发现了数十个中毒版本,其中一些版本在2025 年 9 月 14 日至 16 日期间迅速发布。

    虽然没有证据表明 CrowdStrike 自己的内部基础设施遭到破坏,但其声誉和系统性影响却十分严重:

    • 开发人员期望像@crowdstrike这样的供应商命名空间是牢固的。
    • 有毒的命名空间不仅会破坏对供应商的信任,还会破坏对 npm 本身的信任。
    • 对手清楚地了解这种妥协的象征意义和实际力量。

    技术指标和可观察指标

    为了进一步证实这一点,通过对 Shai-Hulud 包裹的分析,得出了以下技术标记:

    • 恶意文件bundle.jsindex.js (修改为调用 bundle)、在.github/workflows/中插入工作流文件。
    • 工作流有效负载:通常包含卷曲机密和向攻击者 webhook 发送 POST 的步骤。
    • 哈希重用:多个包中bundle.js文件的 SHA-256 哈希值相同,确认了活动协调。
    • 渗透端点:托管在商品平台上的 Webhook(例如,Discord、Slack 传入 webhook 或临时云服务)。
    • 发布模式:几分钟内发布数十个软件包版本,与自动化工具一致,而不是手动发布。
    • 这些指标并非只是法医琐事。它们凸显了对手的自动化和纪律性——这是一场旨在扩大规模而非进行实验的行动。

      为什么供应链攻击如此危险

      供应链攻击绕过了外围边界。它们并非突破防火墙,而是搭便车进入企业日常依赖的可信软件更新和库。

      • 影响范围:破坏单个 npm 包(如tinycolor或组织命名空间(如@crowdstrike可能会暴露数千个下游系统。
      • 信任劫持:开发人员天生信任包管理器;中毒的更新会自动安装。
      • 隐秘性和持久性:通过嵌入恶意 GitHub Actions 工作流,攻击者即使在删除原始恶意版本后也能确保反复渗透。

      这就是为什么像 Shai-Hulud 这样的攻击具有战略意义:它们将现代软件开发的机制(包管理器、CI/CD 管道、开源依赖项)转变为攻击面。

      CISA 2015 到期为何会带来更大风险

      CISA 2015 的作用

      2015 年《网络安全信息共享法案》为私营实体与国土安全部(以及后来的 CISA)共享威胁指标建立了框架,且无需承担任何责任。该法案的目标如下:

      • 鼓励跨部门快速共享IOC。
      • 为诚信披露指标的企业提供责任保障
      • 标准化技术格式(STIX/TAXII)以供机器可读交换。

      到期风险

      如果该法律于九月底失效:

      1. 减少共享:受到 Shai-Hulud 影响的维护者、注册机构和供应商可能会因为担心诉讼或监管反弹而犹豫是否要分享详细信息。
      2. 响应分散:如果没有联邦政府的协调,有关正在发生的攻击的情报将仍然分散在各个供应商或研究人员手中。
      3. 缓解速度较慢:在供应链攻击中,时间至关重要。如果没有 CISA 的框架,发现和社区防御之间的延迟可能会非常严重。
      4. 信任的侵蚀:开源社区已经受到 CrowdStrike 命名空间泄露事件的震动,如果没有强有力的、协调一致的联邦和私人响应,他们可能更加不愿意信任中央注册中心。

      政策和行业建议

      1. 立即采取立法行动

      国会应在9月底前续签或延长《2015年网络攻击安全法案》(CISA 2015) 。否则,将向对手发出信号,表明美国在日益升级的网络风险面前束手无策。

      2.注册表强化

      npm、PyPI、RubyGems 和其他注册中心需要更强有力的保障措施:

      • 对出版商强制实施多因素身份验证
      • 自动检测异常发布激增的情况。
      • 已发布软件包的代码签名
      • 嵌入在 CI/CD 系统中的包来源检查

      3. 供应商命名空间保护

      像 CrowdStrike 这样的供应商应该考虑:

      • 公共软件包的私有镜像可保护企业免受篡改版本的侵害。
      • 持续监控命名空间劫持。
      • 公开披露每个版本的“已知良好”哈希值。

      4. 私营部门审计

      组织应该:

      • 将依赖项固定到固定版本。
      • 审核 CI/CD 工作流程是否存在未经授权的修改。
      • 如果凭证(npm 令牌、GitHub 令牌、云密钥)暴露,立即轮换。

      5. 联邦与私营部门合作

      即使 CISA 暂时失效,临时结构也必须填补空白:

      • CISA、Socket.dev、GitHub 和 npm 之间的联合公告。
      • 恶意哈希和端点的实时馈送。
      • 为开源维护者(通常是无偿志愿者)提供财务和技术支持。

      结论:弱点的碰撞

      Shai-Hulud 攻击活动证明,供应链攻击已不再是“边缘案例”,而是已成为一种标准的攻击手段。CrowdStrike命名空间下的软件包遭攻陷,凸显了生态系统中信任的脆弱性。

      而就在这种威胁不断升级之际,美国可能会让CISA 2015到期——从而拆除实现信息共享和快速反应的法律框架。

      教训是显而易见的:如果不进行立法更新和行业改革,美国就有可能进入迄今为止最危险的软件供应链泄露时代——对手会利用技术漏洞和政策真空。

      简而言之:脆弱的代码+脆弱的法律=国家风险。

      正在加载...