月下载量千万的npm包被黑客篡改,Vue开发者可能正在遭受攻击

栏目: 编程语言 · 发布时间: 5年前

内容简介:今天早起看手机,结果发现我的微信群炸了,未读消息 999+,大家都在讨论 event-stream 事件。打开 twitter 也是被这个刷屏了。于是翻看了一下 GitHub issue,大概知道了事情的原委。用户 @FallingSnow 在 GitHub 上为 event-stream 仓库创建了一个 issue,标题为:"I don't know what to say.",翻译过来大概就是“我也是很无语了”。因为 event-stream 包突然多出了一个名为 flatmap-stream 的依赖

今天早起看手机,结果发现我的微信群炸了,未读消息 999+,大家都在讨论 event-stream 事件。打开 twitter 也是被这个刷屏了。

于是翻看了一下 GitHub issue,大概知道了事情的原委。

用户 @FallingSnow 在 GitHub 上为 event-stream 仓库创建了一个 issue,标题为:"I don't know what to say.",翻译过来大概就是“我也是很无语了”。因为 event-stream 包突然多出了一个名为 flatmap-stream 的依赖项,而这个依赖项正在窃取用户的数字货币。

event-stream 被很多的前端流行框架和库使用,每月有几千万的下载量。在 Vue 的官方脚手架 vue-cli 中也使用了这个依赖,作为最流行的前端框架之一,这个影响还是挺大的。而 React 则躲过了以此影响。

flatmap-stream 中的恶意代码会扫描用户的 nodemodules 目录,因为所有从 npm 下载的模块都会放在此目录。如果发现了在 nodemodules 存在特定的模块,则将恶意代码注入进去,从而盗取用户的数字货币。

如果想查看自己的项目是否受到影响,可以运行:

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

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

如果使用 yarn 则可以运行:

$ yarn why flatmap-stream

根据 issue 的描述,这次事件还非常具有戏剧性,因为攻击者(@right9ctrl)在大概 3 个月前明目张胆的添加了攻击代码,并提交到了 GitHub,随后发布到了 npm。于是 @FallingSnow 在 GitHub 上询问“为什么 @right9ctrl 有这个项目的访问权限呢?”

@dominictarr Why was @right9ctrl given access to this repo? He added flatmap-stream which is entirely (1 commit to the repo but has 3 versions, the latest one removes the injection, unmaintained, created 3 months ago) an injection targeting ps-tree. 

不久这个仓库的所有者(@dominictarr)给出了一个让人哭笑不得的回复:

月下载量千万的npm包被黑客篡改,Vue开发者可能正在遭受攻击

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

而且:我已经没有发布这个模块的权限了。

作者已经把这个模块移交给了黑客。

$ npm owner ls event-stream
right9ctrl <right9ctrl@outlook.com>

从 GitHub 的提交记录也可以看到,作者(@dominictarr)最后一次提交代码是去年 10 月。而之后黑客 @right9ctrl 也一直在维护此模块。但是在 3 个月前,黑客在 GitHub 上新建了一个 flatmap-stream 仓库(内含恶意代码),并在这个项目中引用了自己的仓库。

直到几天前这个有漏洞的仓库才被发现,然后 npm 紧急将这个含有恶意代码的 flatmap-stream 模块删除了。

这段恶意代码目前还能在 GitHub 上看到,感兴趣的可以自己去分析。攻击者还是挺有心机的。

在评论区也出现了对 @dominictarr 的指责,轻易的将一个周下载量百万级别的模块移交给了陌生人去维护。但是熟悉 @dominictarr 的人都知道,虽然 @dominictarr 不如 tj 大神那么高产,但是 @dominictarr 也维护着 400 多个 npm 包,而维护这么多包无疑花费了很多的时间和精力。

虽然我们不知道黑客(@right9ctrl)发送的邮件是如何写的,但是无容置疑的是,这封邮件使其获得了 @dominictarr 的信任,再加上 @dominictarr 已经好久不使用这个包了,因此将所有权转移给了黑客(@right9ctrl)。

而这次漏洞事件,也让我们回过头来重新反省 node.js 社区。

最后再次提醒:如果你是 vue 开发者,请务必检查一下自己的项目。即使你不是 vue 开发者,最好也检查一下,因为很多流行模块比如 nodemon、npm-run-all、ps-tree 也都受到了影响。

声明:本文来自justjavac,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如需转载,请联系原作者获取授权。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

支持向量机

支持向量机

邓乃扬、田英杰 / 科学出版社 / 2009-8 / 48.00元

《支持向量机:理论、算法与拓展》以分类问题(模式识别、判别分析)和回归问题为背景,介绍支持向量机的基本理论、方法和应用。特别强调对所讨论的问题和处理方法的实质进行直观的解释和说明,因此具有很强的可读性。为使具有一般高等数学知识的读者能够顺利阅读,书中首先介绍了最优化的基础知识。《支持向量机:理论、算法与拓展》可作为理工类、管理学等专业的高年级本科生、研究生和教师的教材或教学参考书,也可供相关领域的......一起来看看 《支持向量机》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具