深入解析Shai-Hulud蠕虫:Elastic主动防御npm供应链攻击
理解威胁:npm供应链攻击与Shai-Hulud蠕虫
npm是最大的JavaScript软件注册中心之一。2025年9月,至少40个npm软件包被检测到恶意更新,包括流行的@crtl/tinycolor包。
某些npm软件包感染了名为"Shai-Hulud"的自复制蠕虫。在攻陷npm开发者账户并枚举该开发者维护的其他软件包后,蠕虫会发布包含其恶意代码的修改版本。随着新开发者账户被攻陷,这种传播循环会持续重复。
Elastic的响应措施
目前,Elastic尚未发现其软件环境遭受感染的证据。Elastic信息安全团队立即启动了调查,包括:
审计依赖项:使用软件成分分析(SCA)工具持续扫描产品,快速审计代码库和依赖项以识别已知恶意npm包。
禁用Elastic npm仓库更新:移除向Elastic npm JS仓库发布新软件包的能力,并审计了已知暴露窗口期内发布的软件包。
禁用依赖自动更新:作为预防措施,暂时禁用了CI/CD基础设施中持续构建的JavaScript依赖项自动更新。
实施端点扫描:通过Elastic Agent的OSQuery集成,持续扫描Elastic笔记本电脑上安装的已知受感染npm包。
运行开箱即用检测规则:Elastic Security Labs已提供开箱即用的检测规则,帮助识别安装并运行受感染软件包的系统。
通知Elastic开发者:向Elastic开发者发送安全通告,告知正在进行的调查并禁止更新或安装新npm包。
威胁搜寻查询
建议Elastic Security客户在其环境中搜寻潜在威胁。以下ES|QL查询可用于识别与此供应链攻击相关的行为。
注意:威胁搜寻查询可识别潜在威胁,但仍需分析和调查以确认真正阳性结果。
TruffleHog
检测用于发现密钥的TruffleHog软件执行:
|
|
cURL数据外泄
识别cURL被用于从受感染主机向已知恶意服务器外泄数据:
|
|
蠕虫YML文件创建
识别GitHub Actions工作流文件shai-hulud-workflow.yml的创建:
|
|
jq解析仓库文件
识别jq是否被用于发现认证用户名和默认GitHub分支提交SHA:
|
|
受感染软件包
可使用OSQuery识别已知受感染软件包。配置OSQuery包在系统上运行以持续收集所有安装的npm包:
|
|
这些OSQuery包的结果将在logs-osquery_manager.result*索引中可搜索。可以搜索任何已知受感染的已安装软件包,并为这些软件包创建检测规则。
开箱即用Elastic检测
以下开箱即用检测和预防规则也为Shai-Hulud蠕虫提供防护覆盖:
- 异常网络连接到可疑Web服务(检测引擎)
- 连接到常被滥用的Web服务(检测引擎)
- 潜在发现DPAPI主密钥(Elastic Defend)
- 潜在发现Windows凭据管理器存储(Elastic Defend)
- 通过未签名进程访问Web浏览器凭据(Elastic Defend)
- 潜在浏览器信息发现(Elastic Defend)
- 未签名或不受信任进程访问Web浏览器凭据数据(Elastic Defend)
安全承诺
安全是Elastic开发生命周期和运营流程的基础。npm供应链攻击和Shai-Hulud蠕虫突显了全球软件供应链面临的网络威胁持续存在且快速演变的本质。我们致力于:
持续监控:保持7×24小时对系统和网络的监控,及时发现任何威胁迹象。
快速响应:确保安全团队准备好快速有效地应对新威胁。
透明度:与用户和社区就安全事件及我们的缓解措施进行开放沟通。
我们将继续监控新信息,并在了解更多事件详情后更新本文。