Rail ActionPack参数解引发多种漏洞

Rails框架曝出严重安全漏洞CVE-2013-0156,该漏洞可导致远程执行任意代码,影响广泛。漏洞源于XML解析过程中对内嵌YAML文件的不当处理,使得攻击者能构造恶意请求,进而执行任意Ruby或Shell命令。

1月8日,Rails团队核心成员Aaron Patterson公布了CVE-2013-0156,这是一个由ActionPack参数解引发的多种漏洞,并且影响版本十分广泛,包括3.0、3.1、3.2以及很久没有更新的2.3系列。

\

漏洞的影响

\
  • 绕过授权系统\
  • 注入任意SQL语句\
  • 拒绝服务攻击\
  • 执行任意Ruby代码\

其中,可以远程执行任意Ruby代码(当然包括Shell命令,因为Ruby可以调用系统Shell命令)这一漏洞让大部分开发者和网站感到恐慌,一些网站采取下线的极端应对措施,其中包括荷兰政府的公民数字身份网站

\

Webrat的作者@brynary在他的博客 中总结了这次漏洞的严重性:

\
  • 可利用性:容易,攻击脚本随处都可以找到,并且容易使用,只需要传入攻击目标网站的URL和想要执行的代码;\
  • 影响范围:广泛,所有没升级到最新版本的Rails项目都受到影响;\
  • 可检测性:容易,不需要和应用相关的知识,就可以实施自动化扫描来检测目标网站是否存在此漏洞;\
  • 技术上的影响:严重,攻击者可以应用服务器的权限执行任何Ruby(当然也可以是Shell) 脚本,从而劫持整个主机;\
  • 商业上的影响:严重,数据可以被窃取,服务器资源可以被攻击者用作恶意用途。\

漏洞产生原理

\
  1. Rails在解析XML的时候是会解析XML里内嵌的YAML文件的,这要追溯到这个补丁。\
  2. Ruby的YAML Parser可以创建出任意对象,只要这个类在程序内存中有定义。\

这样,攻击者就可以通过提交一个XML文件,通过XML里内嵌的YAML文件来创建一个含有不安全代码的对象,利用Rails内部的实现细节触发代码执行来实施攻击。这里是ronin提供的漏洞利用的详细代码:https://gist.github.com/4499206

\

漏洞防御措施

\

如果是Rails3项目,直接升级到最新版本。如果是Rails2.3项目,升级到最新版本比较麻烦,可以在项目初始化加载时添加下面两行代码:

\
\ActiveSupport::CoreExtensions::Hash::Conversions::XML_PARSING.delete('symbol') \ActiveSupport::CoreExtensions::Hash::Conversions::XML_PARSING.delete('yaml') \
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值