我最初想研究 IOHIDSystem 組件,希望找到一個能夠滲透 iOS 內(nèi)核的漏洞。結(jié)果發(fā)現(xiàn) IOHIDFamily 的某些部分(尤其是 IOHIDSystem)只存在于 macOS 上,結(jié)果就在 macOS 上發(fā)現(xiàn)了這個存在于 IOHIDFamily 組件中的漏洞。
Siguza 還發(fā)布了名為 IOHIDeous 的?PoC 代碼,可在 Sierra 和 High Sierra(最高版本為 10.13.1)上實(shí)現(xiàn)利用,獲取完整的內(nèi)核讀/寫權(quán)限,并禁用系統(tǒng)完整性保護(hù)(SIP)功能和 Apple 移動文件完整性(AMFI)保護(hù)功能。非特權(quán)用戶也可在所有最新版本的 macOS 上利用該漏洞。
圖:存在漏洞的 IOHIDSystem 代碼
如上圖所示,eop->evGlobalsOffset = sizeof(EvOffsets);和evg = (EvGlobals *)((char *)shmem_addr + eop->evGlobalsOffset);這兩行存在問題。
其中,eop->evGlobalsOffset的值可以更改,所以會導(dǎo)致evg指向其他非意向結(jié)果。
更多技術(shù)分析詳情可以點(diǎn)擊此處 查閱。
實(shí)驗(yàn)表明,該漏洞利用代碼運(yùn)行速度很快,能夠避免用戶交互,甚至在系統(tǒng)關(guān)閉時“能夠在用戶注銷和內(nèi)核殺毒之搶先運(yùn)行”。這意味著用戶在注銷、重新啟動或關(guān)閉計(jì)算機(jī)時,都有可能遭到攻擊,被攻擊者獲取 root 權(quán)限,連社工都不需要。
不過,Siguza 發(fā)布的 PoC 代碼似乎不適用于2017 年 12 月 6 日蘋果剛剛發(fā)布的 macOS High Sierra 10.13.2 版本,但他認(rèn)為這個版本仍然有可能存在問題。
由于某些原因,我這份時序攻擊在 High Sierra 10.13.2 上不起作用,不過我也不會再深入研究了。也許是因?yàn)?10,13,2 版本打了補(bǔ)丁,也許只是隨機(jī)變化的后果,我既不知道也不在乎。 漏洞依然存在,這個 PoC 體現(xiàn)了該漏洞的信息泄露和內(nèi)核讀/寫的特性,不過這兩個特性不在同一個二進(jìn)制文件中。
我的主要目的是讓人們知道這個漏洞。我不會把 exploit 賣給黑客,因?yàn)槲也幌胫q為虐。如果蘋果的漏洞獎勵計(jì)劃包含 macOS 的漏洞,或者這個漏洞出現(xiàn)遠(yuǎn)程利用的實(shí)例,那我早就把這個漏洞提交給蘋果了。
Siguza 公開披露這個 macOS 0-day 漏洞的原因是該漏洞已經(jīng)被一名本地攻擊者利用,而且蘋果的漏洞獎勵計(jì)劃并未涵蓋這一類的漏洞。所以,目前漏洞還未修復(fù)。由于這個漏洞需要在本地訪問計(jì)算機(jī)或者攻擊者已經(jīng)入侵過計(jì)算機(jī)的前提下才可以被利用,所以可能會被蘋果列為非嚴(yán)重問題,不會進(jìn)行緊急修復(fù)。據(jù)推測,蘋果可能會在下個月的安全更新中修復(fù)。