您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何深入分析macOS漏洞CVE-2019-8507,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
2019年3月25日,蘋果發布了macOS Mojave 10.14.4和iOS 12.2。這兩個版本修復了大量的安全漏洞,其中包括QuartzCore(即CoreAnimation)中的CVE-2019-8507。關于蘋果更新的詳細信息,可以參考這篇【公告】。
在這篇文章中,我們將對macOS中的漏洞CVE-2019-8507進行詳細分析。
QuartzCore,也就是CoreAnimation,它是macOS和iOS用來創建動畫場景的圖形框架。CoreAnimation使用了一種獨特的渲染模型,這種模型會以單獨得進程來進行圖形化操作。在macOS中,這個進程為WindowServer。在iOS中,這個進程為backboard。
QuartzCore中名為com.apple.CARenderServer的服務通常被稱為CARenderServer。這個服務macOS和iOS中都有,可以直接從Safari沙盒環境中訪問。但是,在macOS上,當QuartzCore在處理一個CA::Render::Decoder::decode_shape()函數中的圖形對象時,就會發生內存崩潰(漏洞),這將導致應用程序意外終止運行。
下面給出的是Windows Server進程在遇到問題時的程序崩潰日志:
接下來,我將演示如何使用我們的PoC來觸發該漏洞。PoC代碼如下所示:
原始Mach信息跟修改后的Mach信息對比如下圖所示:
通過對二進制源碼進行分析后,我們發現只需要將偏移量0xB6的在一個字節由0x06修改為0x86,即可觸發該漏洞。
如PoC代碼所示,為了發送專門制作的Mach消息來觸發該漏洞,我們首先需要發送一個msgh_id為40202的Mach消息,服務器中對應的處理器為_XRegisterClient,然后獲取每一個新連接客戶端的鏈接ID。
當我們獲取到了連接ID之后,我們就可以在特質的Mach消息中偏移量0x2C的位置設置這個值了。最后,我們只需要發送這個Mach消息就可以觸發該漏洞了。
接下來,我們將使用LLDB來對漏洞進行動態調試,并分析導致漏洞產生的根本原因。注意:我們需要通過SSH模式來調試WindowServer進程。
通過對崩潰日志進行分析,我們可以獲取到崩潰線程的堆棧回溯信息,并使用下列命令在CA::Render::Server::ReceivedMessage::run_command_stream函數處設置斷點:
conn_id的值可以通過在PoC代碼的第86行設置斷點來獲取。
斷點命中后,我們可以直接讀取特制Mach消息的緩沖區數據,寄存器r13指向的就是特制的Mach消息。
函數CA::Render::Decoder::decode_object(CA::Render::Decoder *this,CA::Render::Decoder *a2)可以用來解碼這種類型的對象數據。開始于偏移量0x70000907dd52處的緩沖區數據為一個圖片對象(綠色高亮標記):
下面的代碼段可以用來解析CA::Render::Decoder::decode_object函數中的圖片對象數據:
下圖顯示的是函數CA::Render::Image::decode(),我添加了部分注釋方便大家查看:
我們可以看到偏移量0x70000907dd52處的一個字節從0x06變為了0x86,所以變量v4現在等于0x86。接下來,程序會跳轉到LABEL_31來執行其他分支代碼,因為變量v4已經大于0x20了。在LABEL_31結尾處,程序會調用CA::Render::Texture::decode(CA::Render::Texture *this,CA::Render::Decoder *a2)函數來繼續處理后續數據。
我們可以看到,它會調用函數CA::Render::Decoder::decode_shape來處理Shape對象數據。
接下來,我們看看其他的數據集是如何處理的。
我們可以看到變量v2等于0x02它可以給緩沖區分配一個8字節大小的區域。最后,它會調用函數CA::Render::Decoder::decode_bytes來解碼多個字節的數據。
導致該問題存在的根本原因在于CA::Render::Decoder::decode_shape函數缺乏限制驗證機制。下面我們看看蘋果方面是如何修復這個漏洞的:
根據蘋果的安全公告,這個漏洞只會影響macOS。該問題存在于QuartzCore中,由于缺少輸入驗證限制,因此當QuartzCore在處理一個CA::Render::Decoder::decode_shape()函數中的圖形對象時,就會觸發該漏洞。通過對比補丁代碼,我們可以看到蘋果通過增強輸入驗證機制修復了該問題。
macOS Mojave 10.14.2macOS Mojave 10.14.3
macOS 10.14.2 (18C54) -MacBook Pro
關于如何深入分析macOS漏洞CVE-2019-8507就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。