您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)APPLE MACOS內(nèi)核OOB寫入權(quán)限提升漏洞CVE-2020-27897的示例分析的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
僅供參考學(xué)習(xí)使用。
用戶空間和英特爾內(nèi)核驅(qū)動(dòng)程序之間的通信是使用IOConnectCallMethod完成的,而IOConnectCallMethod最終還會(huì)使用Mach消息。IntelMTRenderFunctions是一個(gè)類,它負(fù)責(zé)處理來自客戶端的內(nèi)核命令以便通過execute()方法來呈現(xiàn)UI信息。每個(gè)內(nèi)核命令都由一個(gè)數(shù)值標(biāo)識(shí),在我們的例子中,我們將關(guān)注命令0x10005。除了內(nèi)核命令號(hào)之外,execute()還可以接受來自客戶端緩沖區(qū)的數(shù)據(jù)。此緩沖區(qū)中的偏移量用于生成結(jié)構(gòu)地址的算術(shù)運(yùn)算,這個(gè)運(yùn)算操作會(huì)在未進(jìn)行邊界檢查的情況下發(fā)生,并觸發(fā)越界寫入漏洞。
對(duì)于代碼路徑IntelMTLRenderFunctions::execute()的描述如下:用戶空間客戶端可以通過調(diào)用IOAccelSharedUserClient2::create_shmem()函數(shù)創(chuàng)建兩個(gè)共享內(nèi)存映射,該函數(shù)由另一個(gè)內(nèi)核擴(kuò)展IOAcceleratorFamily2提供。第一個(gè)內(nèi)存映射將用作請(qǐng)求的分段描述符,而第二個(gè)內(nèi)存映射包含一個(gè)命令緩沖區(qū)。create_shmem()函數(shù)將使用唯一的ID注冊(cè)映射并返回它們,然后將這些ID與內(nèi)核命令緩沖區(qū)一起傳遞給IOAccelCommandQueue::s_submit_command_buffers(),這個(gè)內(nèi)核命令緩沖區(qū)的大致結(jié)構(gòu)(數(shù)組)如下所示:
struct command { uint32_t type; uint32_t size; uint8_t *cmd; }
這個(gè)數(shù)組之后會(huì)進(jìn)行分割,最終將以一個(gè)內(nèi)核命令傳遞給IGAccelCommandQueue::processKernelCommand(),該內(nèi)核命令結(jié)構(gòu)如下:
struct command { uint32_t cmd_id; // 0x10005 uint32_t size; uint32_t offset; // the offset that causes no boundary check uint32_t loop_counter; uint32_t zero1; uint32_t zero2; uint32_t controlled_value; // controlled value which can be written to the offset uint32_t zero3; };
接下來,它將會(huì)傳遞給AppleIntelKBLGraphics中的IntelMTLRenderFunctions::execute()并處理內(nèi)核命令0x10005:
內(nèi)核驅(qū)動(dòng)程序中的漏洞總是非常的有意思,它們的攻擊向量往往需要伴隨遠(yuǎn)程代碼執(zhí)行漏洞。一旦存在這種漏洞,那么將有可能導(dǎo)致目標(biāo)設(shè)備完全被攻擊者接管。
感謝各位的閱讀!關(guān)于“APPLE MACOS內(nèi)核OOB寫入權(quán)限提升漏洞CVE-2020-27897的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。