17611538698
webmaster@21cto.com

可怕!月下载量 800 万的开源库被植入比特币后门

资讯 0 2270 2018-12-01 11:57:06

21CTO导读:npm 成也依赖,坑也依赖!2016 年 3 月,npm 就炸锅一次。一个 npm 模块的开发者撤回了自己的代码,导致诸如react 和 babel 等大量重要项目出问题了。 


cover-npm-publish.png


11 月 27 日npm圈又炸锅了,因为一个广泛使用的依赖库 event-stream 在被原维护者dominic tarr转让给right9ctrl之后被植入了窃取比特币的后门。
 
我们是怎么一步一步掉坑的?

event-stream 是一个用于处理 node.js 流数据的 java npm 包,它使得创建和使用流变得容易,正是因此,它也受到了广大开发者的欢迎,目前这个库每周有 200 万的下载量。

数月前,event-stream库的作者者@dominictarr 因为缺乏时间和兴趣无法继续维护这个库了,于是就将该库转让给了一个完全不认识却又想要维护的陌生人@right9ctrl ,噩梦就此开始了。

@dominictarr:
(@right9ctrl)他发邮件给我,说他想维护这个模块,于是我把模块所有权移交给了他。我没有从这个模块得到任何回报,而且我已经好久不使用这个模块了,大概有好几年了吧。
 
/uploads/fox/01161200_0.jpeg
 
9 月 8 日,新维护者@right9ctrl 开始了初步动作,首先释出了 event-stream 3.3.6 版本的更新,并在其中加入了一个全新的模块——flatmap-stream,彼时这个模块中并没有恶意功能。

9 月 16 日,@right9ctrl 重写了代码并删除了对 flatmap-stream 的依赖,之后又推出新版本,这意味着更新不会自动升级。

10 月 5 日,flatmap-stream 0.0.1 版本被一个名为“hugeglass”的用户推送到了 npm。而这次释出的更新中该模块就被加入了窃取比特币钱包并转移出余额的功能。
 
/uploads/fox/01161200_1.jpeg
 
因此,自 10 月 5 日以来,任何通过 event-stream 库并使用被植入恶意代码 flatmap-stream 的开发者都可能受到恶意脚本的攻击。而据统计,自 2018 年 9 月更新以来,恶意包已下载近 800 万次。且原作者也无奈地表示,自己也没有权限去修改。
 
/uploads/fox/01161200_2.png
 
event-stream原作者的回应

收到其他开发者的谴责后,event-stream 原作者dominic tarr在 github 上发表声明做出了回应。
https://gist.github.com/domini ... 83b3a

大意如下:
使用者将维护的负担压在作者身上,而他开发这个库不是出于利他动机,是因为好玩。从开发中学习并获得乐趣,将维护交给另一个人是因为分享也是一种学习。

为什么要把这个软件包项目交给一个陌生人?
因为当它不再有趣,你从维护中得不到任何东西。一开始他并没有从 right9ctrl 身上感受到恶意,他以为这是一位真心想帮助他的人。

与其他贡献者分享 commit access/publish 权力在 node/npm 社区是很流行的。

他认为有两种方法解决这个问题:给维护者钱,或者使用者也应该承担部分维护的责任。

如何知道是否中招了?该怎么办?
目前对于开发者受到此漏洞的影响程度尚未可知,但是当前我们的首要任务还是检查自己是否使用了相关的恶意库,例如运行以下代码:
$ npm ls event-stream flatmap-stream
...
flatmap-stream@0.1.1
...
如果在输出里面包含了 flatmap-stream 则说明你也可能被攻击。

倘若确认受到了影响,接下来你首先要做的是从应用程序中删除恶意软件包,可以通过恢复到 event-stream 版本 3.3.4 来执行此操作。

综合自:csdn + solidot


评论