托管式检测与响应服务商 Expel Inc. 近日发布研究报告,披露了一种被称为 “沙虫”(Shai Hulud) 的新型恶意软件变种。该威胁显示,软件供应链攻击正从单一的软件包投毒,演变为具备自动扩散能力的系统性攻击,开发者本身在不知情的情况下成为传播链条的一部分。
Expel 指出,该攻击活动最早可追溯至去年 9 月,主要集中在 JavaScript/npm 生态。不同于传统直接感染终端的方式,“沙虫”通过植入恶意 npm 软件包渗透供应链,在窃取敏感凭证的同时持续向外扩散。
升级后的变种实现了更高程度的自动化,能够主动入侵开发者本地环境以及 npm 注册表,结合凭证收集、云密钥窃取和快速传播等多种技术。当开发者工作站或 CI/CD 流水线执行 npm install 操作时,恶意软件便会触发隐藏在 npm 包中的两阶段感染流程。
在第一阶段,恶意代码会检测目标系统是否存在 Bun JavaScript 运行时,如未安装则自动部署;随后进入第二阶段,在后台执行高度混淆的载荷,统一协调数据窃取、外泄和横向传播行为。
“沙虫”会系统性地扫描受害主机,搜集包括云服务访问密钥、npm 发布令牌以及 GitHub 身份凭据在内的敏感信息。同时,它还滥用开源安全工具 TruffleHog,对用户主目录进行深度爬取,从源代码、配置文件及 Git 历史中挖掘硬编码密钥。
一旦获取云平台凭证,恶意软件还会进一步访问 AWS Secrets Manager、Azure Key Vault 以及 Google Cloud Secret Manager 等云端密钥管理服务,从中直接提取更多高价值凭据。
在通信方式上,“沙虫”并未采用传统的命令与控制服务器,而是借助 GitHub 官方基础设施,将恶意流量伪装为正常开发活动。窃取的凭证和系统信息会被上传至新创建的公开 GitHub 仓库,同时受害主机还会被配置为自托管 GitHub Actions Runner,为攻击者提供持续的远程控制能力。
为了维持攻击规模,该恶意软件会利用被攻陷的开发者账号,对其维护的其他 npm 项目注入后门代码,并自动发布包含恶意内容的新版本,从而不断扩大感染范围。
Expel 评估认为,此次攻击已波及 超过 2.5 万个代码仓库 及 数百个软件包,其中不乏被广泛使用的开发工具相关项目。
报告最后强调,“沙虫”标志着供应链攻击策略的重大变化,其核心目标已转向现代软件开发中高度依赖的信任机制。尽管当前主要影响 npm 生态,但 Expel 警告称,采用类似信任模型的其他语言社区(如 PyPI、RubyGems 和 Composer)同样面临潜在风险。