【导读】: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-stream3.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 社区是很流行的。
他认为有两种方法解决这个问题:给维护者钱,或者使用者也应该承担部分维护的责任。
如何知道是否中招了?该怎么办?
目前对于开发者受到此漏洞的影响程度尚未可知,但是当前我们的首要任务还是检查自己是否使用了相关的恶意库,例如运行以下代码:
$npmlsevent-streamflatmap-stream...flatmap-stream@0.1.1...
如果在输出里面包含了 flatmap-stream 则说明你也可能被攻击。
倘若确认受到了影响,接下来你首先要做的是从应用程序中删除恶意软件包,可以通过恢复到 event-stream版本 3.3.4 来执行此操作。
扬尘监测设备可以实时监测扬尘
11月自动驾驶行业发展取得了哪些新成果?
LED手电筒DIY自制
关于电压控制晶体振荡器的介绍
高性价比四核平板 谷歌Nexus 7报1750元
月下载量800万的开源库被植入比特币后门
华为P30系列用这几招防伪基站
30个月的秘密筹备后,“未来酒店菲住布渴”开业了
智能矩阵式LED汽车大灯-精准控制每束LED光线的技术
苹果在国内市场销量上表现并不突出,但利润远超国产手机
RISC-V发展以及中科院RISC-V开源处理器“香山”介绍
SK电讯正式进入了车载信息娱乐系统开发领域
如何选择正确的嵌入式操作系统类型
如何利用张量提升内存使用效率
索尔维创新研发出了矩形电磁线用材KetaSpire PEEK
让你一次看懂汽车工作原理,史上最强科普!
三菱plc基本指令介绍
盘点手机上的奇葩APP
投行KeyBanc:推特营收有望超预期,从“减持”上调其评级至“增持”
中芯国际发布了2019年年度销售业绩报告