今日要闻

AdobeReader类型混淆导致代码执行漏洞分析

2018-09-22 19:11 来源:laishu.com 作者:Laishu
导读: 概述我们发现,在ZDI漏洞项目中提交的漏洞中,最常见的就是影响PDF文档的漏洞,而在这些漏洞中,大多数都涉及到AdobeReader。因此,我们挑选了这些AdobeRea...

概述

我们发现,在ZDI漏洞项目中提交的漏洞中,最常见的就是影响PDF文档的漏洞,而在这些漏洞中,大多数都涉及到Adobe Reader。因此,我们挑选了这些Adobe Reader中最有代表性的漏洞,进行详细地分析。在Adobe Reader 2018年7月发布的更新中,包含CVE-2018-12794/ZDI-18-682的补丁。这一漏洞由Sebastian Apelt发现,并且提交了一份质量非常高的漏洞详情。

漏洞成因

产生这一漏洞的根本原因是类型混淆条件(Type Confusion Condition)。通过构建XML数据包(XML Data Package,XDP)模版,并对XML表单体系结构(XML Forms Architecture,XFA)对象执行某些JavaScript操作,攻击者就可以强制Adobe Reader从模版对象的边界引用数据。成功之后,将会在沙盒渲染器进程中实现代码执行。

漏洞详情

触发此漏洞所需的XDP模版非常简单:

该漏洞由两条JavaScript指令触发。通过将一个子表单附加到另一个子表单,我们可以触发底层Template对象的越界(Out-Of-Bounds)读取错误。在这种情况下,当一个子表单由xfa.template引用,一个由xfa.form引用,随后调用calling .presence = “inactive”;时,就会产生漏洞。

启用页堆(Page Heap)后,在读取Template对象过程中发生越界读取时,就会在CMP指令的位置发生崩溃。虽然该对象的大小似乎只有0x140字节,但我们在偏移量0x1d0处取消引用的数据超出了缓冲区的边界。

深入分析

根据崩溃情况,我们唯一能够知道的是对象类型为0x7c00。通过查看Solaris 9.4.1中acroform.api的符号化版本,我们可以看到这个特定的类型id属于XFATemplateModelImpl对象,它只是来自底层XDP的“Template”对象:

回到非符号化的Windows版本的acroform.api,我们可以确认Template对象的大小为0x140字节,这也是从上面引用的越界对象的大小。我们只需要几个步骤,就能够找到它的大小:

1、在Acroform.api中找到静态变数0x7c00并查找XFATemplateModelImpl::Type方法。

2、通过前后参照,我们得到XFATemplateModelImpl虚函数表(Vtable)。

3、对虚函数表进行前后参照(Xref),得到构造函数。

4、对构造函数进行前后参照,并向上滚动几行,将会展示出对象的大小,即0x140字节:

由于我们导致Template对象的越界读取,因此可以推测,代码正在期望一个更大的对象,而不是Template对象。同时,这一点也说明了在这里发生了类型混淆的问题。最有可能的情况就是,类型混淆的问题发生在xfa.template和xfa.form对象之间。尽管xfa.template的大小为0x140字节,但xfa.form对象的大小为0x270字节。

漏洞利用

我们无法在Template对象实例化之前去执行JavaScript代码,因此控制其崩溃并非一件容易的事。为了实现这一点,在XDP解析发生之前,需要在PDF解析过程中或其他受控制的数据处理期间,利用漏洞进行可以控制的分配和释放。控制崩溃发生的另一种方法,是构建一个PDF,其中包含能触发漏洞的附加PDF。Feng shui这个堆必须发生在外部PDF中,并触发内部(附加的)PDF中的漏洞。在这里,要使其以执行JavaScript代码的方式打开附加的PDF,还需要对许可权进行提升。因此,该方法可能对大多数用户都无效。

实际上,也可以在没有页堆的情况下,执行poc.pdf来观察可以控制崩溃发生的情况。由于读取了Unicode字元的一部分,并将其用作指针,最终会导致其发生崩溃。以下是不使用页堆情况下的崩溃输出:

结论

如果大家想要自行测试这一漏洞,PoC位于:https://github.com/thezdi/PoC/tree/master/CVE-2018-12794 。该漏洞应该适用于2018.011.20040版本之前的Adobe Reader。

纵观我们今年发布的通告,我们发现其中有许多与PDF相关的漏洞。Adobe Reader可能是漏洞数量最多的PDF浏览器,同时Foxit中也存在大量漏洞。由于Adobe Reader被很多操作系统作为默认PDF渲染器使用,因此也不难解释,为什么众多调查人员都在针对Adobe Reader寻找漏洞。

在之后,我们还将持续关注其安全性,请大家继续跟随我们了解最新的漏洞利用技术和安全补丁情况。





声明: 凡注明为其他媒体来源的信息,均为转载自其他媒体,转载并不代表本网赞同其观点,也不代表本网对其真实性负责。如系原创文章,转载请注明出处; 您若对该稿件内容有任何疑问或质疑,请即联系,本网将迅速给您回应并做处理。邮箱:mail@laishu.com

为您推荐

今日要闻

潮鞋品牌

风水知识

健康知识

母婴知识

膳食指南

星座解读

命理运势

养生保健

美食资讯

热点资讯

体育新闻

综合资讯