最新 RTF RCE 漏洞 CVE-2023-21716 分析


背景
微軟在 2 月 14 日發(fā)布的補丁修復了一個 CVSS v3.1 高達 9.8 分的 Microsoft Word 遠程代碼執(zhí)行漏洞,該漏洞是 Microsoft Word 的 RTF 解析器在處理 rtf 文件字體表(\fonttbl)中包含的過多字體(\fN)時產(chǎn)生的堆損壞漏洞,而堆損壞是由處理字體時的匯編指令 movsx 導致的整數(shù)溢出引起的。近日漏洞發(fā)現(xiàn)者 Joshua J. Drake 公布了漏洞的 POC,360 沙箱云團隊第一時間使用該 POC 進行了漏洞復現(xiàn)與分析,并就此漏洞的觸發(fā)路徑和指令在沙箱云檢測引擎中增加檢測方案,保護用戶免遭此漏洞的威脅。
分析環(huán)境
Windows 10 x64 1607
Office 2016,Windbg,IDA Pro 7.5
wwlib(16.0.4266.1003)
POC
POC.rtf 使用 Joshua J. Drake 提供的 python 腳本生成。
POC.rtf 的內(nèi)容較為簡單,僅包括 \rtfN、\fonttbl、\fN 和 \rtlch 控制字,此次漏洞發(fā)生在 rtf 解釋器 wwlib 模塊處理 \fonttbl 和 \fN 控制字時,POC.rtf 內(nèi)容如下。
crash 現(xiàn)場
對 winword.exe 開啟頁堆,可以得到以下的?;厮?。
通過?;厮莸玫揭韵抡{(diào)用鏈,由于沒有 wwlib.dll 模塊的符號只簡單的揣測了一下幾個關鍵函數(shù)的作用。

根本原因分析
查看 crash func(sub_102F0020) 及崩潰地址處的上下文,經(jīng)過一番調(diào)試摸清了 sub_102F0020 函數(shù)的參數(shù)意義和崩潰原因。
sub_102F0020 函數(shù)用于處理 fond id 也就是 /fN 中的 N,其會將 fond id 和 codepage value 存儲在一個由 Cum 和 Base 計算偏移的地址上。Base 的初始值是 0xa,且每當處理了 0xa 個 fond id 就會累加 0xa。

存儲 fond id 和 codepage value 的代碼片段同時也是 crash 時的上下文。
在上述代碼片段中下 4 個斷點查看存儲過程,注意各寄存器對應關系。
崩潰前斷點記錄到的存儲過程信息。
觀察記錄及斷點處的匯編代碼,發(fā)現(xiàn)崩潰是由 bp2 處的 movsx 指令引起的整數(shù)溢出導致。

由上圖中的記錄 2 可以發(fā)現(xiàn),bp2 處獲得的 Base 由 0x8002 變?yōu)榱?edx 中的 0xffff8002,變化的原因是 movsx 指令是帶符號擴展的,而 0x8002 的最高位又恰好為 1。這也就導致 bp3 處的 edx 和 bp4 處的 Target addr 整數(shù)溢出,并最終在 bp4 處發(fā)生堆損壞。

Target addr 整數(shù)溢出。

補丁分析
將 Office 更新到最新后再次打開 POC.rtf 發(fā)現(xiàn)依然會造成崩潰,不過此崩潰是 winword.exe 提前檢測到即將造成堆損壞而主動引發(fā)的,另外發(fā)現(xiàn)微軟提供了此版本 wwlib.dll 的符號文件,此棧回溯與之前的基本一致。
補丁文件中新增的范圍檢測。

沙箱云檢測
沙箱中未添加檢測規(guī)則時檢測到的由 POC.rtf 文件引起的 Microsoft Word 進程崩潰,崩潰記錄與我們的 crash 現(xiàn)場一致。

經(jīng)過對漏洞的分析后為沙箱添加檢測規(guī)則,沙箱云已能精確檢出該漏洞。

全新版本的360沙箱云高級威脅分析平臺已發(fā)布!歡迎使用:ata.360.net
參考文章
https://qoop.org/publications/cve-2023-21716-rtf-fonttbl.md
關于我們
360沙箱云是 360 安全情報中心旗下的在線高級威脅分析平臺,對提交的文件、URL,經(jīng)過靜態(tài)檢測、動態(tài)分析等多層次分析的流程,觸發(fā)揭示漏洞利用、檢測逃逸等行為,對檢測樣本進行惡意定性,彌補使用規(guī)則查殺的局限性,通過行為分析發(fā)現(xiàn)未知、高級威脅,形成高級威脅鑒定、0day 漏洞捕獲、情報輸出的解決方案;幫助安全管理員聚焦需關注的安全告警,經(jīng)過安全運營人員的分析后輸出有價值的威脅情報,為企業(yè)形成專屬的威脅情報生產(chǎn)能力,形成威脅管理閉環(huán)。解決當前政企用戶安全管理困境及專業(yè)安全人員匱乏問題,沙箱云為用戶提供持續(xù)跟蹤微軟已紕漏,但未公開漏洞利用代碼的 1day,以及在野 0day 的能力。

360混天零實驗室負責高級威脅自動化檢測項目和云沙箱技術研究,專注于通過自動化監(jiān)測手段高效發(fā)現(xiàn)高級威脅攻擊;依托于 360 安全大數(shù)據(jù),多次發(fā)現(xiàn)和監(jiān)測到在野漏洞利用、高級威脅攻擊、大規(guī)模網(wǎng)絡掛馬等危害網(wǎng)絡安全的攻擊事件,多次率先捕獲在野利用 0day 漏洞的網(wǎng)絡攻擊并獲得廠商致謝,在野 0day 漏洞的發(fā)現(xiàn)能力處于國內(nèi)外領先地位,為上億用戶上網(wǎng)安全提供安全能力保障。