Morphoneme

【漏洞预警】Drupal远程代码执行漏洞CVE-2018-7602

发表时间:2018-05-03 09:43
2018年4月25日,Drupal官方团队发布了一则Drupal远程代码执行漏洞的修复公告,同时发布了该漏洞的最新补丁,此漏洞对应的CVE编号为CVE-2018-7602。由官方公告得知,此次补丁的更新主要是为了进一步修复2018年3月28日Drupal曝出的一个远程代码执行漏洞(CVE-2018-7600)。


千里百科
Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。其中Framework是指Drupal内核中的功能强大的PHP类库和PHP函数库,以及在此基础上抽象的Drupal API。Drupal综合了强大并可自由配置的功能,能支持从个人博客(Personal Weblog)到大型社区驱动(Community-Driven)的网站等各种不同应用的网站项目,应用十分广泛。并且Drupal的代码在安全性、健壮性上具有世界最高水平,使得国外包括美国白宫、美国商务部、纽约时报、[url=https://baike.baidu.com/item/SONY%22%20%5Ct%20%22https://baike.baidu.com/item/Drupal/_blank]SONY[/url]等多家政府以及机构采用建站,在国内,也有许多高校采用Drupal来建设网站。
漏洞描述
2018年3月28日,官方更新了Drupal远程代码执行漏洞(CVE-2018-7600)的补丁,随后两周,研究人员在网上放出了此漏洞的PoC代码。官方最初的修复主要是对用户输入的带#的数组进行过滤,以防止利用Drupal的渲染数组来利用此漏洞进行攻击。从最新的更新补丁来看,之前官方的处置措施已被攻击者绕过,攻击者仍能利用此漏洞对Drupal站点进行攻击。
从此次更新的补丁来看,主要有两部分有大的变化,第一部分变化是对过滤流程的更新:
2018年3月28日更新布丁中新增的class RequestSanitizer类,其中的sanitize函数采用白名单的方式直接利用stripDangerousValues方法将用户的Query string parameters、Request body parameters、Cookie数据进行判定过滤,过滤的方式即将数组中的#去掉。下图中左侧为Drupal v8.5.2版本中的过滤流程,右侧为最新Drupal v8.5.3的sanitize函数过滤流程。


而Drupal v8.5.3版本在过滤流程中新增了步骤processParameterBag、checkDestination。


新版本的过滤过程中所有的请求参数没有在sanitize函数中直接被过滤,而是调用processParameterBag函数,首先将非白名单中的属性进行过滤,即:


在将非白名单参数过滤完之后,还需要将bag对象中包含的destination对应的值通过UrlHelper::parse进行判断,如果destination对应的属性值中存在URL的查询参数数组,也需要进行过滤处理。



第二部分的变化是在/core/modules/file/src/Element/ManagedFile.php中新增了表单调用渲染函数的过滤代码:
$form_parents = array_filter($form_parents, [Element::class, 'child']);



这部分变化主要是在使用AJAX API调用渲染函数的过程中,将$form_parents
进行过滤,然后才进行渲染函数的处理。
所以从补丁中看出,新的攻击可能出现在具有destination属性处,而官方也在表单调用渲染函数的过程中,对表单元素的处理更加的严格。
影响版本
Drupal 7.x
Drupal 8.x

修复建议
Drupal 7.x请升级到Drupal 7.59版本,
同时官方给出7.X补丁,若用户无法立即升级版本,请更新补丁,补丁地址为:

Drupal 8.5.x请升级到Drupal 8.5.3版本
同时官方给出8.X补丁,若用户无法立即升级版本,请更新补丁,补丁地址为:

Drupal 8.4.x版本请升级到8.4.8版本,同时官方给出8.X补丁,若用户无法立即升级版本,请更新补丁,补丁地址为:

友情提示
Drupal 8.0.x、Drupal 8.1.x、Drupal 8.2.x官方已不再维护,请各位用户升级到官方维护的版本。由于此漏洞威胁性很大,请各位用户尽快升级到官方给出的最新版本,以防出现安全风险。

参考链接

深信服解决方案
由于CVE-2018-7602漏洞尚未有可以利用的攻击代码,但是漏洞补丁已经发布,预计漏洞的攻击代码很快公开,千里目安全实验室将持续关注此次漏洞进展,最快速度给出完整的解决方案。

深信服安全云在CVE-2018-7600漏洞爆发之初,已完成CVE-2018-7600漏洞检测更新,对所有用户网站探测,保障用户安全。不清楚自身业务是否存在漏洞的用户,可注册信服云眼账号,获取30天免费安全体验。

注册地址:

深信服下一代防火墙已具备防御CVE-2018-7600漏洞的能力,建议部署深信服下一代防火墙的用户开启WAF模块,可轻松抵御此高危风险。