MIE:記憶體完整性強制執行

記憶體完整性強制執行:Apple 裝置記憶體安全的完整願景

部落格 2025 年 9 月 9 日 Apple 安全工程與架構(SEAR)
TL;DR
  • 」結合 (增強型記憶體標記)、,在 iPhone 17 / iPhone Air 上提供永遠啟用的記憶體安全。
  • 設計原則:同步檢查預設開啟深度軟硬整合;效能影響極小。
  • 目標:令基於記憶體損壞的傭兵間諜軟體利用鏈變得「昂貴且脆弱」,難以維運。

前言與背景

是一項橫跨五年的、前所未有的設計與工程結晶,它結合了 Apple 晶片硬體的獨特優勢與我們先進的作業系統安全,為我們的裝置提供了業界首創、永遠啟用的記憶體安全保護——且不犧牲我們一流的裝置效能。我們相信,MIE 代表了消費級作業系統歷史上對記憶體安全最重大的升級。

iPhone 從未遭受過成功的大規模惡意軟體攻擊。我們在現實世界中觀察到的唯一系統級 iOS 攻擊來自傭兵間諜軟體,其複雜程度遠超過一般的網路犯罪活動和消費者惡意軟體。已知的針對 iOS 的傭兵間諜軟體鏈與針對 Windows 和 Android 的攻擊有一個共同點:它們都利用了記憶體安全漏洞。

Apple 的安全路線:從語言到配置器與 PAC

對 Apple 而言,提升記憶體安全是一項廣泛的努力,包括使用安全語言進行開發和大規模部署緩解措施。

  • :我們創建了一種易於使用、記憶體安全的語言,用於新程式碼和有針對性的元件重寫。
  • :在 iOS 15 中,我們推出了核心的安全記憶體配置器 kalloc_type,隨後在 iOS 17 中推出了其使用者層級的對應版本 xzone malloc。這些安全配置器利用類型資訊來組織記憶體,使得利用大多數記憶體損壞漏洞本質上變得困難。
  • :2018 年,我們率先在 A12 仿生晶片中部署了 PAC,以保護在記憶體損壞情況下的程式碼流程完整性。

從 MTE 到 EMTE,再到 MIE

Arm 於 2019 年發佈了 規範,作為一種幫助硬體發現記憶體損壞錯誤的工具。我們進行了深入的評估,並與 Arm 合作解決了其弱點,於 2022 年推出了新的 規範。我們認為記憶體安全保護需要嚴格同步、預設開啟且持續運作。 的同步模式為核心,並結合我們既有的安全記憶體配置器及廣泛的 策略,將 MTE 從一個有用的除錯工具轉變為一項開創性的新安全功能。

防禦設計:配置器 × EMTE × 標記機密性

從我們的安全記憶體配置器開始,這些配置器利用類型資訊來決定如何組織記憶體配置。然而,分頁級別的保護對於防禦同一類型儲存區內的攻擊來說過於粗糙,我們使用記憶體標記來彌補這一差距。

緩衝區溢位(Buffer Overflow)

對於緩衝區溢位,配置器負責為相鄰的配置使用不同的標記。如果對記憶體的存取溢出到具有不同標記的相鄰記憶體,硬體會阻止它,作業系統可以採取行動並終止該行程。

⏺️ Block A
Tag A
🔼 Block B
Tag B
⏹️ Block C
Tag C

嘗試以 🔼 標記溢出至 ⏹️ 時將遭阻擋。

釋放後使用(Use-after-Free)

配置器也負責在記憶體被重用於其他目的時重新標記。如果在釋放和重新配置後,仍以較舊的標記對重新標記的記憶體發出請求(如在釋放後使用漏洞利用中所見),硬體會阻止它,並讓作業系統採取進一步行動。

未標記區域與 EMTE 改良

原始 MTE 規範的一個關鍵弱點是,對未標記記憶體(如全域變數)的存取未經硬體檢查。透過 ,我們明確要求從已標記的記憶體區域存取未標記的記憶體需要知道該區域的標記,這使得攻擊者更難將動態標記記憶體中的越界錯誤轉化為直接修改未標記配置來規避 EMTE 的方式。

標記機密性強制(Tag Confidentiality)

我們開發了來保護 EMTE 標記的機密性——包括對抗旁路通道和推測執行攻擊。

  • 核心與標記儲存防護:為了保護核心配置器後備儲存和標記儲存,我們使用安全分頁表監視器(Secure Page Table Monitor),即使在核心受損的情況下也能提供強有力的保證。
  • 推測執行緩解:我們從一開始就設計了 Apple 晶片的實現,使得標記值不會以任何方式影響推測執行。最近的研究(StickyTags, TikTag)表明,Google Pixel 設備上的 MTE 實現容易受到此類攻擊。
  • 標記不可預測:我們透過頻繁地重新植入用於選擇新標記的底層偽隨機生成器來解決此問題。
  • Spectre Variant 1 (V1) 限縮:我們設計了一種緩解措施,以幾乎為零的 CPU 成本限制了 V1 洩漏的有效範圍。這使得攻擊者通常需要 25 個或更多的 V1 序列才能達到超過 95% 的利用成功率。

部署與效能:精準啟用 EMTE,維持體驗

為了支援 ,新的 A19 和 A19 Pro 晶片投入了前所未有的 Apple 晶片資源於安全性上。由於 標記檢查會帶來效能成本,我們設計 首先利用我們的安全配置器,並僅在同一類型儲存區內保護較小的單個配置(軟體配置器無法單獨防禦之處)時使用 。這種對 的精準部署,使得我們能夠在核心和超過 70 個使用者層級行程中維持同步標記檢查,同時對效能的影響極小。

推出之日起,任何開發者都可以立即開始在支援硬體上使用 Xcode 中的「增強安全性」設定為其應用程式測試這項強大的保護,包括

安全評估:讓利用鏈昂貴且脆弱

在 2020 年至 2025 年期間,我們的攻擊研究團隊持續分析和攻擊該系統——首先是概念性的,然後是在模擬環境中進行實際攻擊,最終在新硬體原型上進行。兩種方法都揭示了相同的結論: 大大減少了攻擊者可用的利用策略。儘管我們付出了巨大努力,仍無法重建任何這些鏈來繞過 。剩下的少數記憶體損壞效應是不可靠的,並且沒有給予攻擊者足夠的動力來成功利用這些錯誤。

攻擊者視角
  • 攻擊者在利用過程的早期就面臨 。在他們的能力仍然非常有限的階段,就必須面對 MIE,這使得可行的利用途徑很少。
  • 這導致了脆弱的鏈,其中破壞一個步驟通常就足以使整個利用策略失效。當這種情況發生時,鏈的大部分組件無法重複使用,攻擊者必須用全新的錯誤重新開始開發。

結論

隨著 iPhone 17 系列和 iPhone Air 的推出,我們很高興能提供 :業界首個全面、永遠啟用的記憶體安全保護,涵蓋了包括核心和超過 70 個使用者層級行程在內的關鍵攻擊面。根據我們對抗過去三年來異常複雜的傭兵間諜軟體攻擊的評估,我們相信 將使漏洞利用鏈的開發和維護成本顯著提高,顛覆過去 25 年來許多最有效的利用技術,並完全重新定義 Apple 產品的記憶體安全格局。