Black Hat USA 2025 | "Dead Pixel Detected" - A Security Assessment of Apple's Graphics Subsystem
三句話摘要
Apple 圖形子系統從核心驅動到韌體層存在系統性安全漏洞,幾乎每一層都有可被利用的缺陷。 Apple 圖形子系統的防禦深度只是「提高門檻」而非「消除問題」,只要讀懂層間通訊協定,每一層都還有可挖掘的漏洞。 複雜度本身就是風險:Apple 圖形子系統橫跨多個 vendor 驅動與韌體層,結構過於龐大,任何一層缺乏輸入驗證都可能造成 OOB 讀寫或任意記憶體存取。
重點整理
重點- 1
複雜度本身就是風險:Apple 圖形子系統橫跨多個 vendor 驅動與韌體層,結構過於龐大,任何一層缺乏輸入驗證都可能造成 OOB 讀寫或任意記憶體存取。
- 2
粗率重構會引入大量漏洞:IO Mobile Frame Buffer 在 2020 年大規模重構後,漏洞數量急劇飆升;安全社群對新攻擊面的反應存在約六個月的滯後期,這段窗口期極為危險。
- 3
Apple 將程式碼下移韌體不等於修復:把攻擊面從 IO Mobile Frame Buffer 移到 DCP 韌體只是「隱藏」而非消除,只要理解層間通訊協定(RTKit/antibody 機制),仍可觸發底層漏洞。
- 4
漏洞描述不準確會誤導社群:Apple 將部分 OOB Write 漏洞描述為「Denial of Service」,導致研究者低估危害;研究者強調必須提交可證明可利用性的 PoC,才能讓 Apple 給出正確的 CVE 描述。
實用技巧與重點
乾貨- 工具/模組:AMD GPU kernel extension、Display Matrix module、Apple Intel ME Client Controller、AGX GPU module、IO Mobile Frame Buffer (IOMobileFrameBuffer)、Display Co-Processor (DCP) 韌體、RTKit / antibody IPC 機制
- 漏洞類型:OOB Read/Write、Type Confusion、Integer Sign Confusion(signed/unsigned integer mismatch)、任意核心記憶體寫入
- 具體漏洞:
- AMD GPU:用戶可控偏移量直接用於計算核心記憶體位址,無輸入驗證
- Display Matrix:OOB 讀寫,Apple 未提供該模組的 Kernel Debug Kit,逆向難度極高
- Apple Intel ME:Type Confusion,分配 0x40 大小物件卻以更大結構體存取
- Apple Intel GPU:`invalidContentKey` 函式對用戶提供的索引無任何檢查
- AGX GPU 通知佇列:`createNotificationQ` 的 entry 數量與大小均無驗證,導致 OOB Write
- AGX GPU 資源分配:初始 patch 未完整修復,研究者提交第二個 PoC 後才二次修補
- DCP 韌體:signed integer 被當 unsigned 使用,條件檢查可被負數繞過;視訊介面無需任何權限即可直達 DCP
- IO Mobile Frame Buffer 統計:過去 20 年共 16 個核心漏洞 CVE,其中 4 個被 APT 組織積極利用、2 個用於 iOS 越獄、1 個出現在安全競賽
- 時間線關鍵點:2020 年重構 → 2020–2022 年漏洞爆增 → 安全社群反應滯後約 6 個月
- 建議工具:靜態分析工具(signed/unsigned 比較警告可自動偵測)、動態模糊測試(自製 DCP fuzzer)
- 參考資源:Asahi Linux M1 project DCP 逆向分析、Apple Graphics Accelerator 前人研究部落格
結論
結論“Apple 圖形子系統的防禦深度只是「提高門檻」而非「消除問題」,只要讀懂層間通訊協定,每一層都還有可挖掘的漏洞。”
完整解析
詳細本場演講由微軟的 Wayon Chen 代替原作者 Wong 上台發表。Wong 因簽證問題無法出席,但全部研究成果均由 Wong 獨立完成。Chen 在開場便點明核心結論:Apple 圖形子系統是尋找 zero-day 漏洞的優質切入點,因為它龐大到不可能做到完美。
研究首先從核心驅動層展開。針對 AMD GPU 的 kernel extension,研究者發現某函式對用戶提供的偏移量完全不做驗證,該偏移量直接用於計算核心記憶體位址,可被用戶完全控制,觀察崩潰時寄存器 RCX 存有 magic value 即為佐證。Display Matrix 模組同樣存在 OOB 讀寫問題,且因 Apple 未提供 Kernel Debug Kit,所有符號名稱均缺失,逆向工程耗費大量精力。Apple Intel ME Client Controller 模組則有一個 Type Confusion 漏洞:正常情況下應分配 0x40 大小的物件,但一個有問題的分支將其當作更大結構體處理,導致越界記憶體存取。此外,Apple Intel GPU 模組中的 `invalidContentKey` 函式對用戶傳入的索引參數毫無檢查,同樣可被控制用於任意記憶體寫入。值得一提的是,其中某個漏洞在去年 10 月提交後要等到今年秋天才修復,研究團隊推測該模組正在進行大規模重構。
接著研究轉向 Apple 自家 AGX GPU。在 GPU 通知佇列機制中,`createNotificationQ` 接受用戶傳入的 entry 數量與大小參數,均無充分驗證,導致 OOB Write。研究者特別強調,PoC 初版送給 Apple 後被描述為「Denial of Service」,但研究者認為若精心構造 PoC,此漏洞完全是可利用的 OOB Write primitive,因此堅持與 Apple 溝通修正 CVE 描述,避免誤導社群。GPU 資源分配函式的另一個漏洞同樣經歷了一波三折:研究者成功操控 x8、x9 寄存器指向有效核心位址來證明可利用性,Apple 初版 patch 卻只修復了 PoC 中涵蓋的特定情境,研究者隨後提交另一個能繞過 patch 的 PoC,Apple 才進行二次修補。
IO Mobile Frame Buffer 是本場另一個重點模組,因可從瀏覽器沙盒直接存取,歷來是攻防雙方激烈競爭的戰場。統計顯示 20 年間共有 16 個 CVE,其中 4 個被 APT 組織實際利用。2020 年的大規模重構雖出發點良好,卻引入大量新漏洞,導致 2020 至 2022 年間 CVE 數量暴增。Apple 的應對策略是將部分核心函式實作下移到 Display Co-Processor(DCP)韌體層,讓用戶模式無法直接觸及,形成一定程度的縱深防禦。然而研究者發現,DCP 韌體本身同樣存在漏洞——例如一個 signed/unsigned integer 混用導致的 OOB 寫入,只需傳入負數索引即可繞過邊界檢查,且無需任何權限或 entitlement 即可觸發。有趣的是,不同 macOS 版本對此漏洞給出了兩種不同修復方式,推測是不同團隊維護同一模組所致。研究者更透過自製 fuzzer 針對 DCP 的 antibody IPC 通訊機制進行模糊測試,觸發大量崩潰,並透過直接讀取記憶體的方式收集韌體崩潰報告。其中一個視訊介面漏洞已獲 Apple 確認,影響最新版 iOS 與 macOS,目前因攻擊面尚未完全修復,無法公開更多細節。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

