歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

從BinDiff到0day:IE瀏覽器UAF漏洞分析

來源:本站整理 作者:佚名 時間:2019-09-17 TAG: 我要投稿

去年6月份,我向微軟報告了IE瀏覽器中的一個UAF(釋放后重用)漏洞,漏洞被官方定位嚴重級別,編號為CVE-2019-1208,微軟在9月份的周二補丁日修復了這個漏洞。我通過BinDiff(一款二進制代碼分析工具)發現了這個缺陷,編寫了一個PoC來演示如何在Windows 10 RS5系統中利用該漏洞。

本文簡要介紹了這個漏洞研究過程,如果想深入分析該漏洞,大家可參考這篇技術簡報

0x01 CVE-2019-1208
前面提到過,CVE-2019-1208是一個UAF漏洞。這類安全問題會破壞數據有效性、導致進程崩潰,并且攻擊者可以根據漏洞觸發方式來執行任意代碼或者遠程代碼。一旦成功利用CVE-2019-1208漏洞,攻擊者就可以獲得系統中與當前用戶的相同權限。如果當前用戶具備管理員權限,那么攻擊者就可以劫持受影響的系統,比如安裝或者卸載程序、查看并修改數據來創建具備完整權限的用戶賬戶等。
 
0x02 潛在影響
在比較直觀的攻擊場景中,攻擊者可以通過社會工程學方式向未知用戶發送釣魚郵件,誘導用戶通過IE瀏覽器訪問(包含CVE-2019-1208利用代碼的)惡意站點即可。此外,攻擊者也可以發送垃圾郵件,附件中包含該漏洞的利用代碼。這些附件可以是啟用了IE渲染引擎的微軟Office文檔,或者包含ActiveX控件的應用程序文件,然后在控件中包含漏洞利用代碼。攻擊者同樣可以攻破與用戶有數據交互(比如廣告數據)的合法網站后,在上面托管利用代碼。

圖1. VbsJoin代碼執行流
 
0x03 發現過程
故事源自于BinDiff,當時我想比較下微軟在5月份和6月份的vbscript.dll中函數做了哪些改動(vbscript.dll是包含VBScript引擎相關API函數的一個模塊)。我發現微軟在SafeArrayAddRef、SafeArrayReleaseData以及SafeArrayReleaseDescriptor這幾個函數上做了改動。
進一步研究后,在之前自己發現的另一個漏洞(CVE-2018-8373)的啟發下,我通過如下步驟,使用VBScriptClass觸發了一個UAF問題:
1、arr = Array(New MyClass):創建一個SafeArray,將VBScriptclass: MyClass保存在arr[0]中;
2、Callback: arr = Array(0):Join(arr)會觸發MyClass的Public Default Property Get回調函數。這個回調中會為變量arr創建一個新的SafeArray。如圖1所示,新的SafeArray并沒有受SafeArrayAddRef函數保護。因此,瀏覽器正常設想的代碼流會被這個回調函數打破;
3、arr(0) = Join(arr):當從Public Default Property Get回調函數返回后,VbsJoin的代碼執行流將調用SafeArrayReleaseData以及SafeArrayReleaseDescriptor來減少SafeArrayData以及SafeArrayDescriptor的引用計數。然而,新的SafeArray不受SafeArrayAddRef保護,且SafeArrayData以及SafeArrayDescriptor的引用計數為0。因此,新的SafeArray的SafeArrayData以及SafeArrayDescriptor會在SafeArrayReleaseData以及SafeArrayReleaseDescriptor函數中釋放,如圖2所示。

[1] [2]  下一頁

【聲明】:黑吧安全網(http://www.fhetww.live)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        江西十一选五走势图爱彩乐