以反战之名,向开源项目“投毒”?知名 NPM 包作者注入恶意代码,只为一个文件名

2022 年 3 月 18 日 CSDN

作者 | 张洁    责编 | 屠敏

出品 | 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万次。它允许进程间通信,被广泛用于基于JavaScript的项目中,在我们经常使用的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使用了这一版本。

这意味着所有使用node-ipc的项目都可以让用户的屏幕显示“WITH-LOVE-FROM-AMERICA.txt”文件。幸运的是,此模块仅显示文本,不会擦除数据。据悉,RIAEvangelist最初开发这份恶意代码是为了识别用户的IP并仅当地址来自俄罗斯或白俄罗斯时,删除数据的。

此事一经发现,便在技术圈中引起了热议。


开源社区的信任再遭破坏


截至目前,RIAEvangelist把“投毒”的代码删除了。vue cli项目中的node-ipc版本也回滚到了安全的9.2.1版本。最早有问题的node-ipc10.1.1和node-ipc10.1.2都已经废弃。

除此之外,RIAEvangelist还在GitHub的相关issue讨论中回复到:

1.运行该代码实际上是不可能的,它不构成威胁,但它看起来确实很吓人。

2.我打算把这块不是战争的模块标记为抗议软件,只是为了明确说明它是这样的。

其中,RIAEvangelist维护着40多个其他npm包,下载量达数亿。

现实来看,开源生态耗费了无数开发者的时间与精力,才慢慢壮大起来。因自己的个人观点和做法,牵扯其背后的开源开发者们和普通用户,无疑之中严重破坏了开源生态的信任,RIAEvangelist所带来的影响也是无法估计的。

看了有关问题的讨论,RIAEvangelist试图在扭曲事实,还说API Key是无效的。但经另一位开源开发者MidSpike实测后,这个API Key是有效的。

 

脆弱的供应链,需要每一个社区成员守护


从彼时的Log4j2到现在的node-ipc,这不禁让人担心一个问题,那就是开源软件供应链安全问题,越是庞大的项目在供应链安全方面越是脆弱。

对此,有不少网友建议开发一种代码审查机制。如果审查机制建立,包含恶意代码的包将会进一步减少,同时开源社区的安全更有保障。除此以外,广大网民还需要有反恶意行为的意识,维护“绿色”开源。

开源社理事长庄表伟直接表示:我们需要建立一种开源世界的反分裂共识。

同时,开源安全扫描平台snyk中也给出了一些建议:“由于担心未来的代码更新可能会给用户带来风险,我们建议完全避免使用npm包。如果此npm包作为您正在构建的应用程序的一部分捆绑在您的项目中,那么我们建议您使用npm包管理器功能来完全覆盖被破坏的版本并将传递依赖关系固定为known good。”以此来解决用户的担忧。

这件事让多少用户痛恨RIAEvangelist,破坏了多少人所建立的心血。一代人应该有一代人的担当,广大用户应该奉献自己的力量,守护好这个社区。如果开源社区不加以整治,未来又会有多少个这样的“包”呢?开源社区的成员还会越来越多吗?对于这件事,你有什么看法吗?

参考链接:

1.https://www.zhihu.com/question/522144107

2.https://github.com/vuejs/vue-cli/issues/7054

3.https://snyk.io/blog/peacenotwar-malicious-npm-node-ipc-package-vulne rability/


END


新程序员001-004》全面上市,对话世界级大师,报道中国IT行业创新创造


  
  
    
— 推荐阅读 —
   
   
     
☞滴滴6月或发布造车计划;英特尔顶级专家Mike Burrows跳槽AMD;Android 13开发者预览版2发布|极客头条
☞俄罗斯 IT 存储空间告急,未来 2 月或将耗尽?
宁愿“大小周”、每天只写 200 行代码、月薪 8k-17k 人群再涨!揭晓中国开发者真实现状
   
   
     

点这里↓↓↓记得关注标星哦~ 

一键三连 「分享」「点赞」「在看」

成就一亿技术人

登录查看更多
1

相关内容

【干货书】《Pydon'ts:编写优雅的Python代码》,263页pdf
专知会员服务
91+阅读 · 2021年11月2日
深度学习赋能的恶意代码攻防研究进展
专知会员服务
29+阅读 · 2021年4月11日
【经典书】Linux UNIX系统编程手册,1554页pdf
专知会员服务
45+阅读 · 2021年2月20日
专知会员服务
91+阅读 · 2020年12月26日
【2020新书】如何认真写好的代码和软件,318页pdf
专知会员服务
63+阅读 · 2020年3月26日
算法与数据结构Python,369页pdf
专知会员服务
162+阅读 · 2020年3月4日
再严重的 Log4j2 漏洞也伤害不了Java?
InfoQ
0+阅读 · 2021年12月26日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
Arxiv
0+阅读 · 2022年4月19日
Chinese Idiom Paraphrasing
Arxiv
0+阅读 · 2022年4月15日
Arxiv
13+阅读 · 2020年10月19日
VIP会员
相关VIP内容
【干货书】《Pydon'ts:编写优雅的Python代码》,263页pdf
专知会员服务
91+阅读 · 2021年11月2日
深度学习赋能的恶意代码攻防研究进展
专知会员服务
29+阅读 · 2021年4月11日
【经典书】Linux UNIX系统编程手册,1554页pdf
专知会员服务
45+阅读 · 2021年2月20日
专知会员服务
91+阅读 · 2020年12月26日
【2020新书】如何认真写好的代码和软件,318页pdf
专知会员服务
63+阅读 · 2020年3月26日
算法与数据结构Python,369页pdf
专知会员服务
162+阅读 · 2020年3月4日
相关基金
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
Top
微信扫码咨询专知VIP会员