NPM供应链攻击深度解析:恶意软件传播与防御策略

本文详细分析了针对Node Package Manager的供应链攻击,攻击者通过钓鱼手段入侵维护者账户并注入恶意代码,影响全球数十亿次周下载量的JavaScript包,并揭示了自我复制的Shai-hulud蠕虫运作机制。

关键要点

  • 攻击者通过针对性钓鱼活动入侵Node Package Manager维护者账户,向广泛使用的JavaScript包注入恶意代码
  • 某些恶意包通过劫持Web API和操纵网络流量秘密转移加密货币资产
  • 攻击载荷之一Shai-hulud蠕虫通过受感染包传播,窃取云服务令牌,部署秘密扫描工具并扩散到其他账户
  • 根据趋势科技遥测数据,北美和欧洲组织受Cryptohijacker载荷影响最严重,目前尚未检测到Shai-Hulud蠕虫
  • Trend Vision One™可检测并阻止本文所述的入侵指标,为客户提供定制化威胁狩猎查询、威胁洞察和情报报告

攻击概述

9月15日,Node Package Manager仓库遭遇持续供应链攻击,攻击者执行高度针对性的钓鱼活动入侵NPM包维护者账户。获得特权访问后,攻击者向广泛使用的JavaScript包注入恶意代码,威胁整个软件生态系统。值得注意的是,此次攻击破坏了多个关键NPM包,包括应用程序开发和加密功能相关的包。

据StepSecurity称,此次事件背后的恶意行为者使用了与上月Nx供应链攻击类似的技术。截至9月16日,Socket研究人员已识别近500个受影响的NPM包。

风险包类型

恶意修改针对关键的JavaScript库,包括支持开发框架和加密功能的包。受此次攻击影响的包具有极高的全球下载率——每周超过26亿次——影响了庞大的Web应用程序和依赖项目生态系统。

加密货币资产窃取

攻击者劫持Web API并操纵网络流量,秘密将资金从合法渠道转移到他们控制的钱包,针对与受感染包交互的组织和最终用户。

Shai-hulud攻击链分析

其中一个载荷是在NPM注册表中检测到的自我复制蠕虫,以《沙丘》中的沙虫命名。趋势研究提供了对Shai Hulud的分析、其运作机制以及对依赖NPM的组织的影响。

Shai-Hulud因其自主复制能力而突出。不仅仅是感染,Shai-Hulud引入了蠕虫式传播,持续寻找并入侵其他包和环境。

攻击链

Shai-Hulud攻击链始于伪装成NPM安全警报的钓鱼邮件,诱骗开发者泄露凭证。攻击者入侵开发者的NPM账户并上传恶意包。安装时,该包执行JavaScript和嵌入的Unix shell脚本以建立持久性并开始窃取信息。

使用被盗的GitHub访问令牌,恶意软件向GitHub API验证身份,检查用户权限,并列出受害者可访问的所有仓库——包括私有仓库。它将私有仓库克隆到攻击者账户,在每个仓库中创建新分支,并部署恶意工作流以自动化数据窃取。

接下来,恶意软件下载并安装TruffleHog以扫描和收集文件中的更多秘密。它将被盗仓库全部公开并镜像其完整历史。然后使用自动化Web请求将敏感数据外泄给攻击者。

此链条展示了单个受感染账户如何导致恶意代码传播、凭证窃取以及跨组织整个开发环境的大规模数据泄漏。

Shai-Hulud的独特之处

传统软件供应链威胁通常涉及单次使用载荷或针对性凭证窃取。Shai-Hulud通过其在NPM生态系统内自我复制的能力区分自身,利用安装后脚本中的可用功能建立二次和三次感染。一旦受感染包被安装,蠕虫自动尝试传播到新目标,创建不依赖初始部署后人工干预的倍增威胁。

关键特征:

  • 自我传播 - Shai-Hulud表现为蠕虫,利用开源社区中现有的信任关系自动感染其他NPM包和项目
  • 自主性 - 恶意软件无需直接持续操作员输入即可运行,使其更持久且难以控制
  • 环境影响 - 通过深度嵌入开发和CI/CD环境,Shai-Hulud获得对更多凭证、令牌和敏感构建秘密的潜在访问

技术方法:

  • 安装后滥用 - 核心传播机制围绕恶意安装后脚本。当受感染包部署时,执行任意代码,可能下载更多载荷或将恶意脚本注入其他项目和依赖
  • 网络活动 - 蠕虫可与远程服务器通信以外泄数据或接收更新,从而在初始部署后进化
  • 递归威胁向量 - Shai-Hulud为持久性设计——不仅一次入侵项目,而且作为依赖更新时保持潜在风险

恶意工作流注入分析

Shai-Hulud蠕虫通过向目标仓库注入恶意GitHub Actions工作流使用高级技术,实现跨组织开发环境的自动化传播和秘密外泄。

执行时,Shai-Hulud准备以下内容:

  • 分配分支名称如shai-hulud以保持一致性并帮助跟踪跨仓库感染
  • 目标.github/workflows/shai-hulud-workflow.yml放置其恶意工作流文件
  • 生成或获取包含恶意自动化载荷的YAML工作流文件

注入工作流的主要功能是系统收集和外泄仓库秘密:

  • 工作流枚举其CI/CD运行时环境中暴露的所有秘密
  • 将这些秘密打包成传输格式的有效载荷
  • 通过HTTP请求将秘密发送到攻击者控制的webhook端点

GitHub仓库克隆分析

Shai-Hulud攻击链具有自动化过程,用于从组织克隆、迁移和暴露私有GitHub仓库到攻击者基础设施。

主要编排逻辑协调完整的克隆周期——从初始化到仓库创建和暴露。

蠕虫遍历目标组织内所有识别的私有仓库,利用内部逻辑确保每个仓库被分析处理。

初始检查确认所需输入的存在和有效性——如组织名称、目标用户名和GitHub认证令牌——以确保API合规性和工作流可靠性。

API交互抽象在标准化通信包装器后,负责管理认证并通过HTTP GET、POST、PUT和PATCH方法进行健壮错误处理。

该过程仅针对私有或内部仓库以最大化隐蔽性和影响。实现API分页以高效枚举大型组织内的所有仓库。

对于每个发现的仓库,蠕虫在攻击者账户中创建相应的目标仓库——在仓库描述中嵌入标识符如"Shai-Hulud Migration"用于跟踪。

一旦创建,受害者组织中的私有仓库在攻击者控制下变为公开,促进大规模数据暴露和指纹识别。

为最大化窃取价值,蠕虫执行完整镜像克隆,不仅捕获代码内容,还捕获完整提交和分支历史以供后续利用或二次攻击。

通过这些自动化机制,Shai-Hulud快速从私有仓库外泄高敏感性知识产权和源代码,将其武器化用于进一步数据暴露、勒索或下游供应链威胁。

通过TruffleHog进行凭证收集

作为其入侵后活动的一部分,Shai-Hulud利用TruffleHog进一步自动化在受感染环境上的凭证和秘密发现。

工作流首先获取TruffleHog二进制文件的最新版本,以编程方式检索可供下载的最新版本。

一旦识别适当的TruffleHog文件,蠕虫下载二进制文件,基于受害者机器上的操作系统自动检测和提取正确版本。

提取后,TruffleHog被安装或放置到环境中,使其随时可供恶意工作流使用。

恶意软件然后生成子进程,调用TruffleHog扫描本地文件系统或目标仓库内容中的高熵字符串、密钥和其他敏感秘密。此过程在内存或运行时上下文中进行以逃避持久检测。扫描完成后,删除TruffleHog二进制文件以覆盖踪迹并最小化取证工件。

通过以这种自动化方式集成TruffleHog,Shai-Hulud显著增加了外泄秘密的数量和质量,同时在整个攻击生命周期中保持操作隐蔽性。

受影响范围

根据趋势科技遥测数据,涉及Cryptohijacker载荷的攻击已在多个国家报告,但主要分布在北美和欧洲。依赖广泛采用的JavaScript库的组织和开发者是受影响最严重的群体之一。然而,目前尚未检测到Shai-Hulud蠕虫。

安全建议

为保护其开发工作流和敏感资产免受持续NPM供应链攻击的风险,组织应通过以下最佳实践优先考虑主动安全态势:

  • 审计依赖,重点关注最近更新的包。审查所有依赖,特别是最近修改的依赖,移除或回滚任何看似受感染的依赖
  • 撤销和轮换凭证,特别是NPM账户。立即撤销和替换任何可能暴露的凭证或API密钥,优先处理敏感账户
  • 监控Trufflehog和类似扫描工具的使用证据。检查日志中的任何异常仓库扫描活动,并主动扫描自己的代码库以查找暴露的秘密
  • 保持更新来自官方NPM注册表和可信源的公告。定期监控官方公告以应用最新修复和推荐操作
  • 加强访问和安全策略。例如,对所有影响仓库和自动化的账户应用最小权限原则。此外,在所有开发者和CI/CD访问点强制多因素认证

Trend Vision One™威胁情报

为保持领先于不断演变的威胁,趋势客户可以访问Trend Vision One™威胁洞察,提供趋势研究关于新兴威胁和威胁行为者的最新洞察。

趋势Vision One威胁洞察

  • 新兴威胁:大规模NPM供应链攻击:钓鱼劫持导致恶意JavaScript注入

趋势Vision One情报报告

  • 大规模NPM供应链攻击:钓鱼劫持导致恶意JavaScript注入

狩猎查询 趋势Vision One搜索应用 趋势Vision One客户可以使用搜索应用匹配或狩猎本博文中提到的恶意指标与其环境中的数据。

恶意软件载荷检测

1
malName: (*CRYPTOHIJACK* OR *SHULUD*) AND eventName: MALWARE_DETECTION

更多狩猎查询可供具有威胁洞察授权的趋势Vision One客户使用。

入侵指标 此条目的入侵指标可在此处找到。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计