中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何深入分析macOS漏洞CVE-2019-8507

發布時間:2021-12-24 21:34:59 來源:億速云 閱讀:153 作者:柒染 欄目:安全技術

這篇文章給大家介紹如何深入分析macOS漏洞CVE-2019-8507,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

如何深入分析macOS漏洞CVE-2019-8507

0x00 寫在前面的話

2019年3月25日,蘋果發布了macOS Mojave 10.14.4和iOS 12.2。這兩個版本修復了大量的安全漏洞,其中包括QuartzCore(即CoreAnimation)中的CVE-2019-8507。關于蘋果更新的詳細信息,可以參考這篇【公告】。

在這篇文章中,我們將對macOS中的漏洞CVE-2019-8507進行詳細分析。

0x01 漏洞概述

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進程在遇到問題時的程序崩潰日志:

如何深入分析macOS漏洞CVE-2019-8507

如何深入分析macOS漏洞CVE-2019-8507

如何深入分析macOS漏洞CVE-2019-8507

如何深入分析macOS漏洞CVE-2019-8507

0x02 PoC概念驗證

接下來,我將演示如何使用我們的PoC來觸發該漏洞。PoC代碼如下所示:

如何深入分析macOS漏洞CVE-2019-8507

如何深入分析macOS漏洞CVE-2019-8507

如何深入分析macOS漏洞CVE-2019-8507

原始Mach信息跟修改后的Mach信息對比如下圖所示:

如何深入分析macOS漏洞CVE-2019-8507

通過對二進制源碼進行分析后,我們發現只需要將偏移量0xB6的在一個字節由0x06修改為0x86,即可觸發該漏洞。

如PoC代碼所示,為了發送專門制作的Mach消息來觸發該漏洞,我們首先需要發送一個msgh_id為40202的Mach消息,服務器中對應的處理器為_XRegisterClient,然后獲取每一個新連接客戶端的鏈接ID。

當我們獲取到了連接ID之后,我們就可以在特質的Mach消息中偏移量0x2C的位置設置這個值了。最后,我們只需要發送這個Mach消息就可以觸發該漏洞了。

0x03 漏洞分析

接下來,我們將使用LLDB來對漏洞進行動態調試,并分析導致漏洞產生的根本原因。注意:我們需要通過SSH模式來調試WindowServer進程。

通過對崩潰日志進行分析,我們可以獲取到崩潰線程的堆棧回溯信息,并使用下列命令在CA::Render::Server::ReceivedMessage::run_command_stream函數處設置斷點:

如何深入分析macOS漏洞CVE-2019-8507

conn_id的值可以通過在PoC代碼的第86行設置斷點來獲取。

斷點命中后,我們可以直接讀取特制Mach消息的緩沖區數據,寄存器r13指向的就是特制的Mach消息。

如何深入分析macOS漏洞CVE-2019-8507

函數CA::Render::Decoder::decode_object(CA::Render::Decoder *this,CA::Render::Decoder *a2)可以用來解碼這種類型的對象數據。開始于偏移量0x70000907dd52處的緩沖區數據為一個圖片對象(綠色高亮標記):

如何深入分析macOS漏洞CVE-2019-8507

下面的代碼段可以用來解析CA::Render::Decoder::decode_object函數中的圖片對象數據:

如何深入分析macOS漏洞CVE-2019-8507

下圖顯示的是函數CA::Render::Image::decode(),我添加了部分注釋方便大家查看:

如何深入分析macOS漏洞CVE-2019-8507

我們可以看到偏移量0x70000907dd52處的一個字節從0x06變為了0x86,所以變量v4現在等于0x86。接下來,程序會跳轉到LABEL_31來執行其他分支代碼,因為變量v4已經大于0x20了。在LABEL_31結尾處,程序會調用CA::Render::Texture::decode(CA::Render::Texture *this,CA::Render::Decoder *a2)函數來繼續處理后續數據。

如何深入分析macOS漏洞CVE-2019-8507

我們可以看到,它會調用函數CA::Render::Decoder::decode_shape來處理Shape對象數據。

接下來,我們看看其他的數據集是如何處理的。

如何深入分析macOS漏洞CVE-2019-8507

我們可以看到變量v2等于0x02它可以給緩沖區分配一個8字節大小的區域。最后,它會調用函數CA::Render::Decoder::decode_bytes來解碼多個字節的數據。

如何深入分析macOS漏洞CVE-2019-8507

導致該問題存在的根本原因在于CA::Render::Decoder::decode_shape函數缺乏限制驗證機制。下面我們看看蘋果方面是如何修復這個漏洞的:

如何深入分析macOS漏洞CVE-2019-8507

0x04 總結

根據蘋果的安全公告,這個漏洞只會影響macOS。該問題存在于QuartzCore中,由于缺少輸入驗證限制,因此當QuartzCore在處理一個CA::Render::Decoder::decode_shape()函數中的圖形對象時,就會觸發該漏洞。通過對比補丁代碼,我們可以看到蘋果通過增強輸入驗證機制修復了該問題。

0x05 受影響版本

macOS Mojave 10.14.2macOS Mojave 10.14.3

0x06 漏洞分析環境

macOS 10.14.2 (18C54) -MacBook Pro

關于如何深入分析macOS漏洞CVE-2019-8507就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

日土县| 江门市| 亚东县| 威海市| 盐源县| 青海省| 沙坪坝区| 喀喇沁旗| 甘南县| 陆河县| 侯马市| 北宁市| 雅江县| 泸西县| 安图县| 全州县| 梁平县| 中山市| 景洪市| 岑溪市| 开平市| 吉安县| 始兴县| 鄄城县| 辽宁省| 出国| 苍梧县| 金阳县| 荃湾区| 定日县| 湘潭县| 南陵县| 三穗县| 克东县| 黔江区| 通化县| 汝阳县| 旬阳县| 德清县| 江津市| 泾阳县|