恶意npm包修改本地“以太坊”库以发起反弹Shell攻击

网络安全研究人员近日在 npm(Node Package Manager)库上有了重大发现:两个精心设计的恶意软件包悄然现身。这些恶意软件包的目标并非直接对系统发起攻击,而是专门针对本地已安装的其他软件包下手,这一发现进一步揭示了软件供应链攻击在开源生态系统中不断演变的严峻态势。

这两个引起关注的恶意软件包分别名为 "ethers-provider2" 和 "ethers-providerz"。其中,"ethers-provider2" 自 2025 年 3 月 15 日发布以来,截至目前已被下载了 73 次。而另一个软件包 "ethers-providerz",很可能已被恶意软件的开发者自行删除,尚未吸引到任何下载量。

ReversingLabs 的研究员卢西贾・瓦伦蒂奇(Lucija Valentić)在一份与《黑客新闻》分享的报告中指出:"它们就像是简单的下载器,但其携带的恶意负载却被巧妙地隐藏了起来。" 更值得警惕的是这些恶意软件包的第二阶段攻击手段:它们会对本地已安装的合法 npm 软件包 "ethers" 进行 "篡改"。具体来说,它们会用一个包含恶意负载的新文件来篡改 "ethers" 软件包中的相关文件,而这个经过篡改的文件最终会被用于创建一个反向 Shell,为攻击者打开入侵系统的大门。

这种攻击手段标志着威胁行为者的策略有了新的升级。传统上,卸载恶意软件包通常被认为可以清除系统中的威胁,但在这种新型攻击模式下,仅仅卸载 "ethers-provider2" 这样的流氓软件包并不能彻底消除受感染机器上的恶意功能。因为恶意修改已经被植入到了 "ethers" 这个流行的软件库中。此外,如果用户在 "ethers-provider2" 仍留在系统中的情况下不小心删除了 "ethers" 软件包,那么当用户在后续重新安装 "ethers" 软件包时,系统很有可能会再次被感染。

ReversingLabs 对 "ethers-provider2" 进行了深入分析,结果显示它实际上是一个被植入了木马的广泛使用的 "ssh2" npm 软件包版本。在其 "install.js" 文件中,包含了恶意负载代码,该代码会从远程服务器("5.199.166.1:31337/install")获取第二阶段的恶意软件,将其写入一个临时文件,然后运行该恶意软件。一旦恶意软件执行完毕,临时文件会立即从系统中删除,以此来试图避免留下任何攻击痕迹。而第二阶段的有效负载会启动一个无限循环,持续检查本地是否安装了 "ethers" npm 软件包。

一旦检测到 "ethers" 软件包已经存在或者刚刚被安装,恶意软件就会立即采取下一步行动:它会将 "ethers" 软件包中一个名为 "provider-jsonrpc.js" 的文件替换为一个伪造版本。这个伪造版本的文件中包含了额外的代码,这些代码会从同一台远程服务器获取并执行第三阶段的恶意软件。新下载的有效负载会充当一个反向 Shell,通过 SSH 协议连接到威胁行为者的服务器。

瓦伦蒂奇解释说:"这意味着,一旦客户端收到来自服务器的自定义消息,与该客户端建立的连接就会立即转变为反向 Shell。即使从受感染的系统中删除了'ethers-provider2'软件包,在某些特定情况下,这个客户端仍然会被攻击者利用,从而为攻击者提供了一定程度的持续控制能力。"

值得强调的是,目前 npm 注册表上的官方 "ethers" 软件包本身并没有受到损害,因为恶意修改是在软件包安装到本地系统之后才进行的。

另一个恶意软件包 "ethers-providerz" 的行为模式也与之类似。它试图篡改与本地已安装的名为 "@ethersproject/providers" 的 npm 软件包相关的文件。虽然目前还不清楚该库具体针对的是哪个确切的 npm 文件,但从源代码引用来看,有可能是 "loader.js" 文件。

这些研究结果展示了攻击者在开发者系统中传播和维持恶意软件的新手段。在开源生态系统中,软件包的广泛共享和使用使得安全问题变得尤为重要。这也提醒广大开发者,在从开源存储库下载和使用软件包之前,务必对其进行仔细的审查和验证,以确保系统的安全。

瓦伦蒂奇表示:"尽管这些恶意软件包的下载量目前较低,但它们的潜在危害却非常大。一旦攻击成功,它们不仅会破坏本地安装的'ethers'软件包,而且即使该软件包被删除,它们仍能在受感染的系统中保持持久性,持续对系统构成威胁。"

相关推荐
浪遏7 分钟前
场景题:大文件上传 ?| 过总字节一面😱
前端·javascript·面试
Bigger28 分钟前
Tauri(十八)——如何开发 Tauri 插件
前端·rust·app
355984268550551 小时前
医保服务平台 Webpack逆向
前端·webpack·node.js
百锦再1 小时前
React编程的核心概念:发布-订阅模型、背压与异步非阻塞
前端·javascript·react.js·前端框架·json·ecmascript·html5
thinkQuadratic1 小时前
scss预处理器对比css的优点以及基本的使用
前端·css·scss
yuluo_YX2 小时前
使用 Spring AI Aliabab Module RAG 构建 Web Search 应用
前端·人工智能·spring
冴羽2 小时前
SvelteKit 最新中文文档教程(16)—— Service workers
前端·javascript·svelte
Hongwen10012 小时前
寒冬之中的AI创意实验:48小时左右从零打造吉卜力风格AI绘图网站
前端·后端·cursor
小鸭呱呱呱2 小时前
【CSS】- 表单控件的 placeholder 如何控制换行显示?
前端·javascript·css·深度学习·面试·职场和发展·html
小浣熊喜欢揍臭臭3 小时前
vue+webpack5(高级配置)
前端·javascript·vue.js