溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行PDF漏洞CVE-2018-12794的淺析

發(fā)布時(shí)間:2021-12-18 18:20:07 來源:億速云 閱讀:151 作者:柒染 欄目:網(wǎng)絡(luò)管理

如何進(jìn)行PDF漏洞CVE-2018-12794的淺析,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

 漏洞簡(jiǎn)介 

CVE-2018-12794屬于類型混淆漏洞,產(chǎn)生漏洞原因是通過構(gòu)建XML數(shù)據(jù)包(XML Data Package,XDP)模版,并對(duì)XML表單體系結(jié)構(gòu)(XML Forms Architecture,XFA)對(duì)象執(zhí)行某些JavaScript操作,攻擊者就可以強(qiáng)制Adobe Reader從模版對(duì)象的邊界引用數(shù)據(jù)。

2018年7月份,Adobe補(bǔ)丁更新:

漏洞基本信息

漏洞ID:CVE-2018-12794

漏洞名稱:PDF類型混淆漏洞

漏洞類型:遠(yuǎn)程代碼執(zhí)行

威脅類型:類型混淆

影響版本:影響2018.011.20040及之前版本

 漏洞測(cè)試 

系統(tǒng)環(huán)境:Win7 32

Adobe Reader:2018.011.20040

PoC:https://github.com/thezdi/PoC/tree/master/CVE-2018-12794

 PoC分析 

XML Data Package(XDP)是Adobe Systems創(chuàng)建的XML 文件格式。該格式允許將PDF內(nèi)容或Adobe XML Forms Architecture(XFA)資源打包在XML 容器中。XDP符合XML 1.0的規(guī)范,可以作為獨(dú)立文檔,也可以在PDF文檔中攜帶。XDP提供了一種在XML容器中打包表單組件的機(jī)制,XDP還可以打包PDF文件以及XML表單和模板數(shù)據(jù)。

如何進(jìn)行PDF漏洞CVE-2018-12794的淺析

第1個(gè)object流對(duì)象里面的XFA(XML Forms Architecture)對(duì)象會(huì)執(zhí)行Java代碼,該代碼會(huì)操作sub1和sub2,先將sub1添加為xfa.template對(duì)象,sub2添加為xfa.from對(duì)象,然后將sub2附加到sub1。

如何進(jìn)行PDF漏洞CVE-2018-12794的淺析

最后執(zhí)行Java代碼將o2的presence屬性設(shè)置為inactive ,該屬性的含義為隱藏對(duì)象并將其從事件處理中排除。在執(zhí)行該操作的時(shí)候?qū)⒂|發(fā)crash。

 調(diào)試分析 

通過gflags 開啟頁堆后,用Windbg附加Adobe Acrobat DC打開PoC文件。程序會(huì)停在發(fā)生crach的位置。

如何進(jìn)行PDF漏洞CVE-2018-12794的淺析

從上面調(diào)試信息中可以看到,異常出現(xiàn)在AcroForm.api模塊,ecx的值異常導(dǎo)致程序crash,通過?;厮菘梢远ㄎ坏絚rash的上一層函數(shù)AcroForm!PlugInMain+0x979f1,反匯編該函數(shù)并觀察ecx的值(ecx的值是直接傳入crash函數(shù)使用)。

如何進(jìn)行PDF漏洞CVE-2018-12794的淺析

反匯編代碼后發(fā)現(xiàn)ecx的值來自[eax+esi*8],而esi只是一個(gè)偏移且為0,故ecx的值與eax有關(guān),來自[edi+1d4h]。該地址的值是一些字符串,由此推測(cè),是把該字符串的值當(dāng)成了指針來引用,從而導(dǎo)致crash。

如何進(jìn)行PDF漏洞CVE-2018-12794的淺析

經(jīng)多次調(diào)試發(fā)現(xiàn)[edi+1d4h]每次的值都不同,這個(gè)地址的值是未知的,如下圖。

如何進(jìn)行PDF漏洞CVE-2018-12794的淺析

使用堆命令查看edi所在的空間大小為140h,猜測(cè)是一個(gè)對(duì)象指針或者一塊申請(qǐng)的內(nèi)存空間,而[edi+1d4h]顯然已經(jīng)是越界訪問。

如何進(jìn)行PDF漏洞CVE-2018-12794的淺析

從代碼中知道為XFA對(duì)象,使用uf poi(poi(對(duì)象地址)+8)的命令可以顯示出Type-IDs。

類型為7C00h,說明了該堆塊保存的就是一個(gè)XFA對(duì)象。

通過交叉引用得到 XFATemplateModelImpl  的虛表,再通過交叉引用構(gòu)造函數(shù)就能找到這個(gè)對(duì)象大小為 140h 字節(jié)。

在XFATemplateModelFactoryImpl::newModel函數(shù)中可以看到申請(qǐng)了140h字節(jié)的空間,從函數(shù)名猜測(cè)這里是new一個(gè)大小為140h的Template對(duì)象。

在虛表進(jìn)行交叉引用可定位到相應(yīng)的初始化Form對(duì)象的地址,F(xiàn)orm對(duì)象申請(qǐng)的空間大小是270h, [edi+1d4h]的地址實(shí)際應(yīng)該是讀取的Form對(duì)象中的值,Template對(duì)象大小是140h,所以漏洞的根本原因是代碼在處理Template對(duì)象時(shí)使用了Form對(duì)象的函數(shù)進(jìn)行處理,造成了類型混淆漏洞。

看完上述內(nèi)容,你們掌握如何進(jìn)行PDF漏洞CVE-2018-12794的淺析的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

pdf
AI