恶意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'软件包,而且即使该软件包被删除,它们仍能在受感染的系统中保持持久性,持续对系统构成威胁。"

相关推荐
LinXunFeng3 小时前
Obsidian - 使用 Share Note 分享笔记并自部署
前端·笔记·github
乘风gg7 小时前
为什么AI 时代来临,大部分人吃不到红利
前端·ai编程·claude
恋猫de小郭7 小时前
Android 限制侧载新进展,谷歌联合国内厂商推验证计划
android·前端·flutter
IT_陈寒8 小时前
Redis内存爆了,原来我漏掉了这个致命配置
前端·人工智能·后端
恋猫de小郭8 小时前
解读 Android 17 全新内存限制,有没有“豁免”后门?
android·前端·flutter
Hyyy9 小时前
理解LLM的基本工作原理:预训练、微调、推理的区别
前端
Gatlin9 小时前
前端逆向与反逆向:一场猫鼠游戏的底层逻辑与实战
前端
Pedantic9 小时前
本地通知(Local Notifications)学习笔记
前端
森蓝情丶10 小时前
我给 AI 搭了个法庭:一个前端仔的 LangGraph 实战全记录
前端·后端
爱勇宝10 小时前
干了近 8 年,一夜之间被裁:AI 时代,程序员最该害怕的不是 AI
前端·后端·程序员