作者 | 张洁 责编 | 屠敏
出品 | CSDN(ID:CSDNnews)
2021年 , 开源软件引发的安全性问题层出不穷 , 继影响广泛的Log4j2漏洞 , 还有因没有开源收入 , 著名开源npm包faker.js和colors.js项目作者Marak Squires主动恶意破坏自己的项目并“删库跑路”等事件 。 近期又有开发者向自己维护的项目源代码中“投毒” , 将恶意代码注入其中 , 当其他开发者使用该项目时 , 自己的计算机桌面会自动生成一个名为“WITH-LOVE-FROM-AMERICA.txt” , 打开乍一看啥都没有 , 但又细思极恐 。
在了解这位开发者究竟为何这么做时 , 其名曰“反战” 。
向多版本“投毒” , 开源开发者的蓄谋
这个故事要从名为node-ipc和Peacenotwar的两个npm包开始说起 。
node-ipc是npm中一个主流的开源包 , 平均每周下载次数高达100万次 。 它允许进程间通信 , 被广泛用于基于Java的项目中 , 在我们经常使用的Vue.js和Node.js等框架中也常能看到node-ipc的身影 。
时针回到3月8日这一天 , node-ipc背后的作者RIAEvangelist(Brandon Nozaki Miller)在这个项目中发布了一个Peacenotwar的npm包 。
所谓Peacenotwar , 正如RIAEvangelist对此模块撰写的描述那番:
这段代码是一个非破坏性的例子 , 说明为什么控制你的node模块很重要 。 它还可以作为一种非暴力抗议 , 以反对俄罗斯目前威胁世界的侵略行为 。 此模块将在您的用户桌面上添加一条和平消息 , 并且仅在它不存在时才会这样做 , 只是为了礼貌 。
事实上 , 据安全厂商Snyk后来的调查显示 , 这是一次蓄意而为的行动 , 并非RIAEvangelist一时兴起 。
因为在3月7日 , RIAEvangelist接连发布了node-ipc的10.1.1、10.1.2两个版本 。 在这两个版本中 , RIAEvangelist对代码进行了更新 , 还将源码进行了压缩 , 简单地将一些关键字符串进行了base64编码 , 由此也让部分开发者对他的所为可能会带来的一些可疑活动、可能滥用源代码和包行为表示担忧 。
此次更新的两个版本的代码被添加设置了一个计时器 , 一旦有代码经过计时器函数时 , 它们将在以下代码行中用作文件输入源 , 以擦除文件内容并将其替换为心形符号 。 除此以外 , 这段代码还会对来自俄罗斯或白俄罗斯的IP进行监测 。
本来很多人只是对RIAEvangelist的行为感到担心和不安 , 万万没想到 , 3月8日 , node-ipc 10.1.3版本发布了 , 且这个版本引入了Peacenotwar模块 。 四个小时后 , node-ipc 11.0.0版本发布 , 此时 , 开发者在基于node-ipc包构建项目时 , 桌面上会无缘无故出现一个名为“WITH-LOVE-FROM-AMERICA.txt”的文件 。
文章图片
刚开始 , 并没有太多人发现这个问题 , 因为在此之前 , Peacenotwar模块几乎无人下载 。
然而 , 直到3月15日 , Peacenotwar的下载量激增 。
想必很多人也能猜到 , 没错 , 在这一天中 , RIAEvangelist将Peacenotwar作为node-ipc的依赖项引入了 。 与此同时 , RIAEvangelist也发布了node-ipc 9.2.2补丁版本 , 它是node-ipc的最新的稳定分支 , 其中主流的前端框架vue cli使用了这一版本 。
此事一经发现 , 便在技术圈中引起了热议 。
文章图片
开源社区的信任再遭破坏
截至目前 , RIAEvangelist把“投毒”的代码删除了 。 vue cli项目中的node-ipc版本也回滚到了安全的9.2.1版本 。 最早有问题的node-ipc10.1.1和node-ipc10.1.2都已经废弃 。
除此之外 , RIAEvangelist还在GitHub的相关issue讨论中回复到:
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
