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

原文转载自 微信公众号 justjavac

早起看手机,结果发现我的微信群炸了,未读消息 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 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 也都受到了影响。

继上次ESLint被黑后,这又是一起开源社区被黑事件,这不是开源社区安全事件的第一起,但相信也不会是最后一起,谁知道下次受到安全漏洞影响的会不会是自己手里正在使用的开源工具呢?

如何杜绝此类事件的再次发生,开发者除了做好自身安全措施外,相信选择使用葡萄城成熟的商业软件:SpreadJSWijmoJS 是一个更不错的选择,毕竟一家优秀的厂商会为开发者承担所有可能出现的风险这点很重要。最后,让我们祝福他们做的更好。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏菩提树下的杨过

选择一款适合自己的ruby on rails IDE开发工具

用ROR框架做开发,基本上只要SciTE+资源管理器+命令行 就可以了,但如果您确实一时很难忘记IDE环境,而且机器配置又不咋地,建议您重返三剑客时代,找找当年...

2908
来自专栏美团技术团队

美团点评酒店后台故障演练系统

本文由曾鋆、海智、亚辉、孟莹四位作者共同创作完成。 背景介绍 随着海量请求、节假日峰值流量和与日俱增的系统复杂度出现的,很有可能是各种故障。在分析以往案例时我...

5557
来自专栏高性能服务器开发

(八)高性能服务器架构设计总结4——以flamigo服务器代码为例

二、架构篇 一个项目的服务器端往往由很多服务组成,就算单个服务在性能上做到极致,支持的并发数量也是有限的,举个简单的例子,假如一个聊天服务器,每个用户的信息是1...

5104
来自专栏数据和云

五重备份无一有效,还有哪些 rm -rf 和GitLab类似的忧伤?

DBA的悲伤,不是没有做备份,就是没有做有效的备份。日光之下,并无鲜事。 都说一个没有删过数据库的DBA,职业生涯是不完整的,不过当你删过之后,你的DBA生涯可...

4205
来自专栏FreeBuf

来自后方世界的隐匿威胁:后门与持久代理(一)

干了十几年安全工作,发现一些同行只是把简单的工具扫描和渗透测试当成了全部工作,拿到需要的数据及测试结果既为完成工作。可各位兄弟,咱扪心自问,这样的安全测试能叫真...

2675
来自专栏FreeBuf

如何通过WIFI渗透企业内网?

介绍 黑盒渗透测试意味着白帽子对目标网络一无所知。模拟黑客攻击网络,并获取敏感信息。进一步,探索内网,识别内网中的漏洞,通过漏洞访问网络里的重要资源。 目的 在...

3318
来自专栏黑白安全

metasploit渗透终极防御终极方法总结

睡不着就无聊玩玩metasploit攻击,哎让我大失所所望.整来整去是一个垃圾东东.可能对win还用点没有那么多安全防御手段.可是对于linux.bsd简直就是...

1273
来自专栏FreeBuf

如何使用Airgeddon搭建基于软件的WIFI干扰器

Airgeddon是一款能够进行Wi-Fi干扰的多Bash网络审计工具,它可以允许你在未加入目标网络的情况下设置目标,并且断开目标网络中的所有设备。Airged...

35010
来自专栏安恒信息

新型Web劫持技术现身,专攻搜索引擎

近期,安全机构截获了一例利用script脚本进行Web劫持的攻击案例,在该案例中,黑客利用一批新闻页面重置了搜索引擎页面,并将搜索结果替换为自己制作的...

3815
来自专栏FreeBuf

CVE-2015-0393:Oracle发布严重安全漏洞预警

Oracle在本周二发布了本年度第一个安全补丁升级(CPU)公告,随之而来的,还有一些令人不安的漏洞预警。也许这两天运维同学们需要给自家公司的Oracle产品打...

2195

扫码关注云+社区

领取腾讯云代金券