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

电子说

1.2w人已加入

描述

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

今天 NPM 圈又炸锅了,因为一个广泛使用的依赖库 event-stream 在被原维护者 Dominic Tarr 转让给 right9ctrl 之后被植入了窃取比特币的后门。这意味着使用到该模块的开发者们,其设备或许早在不知情的情况下变成了挖矿设备了。

我们是怎么一步一步掉坑的?

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

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

@dominictarr:

(@right9ctrl)他发邮件给我,说他想维护这个模块,于是我把模块所有权移交给了他。我没有从这个模块得到任何回报,而且我已经好久不使用这个模块了,大概有好几年了吧。

9 月 8 日,新维护者@right9ctrl 开始了初步动作,首先释出了 event-stream 3.3.6 版本的更新,并在其中加入了一个全新的模块——flatmap-stream,彼时这个模块中并没有恶意功能。

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

10 月 5 日,flatmap-stream 0.0.1 版本被一个名为“hugeglass”的用户推送到了 NPM。而这次释出的更新中该模块就被加入了窃取比特币钱包并转移出余额的功能。

因此,自 10 月 5 日以来,任何通过 event-stream 库并使用被植入恶意代码 flatmap-stream 的开发者都可能受到恶意脚本的攻击。而据统计,自 2018 年 9 月更新以来,恶意包已下载近 800 万次。且原作者也无奈地表示,自己也没有权限去修改。

event-stream 原作者的回应

收到其他开发者的谴责后,event-stream 原作者 Dominic Tarr 在 GitHub 上发表声明做出了回应。

https://gist.github.com/dominictarr/9fd9c1024c94592bc7268d36b8d83b3a

大意如下:

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

为什么要把这个软件包项目交给一个陌生人?

因为当它不再有趣,你从维护中得不到任何东西。一开始他并没有从 right9ctrl 身上感受到恶意,他以为这是一位真心想帮助他的人。

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

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

如何知道是否中招了?该怎么办?

目前对于开发者受到此漏洞的影响程度尚未可知,但是当前我们的首要任务还是检查自己是否使用了相关的恶意库,例如运行以下代码:

$ npm ls event-stream flatmap-stream...flatmap-stream@0.1.1...

如果在输出里面包含了 flatmap-stream 则说明你也可能被攻击。

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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分