蘋果作業系統的 ASLR 保護機制可被繞過?Google Project Zero 告訴你該怎麼做

Google Project Zero揭露蘋果macOS和iOS ASLR繞過新手法,利用序列化資訊洩露記憶體位址,削弱安全防護。蘋果已於2024年3月推送修補更新,建議避免序列化物件位址或採用密鑰雜湊防範。

Google Project Zero 研究人員,上周公佈遠端洩露蘋果 macOS 和 iOS 上特定服務記憶體位址的新方法。

這新方法可在不需傳統記憶體毁損或時間為基礎的旁路攻擊 (side-channel attack),繞過蘋果位址空間組態隨機載入 (Address Space Layout Randomization, ASLR) 的重要安全安全功能。

這項研究為 Project Zero 團隊 2024 年發想遠端繞過 ASLR 防護、洩露蘋果裝置記憶體位址的結果。

研究人員發展出一項手法可讓攻擊目標服務進行反序列化(攻擊者資料)及序列化(物件)過程,然後將資料送回給攻擊者。

雖然未發現真實世界的攻擊行動,但研究人員建立了以蘋果 macOS NSKeydArchiver 序列框架為基礎的概念驗證攻擊手法。 Google 今年初通報蘋果,後者在今年三月已釋出更新修補該漏洞。

本項攻擊是利用蘋果可預測的資料序列化行為及 NSDictionary 物件的內部結構,後者基本上是一些雜湊值表 (hash table) 。攻擊目的是利用序列化結果來洩露 NSNull singleton(單例)的記憶體位址,NSNull 是一個全系統物件,其記憶體位址正是其雜湊值。因此洩露雜湊值等同洩露物件位址,可破壞 ASLR 的防護,存取該物件所在的共享快取。

攻擊步驟

攻擊步驟技術細節如下。攻擊者先建立一個經過序列化的 NSDictionary 物件。該字典包含一組 NSNumber 金鑰以及一個 NSNull 鍵。這些 NSNumber 鍵被設計成佔據雜湊表的特定 bucket 排列,造成已知的「有/無」格位模式。接著,受害程式反序列化 (deserialize) 成記憶體中的字典結構,當程式將物件重新序列化回輸出時,它會依固定順序掃過雜湊表的各 bucket 。之後,NSNull 在返回資料中的位置(落在哪個 bucket)透露了 NSNull 的地址 modulo 表格大小(也就是地址的一部分資訊)。最後,使用中國剩餘定理 (Chinese Remainder Theorem, CRT) 還原完整地址。

用白話文來說,ASLR 的保護在於隨機化位址,使攻擊者無法預測指標位置(其指向物件的記憶體)。若能透過行為洩漏出某個固定物件的實際位址(或其餘數集合),攻擊者就能推斷出基底位址,削弱或完全繞過 ASLR 。

研究人員展示了,使用原始物件指標 (pointer) 作為資料結構的雜湊值,一旦序列化結果被取得,就可能導致直接洩露記憶體位址資訊。這種手法並非常見利用時間差的旁路攻擊手法,而是利用序列化的必然輸出結果。

研究人員建議,最保險的防範方法是避免以物件位址作為查表鍵 (lookup key) 或直接序列化輸出。若必須以指標類值當鍵,先用帶密鑰的雜湊 (keyed hash,例如 HMAC) 對指標值進行雜湊,並只輸出雜湊結果,使攻擊者無法從輸出還原出原始位址。

來源:Cybersecurity News

發表迴響

關於我們

自 1990 年創刊 UXmaster 雜誌,1991 年獲得美國 LAN Magazine 獨家授權中文版,2006 年獲得 CMP Network Computing 授權,2009 年合併 CMP Network Magazine 獨家授權中文版,2014 年轉型為《網路資訊》雜誌網站,為台灣中小企業協助技術領導者落實企業策略,了解網路規劃及應用,為企業網路應用、管理、 MIS 、 IT 人員必備之專業雜誌網站。


與我們聯絡

加入《網路資訊》雜誌社群

© Copyright 2025 本站版權所有,禁止任意轉載 網路資訊雜誌 / 心動傳媒股份有限公司 聯絡電話:+886 2 29432416

探索更多來自 網路資訊雜誌 的內容

立即訂閱即可持續閱讀,還能取得所有封存文章。

Continue reading

Secret Link