黑客发布14个伪装OpenSearch、Elasticsearch库的恶意软件包
作者: CBISMB
责任编辑: 邹大斌
来源: CBISMB
时间: 2026-06-01 10:13
关键字: Elasticsearch ,npm恶意包 ,供应链攻击 ,凭据窃取 ,OpenSearch
浏览: 0
点赞: 0
收藏: 0
一名攻击者于4月28日在npm平台上发布了14个恶意软件包,伪装成流行的OpenSearch和Elasticsearch库,试图窃取云环境和持续集成/持续交付(CI/CD)流程中的敏感凭据。这些软件包随后被微软发现并全部下架。
攻击详情
根据微软的报告,该攻击者于周四(4月28日)在短短四小时内集中发布了所有恶意软件包。这些软件包旨在模仿@opensearch和@elastic生态系统中的合法库,以及与DevOps和环境配置相关的工具。
攻击者使用新创建的维护者别名"vpmdhaj"(邮箱a39155771@gmail[.]com)发布这些包。目标用户是拥有AWS(亚马逊云服务)和Elastic云凭据的开发人员。
软件包伪装手段
攻击者采用了多种手段增加恶意包的迷惑性:
名称混淆:使用与合法软件包名称仅有一两个字母之差的名称,或使用类似opensearch-setup-tool、opensearch-config-utility这样的名称来迷惑用户。
元数据伪造:所有无作用域的恶意软件包在其package.json文件中,都将homepage、repository和bugs字段指向合法的github.com/opensearch-project/opensearch-js项目,以增加可信度。
版本号膨胀:将虚假软件包的版本号直接设置为1.0.7265、1.0.9108或2.1.9201等较高数值,以伪装成具有成熟发布历史的产品。
恶意行为分析
一旦用户安装了这些恶意软件包,其内置的窃密载荷便会通过preinstall钩子在运行npm install时自动执行。
攻击者使用了两代不同的加载器(Stager):
第一代(Gen-1):利用install、preinstall和postinstall钩子调用preinstall.js脚本。该脚本会收集主机的大量信息(如主机名、平台、Node版本等),进行Base64编码后发送至攻击者的命令与控制(C2)服务器,并下载第二阶段的载荷。
第二代(Gen-2):更为隐蔽。它首先检查主机上是否已安装Bun运行时,如果没有,则会下载合法的Bun运行时(v1.3.13),然后利用它来执行第二阶段的载荷。
第二阶段的载荷是一个约195 KB的专用凭证收割机,主要针对AWS、HashiCorp Vault、npm和GitHub Actions等云和CI/CD环境进行凭据窃取。此外,软件包的index.js文件会在每次require()模块时重新启动载荷,形成一种持久化机制。
应对措施
目前,所有14个恶意软件包都已被移除。微软在其博客文章中列出了这14个软件包的完整清单,建议开发者进行核对。
如果您或您的团队在4月28日或之后安装或构建了受影响的软件包版本,请务必执行以下操作:
排查受影响系统:查阅微软发布的软件包列表,确认系统是否受到影响。
轮换所有可能泄露的凭据:立即轮换(重置)可能已暴露的AWS IAM/STS、HashiCorp Vault、npm发布以及GitHub Actions的令牌(tokens),以防止攻击者横向移动并窃取更多敏感数据。