丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
業(yè)界 正文
發(fā)私信給木子
發(fā)送

0

保安成小偷幫兇,沙箱被利用提權(quán)——攻擊macOS內(nèi)核居然可以這樣!

本文作者: 木子 2020-07-03 16:02
導(dǎo)語:支付寶光年安全實驗室受邀赴清華大學(xué)分享

在疫情防控常態(tài)化的背景之下,為了“停課不停學(xué)”,眾多高校紛紛開啟了網(wǎng)課模式。近日,支付寶光年安全實驗室收到清華大學(xué)網(wǎng)絡(luò)與信息安全實驗室(NISL)的邀請,為同學(xué)們分享在 macOS 內(nèi)核(XNU)上的攻防實戰(zhàn)思路和成果。為了讓更多聽眾能夠遠(yuǎn)程參與,本次分享以釘釘直播的方式公開進(jìn)行。包括實驗室的同學(xué)在內(nèi),一共吸引了兩百多位聽眾參與了線上公開課交流。

保安成小偷幫兇,沙箱被利用提權(quán)——攻擊macOS內(nèi)核居然可以這樣!

下面帶讀者一起回顧一下這次分享的內(nèi)容

原理解析

目前主流的操作系統(tǒng)對應(yīng)用程序區(qū)分對待,應(yīng)用不同的沙盒配置、用戶組等措施區(qū)分可執(zhí)行代碼的特權(quán)。通常系統(tǒng)代碼執(zhí)行最高權(quán)限就是操作系統(tǒng)內(nèi)核和擴展模塊(驅(qū)動程序)。惡意程序為了獲得盡可能多的能力,例如隱藏自身運行痕跡或者讀取機密信息(如鑰匙串中保存到應(yīng)用程序密碼和 iCloud 訪問憑據(jù)等),就要想方設(shè)法從遠(yuǎn)程代碼執(zhí)行作為起點,突破沙箱限制和用戶組限制,獲得內(nèi)核代碼執(zhí)行的權(quán)限。此類攻擊方式稱為本地權(quán)限提升(Local Escalation of Privileges)。

在以往公開的研究當(dāng)中,無論是各種黑客破解秀還是學(xué)術(shù)論文,攻防的戰(zhàn)場都相對集中在內(nèi)存安全上。通過利用錯誤的邊界檢查、對象生命周期管理等未定義行為,轉(zhuǎn)換成漏洞利用原語,改寫內(nèi)存中關(guān)鍵結(jié)構(gòu)的內(nèi)容實現(xiàn)高權(quán)限的任意代碼執(zhí)行。曾有論文《SoK: Eternal War in Memory》將其稱之為“永恒之戰(zhàn)”,可見內(nèi)存安全問題當(dāng)下層出不窮和亟待解決的現(xiàn)狀。既然暫時不能徹底消滅漏洞,就提升攻擊門檻。操作系統(tǒng)引入了多種緩解措施(mitigation)來提升利用難度,硬件廠商也在指令集層面實現(xiàn)了控制流保護(hù)、內(nèi)存標(biāo)簽擴展等技術(shù)進(jìn)行對抗。

但操作系統(tǒng)軟件的復(fù)雜度決定了攻擊手段不會局限在某個方面。支付寶光年安全實驗室就向蘋果報告了 macOS 的多個邏輯漏洞,避開所有的通用內(nèi)存防御,實現(xiàn) 100% 穩(wěn)定性的權(quán)限提升。在 macOS High Sierra(10.13.6)上從 Safari 瀏覽器的沙箱內(nèi)逃逸,然后獲取 root 權(quán)限,最終讓 XNU 內(nèi)核加載一個沒有代碼簽名的內(nèi)核擴展,實現(xiàn)對 macOS 的完全控制。本次公開課的內(nèi)容就是詳細(xì)講解了其中攻擊內(nèi)核的部分的技術(shù)細(xì)節(jié)和啟示。

macOS 允許 root 權(quán)限的用戶安裝內(nèi)核驅(qū)動程序,但要求驅(qū)動程序必須經(jīng)過蘋果認(rèn)證簽名,以及在安裝后需要用戶額外確認(rèn)一次(User-Approved Kernel Extension Loading)才會激活。通過分析 XNU 的源代碼可以發(fā)現(xiàn),針對驅(qū)動程序的簽名驗證還有用戶確認(rèn)的邏輯實際上都在用戶態(tài)實現(xiàn)。這些進(jìn)程都必須擁有 XNU 認(rèn)可的“良民證”,即嵌入在代碼簽名中,稱之為 entitlements 的一段 XML 字符串。

只有啟用了com.apple.private.security.

kext-management 特權(quán),并擁有蘋果簽名的程序才能安裝內(nèi)核驅(qū)動。同時macOS 默認(rèn)配置下啟用了 SIP (System Intergrity Protection),禁止注入代碼到其他進(jìn)程,即使有 root 權(quán)限也不行。系統(tǒng)內(nèi)核認(rèn)為這足以保證攻擊者無法偽造這種特權(quán),因此來自用戶態(tài)的請求是可信的,會直接執(zhí)行提交過來的代碼。

保安成小偷幫兇,沙箱被利用提權(quán)——攻擊macOS內(nèi)核居然可以這樣!

我們在這種模型上找到了實現(xiàn)的漏洞。由于內(nèi)核完全信任了特定用戶態(tài)進(jìn)程,因此我們不需要攻擊 XNU 本身,而只需要在用戶態(tài)想辦法注入惡意代碼到對應(yīng)進(jìn)程,打破信任邊界即可。macOS 自帶了一些命令用于應(yīng)用程序的調(diào)試和采樣,其具有 com.apple.system-task-ports 特權(quán),可以繞過 SIP 訪問受限制的系統(tǒng)進(jìn)程。如果被采樣的進(jìn)程是 swift 編寫的,為了還原程序上下文堆棧的符號信息,系統(tǒng)會在特定的目錄下搜索 swift 相關(guān)的動態(tài)鏈接庫并載入。搜索路徑有四個備選,優(yōu)先級最高的路徑受到系統(tǒng)保護(hù)無法修改。但我們給進(jìn)程強制添加一個 sandbox,禁止其訪問系統(tǒng)自帶的合法路徑,就會強迫其走備選的代碼分支,從環(huán)境變量 DEVELOPER_DIR 控制的目錄中載入任意代碼,造成運行庫劫持。

但這一步又遇到了一個問題。iOS / macOS 為了防御動態(tài)庫劫持,使用了一種名為 Library Validation 的手段,即動態(tài)載入運行庫之前會檢查其代碼簽名是否來自蘋果或者同一開發(fā)者。我們在舊的 macOS 系統(tǒng)上找到了對應(yīng)程序,但是不帶 Library Validation 的版本,成功觸發(fā)這一代碼劫持漏洞。有了用戶態(tài)任意注入代碼的權(quán)限之后,通過注入代碼到管理內(nèi)核驅(qū)動的服務(wù)進(jìn)程,竊取其 com.apple.private.security.

kext-management 特權(quán),成功欺騙 XNU 內(nèi)核執(zhí)行了沒有任何代碼簽名的模塊。

保安成小偷幫兇,沙箱被利用提權(quán)——攻擊macOS內(nèi)核居然可以這樣!

攻擊過程

  1. 運行任意一個 swift 程序

  2. 從舊版本(El Capitan)macOS 系統(tǒng)中復(fù)制一個沒有保護(hù)的 symbols  命令

  3. 釋放一個惡意的 libswiftDemangle.dylib 到任意目錄

  4. 調(diào)用 sandbox_init_with_parameters 添加沙箱配置,取消當(dāng)前進(jìn)程對系統(tǒng)自帶 libswiftDemangle.dylib 的訪問權(quán)限

  5. 設(shè)置當(dāng)前進(jìn)程的 DEVELOPER_DIR 環(huán)境變量,指向惡意的路徑

  6. 執(zhí)行 symbols 命令對 swift 程序采樣,觸發(fā)代碼劫持漏洞,載入惡意的動態(tài)鏈接庫

  7. 使用這個 symbols 的調(diào)試特權(quán)附加到 kextd 進(jìn)程,注入最后階段的攻擊載荷

  8. 使用 kextd 提交驅(qū)動程序的特權(quán)向 XNU 內(nèi)核注入無簽名的擴展,實現(xiàn)用戶態(tài) root 權(quán)限到內(nèi)核任意代碼執(zhí)行

官方修復(fù)

在這個攻擊鏈條中最重要的突破口實際上是利用了代碼動態(tài)庫劫持,將惡意代碼注入到合法的進(jìn)程中,從而繞過基于代碼簽名的信任邊界。蘋果在 macOS Mojave 之后強制啟用了 Hardened Runtime 機制,即將 Library Validation 驗證機制的啟用條件從 opt-in 改成了 opt-out,默認(rèn)全部開啟。針對從老版本系統(tǒng)復(fù)制“可信”程序的問題,蘋果在新的 AppleMobileFileIntegrity 驅(qū)動中硬編碼了進(jìn)程采樣工具的標(biāo)識符,即不再信任舊版本的程序。此外針對任意進(jìn)程調(diào)試,蘋果引入了一個新的 com.apple.system-task-ports.safe 特權(quán),以限制舊版程序的能力。目前,此問題已經(jīng)得到修復(fù)。

不過最關(guān)鍵的 XNU 驅(qū)動驗證上仍然保留了用戶態(tài)驗證的策略。同時 kextd 進(jìn)程還加入了 com.apple.security.cs.allow-unsigned-executable-memory 特權(quán),也就是仍然執(zhí)行無簽名的代碼,給漏洞利用提供了方便。假設(shè) kextd 之后出現(xiàn)進(jìn)程間通信的漏洞,能夠接管控制流,仍有可能通過用戶態(tài)特殊進(jìn)程的任意代碼執(zhí)行來攻擊內(nèi)核。

總結(jié)和教訓(xùn)

通常攻擊操作系統(tǒng)內(nèi)核,大量的研究和案例大體都是類似的思路,即通過 syscall 或者平臺特定的內(nèi)核調(diào)用機制(如 XNU 的 IOKit),觸發(fā)內(nèi)存訪問違例,篡改系統(tǒng)內(nèi)核的結(jié)構(gòu)甚至劫持控制流,從而獲得更高的代碼執(zhí)行權(quán)限。與以往的研究相比,這次分享的案例具有鮮明的特點:

  1. 完全沒有利用常規(guī)的內(nèi)存安全問題,嚴(yán)格意義上甚至沒有攻擊 XNU 本身,而是濫用了其信任邊界

  2. 從舊版本的操作系統(tǒng)中復(fù)制具有合法蘋果代碼簽名,同時允許加載第三方代碼的程序,進(jìn)一步突破信任模型

  3. 原本作為系統(tǒng)安全防線的沙箱機制,在特定條件下卻變成了漏洞利用的重要條件,“以子之盾攻子之盾”。

這次線上分享除了這一套原創(chuàng)漏洞和利用之外,還簡單介紹了 Psychic Paper、以及 phoenhex&qwerty team 在Pwn2Own 2019 所用的內(nèi)核漏洞等來自其他安全研究員的案例。網(wǎng)絡(luò)安全專業(yè)的同學(xué)在做研究時通常更喜歡去解決一些普適性的問題,有時會忽視這種平臺特性相關(guān)的設(shè)計缺陷。而在實戰(zhàn)應(yīng)用中,這種類型的漏洞有時能以更低的成本實現(xiàn)攻擊的目的。


支付寶光年安全實驗室

隸屬于支付寶安全實驗室。通過對基礎(chǔ)軟件及設(shè)備的安全研究,達(dá)到全球頂尖破解能力,致力于保障螞蟻金服及行業(yè)金融級基礎(chǔ)設(shè)施安全。因發(fā)現(xiàn)并報告行業(yè)系統(tǒng)漏洞,數(shù)十次獲得Google、Apple等國際廠商致謝。


雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

分享:
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說