知名应用程序使用的软件包现在将反战文本文件投放在桌面上。

打开网易新闻 查看更多图片

JavaScript库node-ipc的开发人员有意引入了一个严重的安全漏洞,对于一些网民来说,该漏洞会破坏其计算机上的文件。 广受欢迎的vue.js框架使用node-ipc这个库。

在GitHub上名为RIAEvangelist的Brandon Nozaki Miller创建了node-ipc,该库每周从NPM注册库下载多达上百万次,被称为是“面向Node的进程间通信模块,支持Unix套接字、TCP、TLS和UDP。”

看来Miller故意更改了代码,以覆盖主机系统的数据,然后更改了代码,显示一条呼吁世界和平的消息,以此抗议俄罗斯入侵乌克兰的行动。

GitHub周三宣称这是一个编号为CVE-2022-23812的严重漏洞。

GitHub表示:“恶意代码旨在根据用户IP地址的地理位置,覆盖任意文件。”

3月7日至3月8日期间发布了该库的10.1.1版本和10.1.2版本。

这些版本作为依赖项被导入、由项目运行时,检查主机是否有俄罗斯或白俄罗斯境内的IP地址;如果有,则用心形符号覆盖所能覆盖的每个文件。版本10.1.3没过多久发布了,但没有这种破坏性功能;10.1.1和10.1.2已从NPM注册库中删除。

后来发布了版本11,次周发布了版本9.2.2。这两个版本都引入了由Miller开发的一个名为Peacenotwar的新软件包,该软件包在用户的桌面和OneDrive文件夹中创建了名为WITH-LOVE-FROM-AMERICA.txt的文件。这个文本文件本该含有来自开发人员的消息,包括“战争不能解决问题”,不过有人报告该文件空空如也,所以早期版本可能有bug。

每当node-ipc版本11或9.2.2被另一个项目用作依赖项时,它们都会引入peacenotwar并运行它,将文件留在人们的计算机上。版本9.2.2与破坏性的10.1.x版本一道从NPM注册库中消失了。比如说,Vue.js在第一时间引入了node-ipc 9.2.2,因为9.x被认为是稳定的分支版,这意味着有一段时间.txt文件意外地出现在了一些Vue开发人员的面前。

换句话说,下载获取破坏性版本的人并不多,因为大型应用程序和框架会使用稳定的分支版,分支版暂时投放.txt文件。任何使用最新版本的人都可能发觉文件消失了,或发现反战宣言保存到了其计算机上。

信息安全公司Snyk记下了事件时间表。NPM上node-ipc模块的登录页面声明“从v11开始,该模块使用peacenotwar模块。”

Miller在GitHub上为其peacenotwar模块辩称:“这都是公开的、有文档记载的、许可的和开源的。”早些时候,20多个问题单专门针对node-ipc的不良行为,现在针对peacenotwar的问题单数量更多。一些评论称Miller开发的作品是“抗议软件”。目前无法联系上这名程序员发表评论。

甚至有人声称,一家美国非政府组织在一个系统上的生产文件被node-ipc删除了,因为他们在白俄罗斯境内的一台监控服务器上运行这个库,该服务器的IP地址触发了数据擦除代码。

大行其道的Node.js JavaScript框架已给全世界带来了一种全新类型的软件漏洞。

Node的软件包管理器是NPM,如今它与NPM的模块注册库一道由GitHub监管和拥有。该工具使Node应用程序很容易直接从在线注册库自动提取其他代码库。这导致了许多模块被大量下载,这意味着小小的代码更改可以在大量的计算机上非常迅速地传播开来。

投放文件的node-ipc版本被并入到Unity Hub的版本3.1中,后者是一个用于极受欢迎的Unity游戏引擎的工具,不过有问题的版本在同一天就被删除了。

Unity团队写道:“这个修正补丁消除了第三方库能够在使用该版本的人的桌面上创建一个空文本文件的问题。虽然这个问题很烦人,但不包括恶意功能。更新Unity Hub后这个文件出现在桌面上的任何用户都可以删除该文件。”

这绝不是头一次发生这样的事情了。2016年,一位开发人员从NPM删除了他小小的leftpad(左侧补齐)库,结果破坏了另外成千上万个应用程序。今年早些时候,另一位开发人员为其库添加了代码更改,以示抗议。

信息安全公司WhiteSource今年早些时候表示,它在2021年检测到了1300个恶意npm软件包。它已上报给 npm,npm随后悄然删除了它们。