vue-cli的依赖node-ipc包以反战的名义毒害供应链,这个包在npm上可用每周都有数百万次下载。知名科技网站V2ex的一篇帖子揭示了这个问题。用户simbaCheng使用npm搭建前端项目时,启动项目后桌面自动创建了《 WITH-LOVE-FROM-AMERICA.txt 》文件。点开之后,发现内容是空的。simbaCheng吓了一跳,以为自己的电脑中毒了。在网友的热心帮助下,发现该txt文件被vue-cli依赖node-ipc包作者RIAEvangelist投毒。作者是一个反战人士,特意新建一个peacenotwar仓库来宣扬他的反战思想。然而,网友继续挖掘后发现,作者的投毒行为更为恶毒。如果说将txt文件写入用户桌面是激进的反战行为,那么本期知乎用户@贾士俊介绍的这一举动就是彻头彻尾的恶意攻击:攻击的源代码仍然可以在仓库中找到。源代码是压缩的,一些关键字符串只是简单的base64编码。它的行为是使用第三方服务检测用户IP。对于俄罗斯和白俄罗斯的IP,它会尝试覆盖当前目录、父目录和根目录下的所有文件,并将所有内容替换为?。然而,在提交了上述恶意攻击代码后,或许是意识到了自己行为的严重性,半天后作者将恶意攻击更改为“相对和平”的“反战”TXT文本,如本文开头所述一般来说。但无论如何,这仍然是一次恶劣的攻击,严重损害了人们对开源生态系统的信任。其最坏的后果是带来强大的代码审查。各大代码托管平台都会审核代码注释和变量常量命名。注:作者很清楚自己在做什么,代码是什么意思,在issue中明确指出了下游可以消除影响的workaround。在vue-cli问题对话中,RIAEvangelist大方承认他的恶意代码是针对俄罗斯和白俄罗斯用户的。而且,这并不是RIAEvangelist和他的node-ipc包第一次引起争议。早在2020年,node-ipc就因为奇怪的“别混蛋”license引发争议,尤雨熙也出面回应:后续:vue-cli发布新版本,锁定node-的版本ipctov9.2.1附影响项目的解决方法:按照readme正常安装build后,用编辑器全局搜索'peacenotwar',全部删除,然后删除node_models目录下的'peacenotwar'目录项目的'project/node_modules/node-ipc/node-ipc.js'注释掉该文件中引用'peacenotwar'的代码,正常启动项目。
