蘋果芯片被曝重大安全漏洞,或緻密鑰泄漏
芯東西(公衆號:aichip001)編譯 王傲翔編輯 程茜
芯東西3月24日消息,據美國科技媒體Ars Technica報道,研究人員在週四發表的論文中披露,蘋果M系列芯片中存在一個新發現的安全漏洞。
這一漏洞允許攻擊者在執行廣泛使用的加密操作時從蘋果Mac電腦中竊取密鑰,從而訪問用戶的數據。
據瞭解,蘋果無法在芯片上修復這一漏洞,需要開發者採用其他措施進行修復。然而幾乎所有措施都會嚴重影響設備的性能。
對蘋果修復該漏洞可能產生的影響,暫時不得而知。可以確定的是,當用戶使用特定的加密操作時,設備性能會顯著損失。
蘋果公司拒絕對該研究置評。
一、源於硬件優化功能,DMP易受攻擊
蘋果M芯片中存在的這一安全漏洞是一種側信道(side channel)攻擊。當蘋果芯片運行常用的加密協議時,側信道允許端到端的密鑰提取。由於這一漏洞存在於蘋果芯片本身的微架構設計,因此它無法直接修補。
相反,蘋果只能通過在第三方加密軟件中建立防禦措施來緩解這一問題,而這些加密軟件在執行加密操作時會大幅降低M系列芯片的性能,特別是此前搭載M1和M2系列的蘋果產品。當目標加密操作和惡意應用程序以普通用戶系統權限在同一CPU集羣上運行時,該漏洞就會被利用。
該漏洞源於蘋果芯片的數據內存依賴預取器(data memory-dependent prefetcher, DMP)的硬件優化功能,DMP可以預測當前運行代碼中最有可能訪問的數據內存地址。
延遲是現代計算機中的一個常見瓶頸。在將所需要的實際內容加載到CPU緩存中時,DMP可以減少主內存和CPU之間的延遲。舊形式的預取器已使用多年,但DMP是一種較新的技術,僅在蘋果M系列芯片和英特爾第13代Raptor Lake微架構中使用過。
安全專家很早就瞭解到,傳統的預取器能夠打開一個側信道,惡意進程可以探測到這一信道,從而在加密操作系統中獲取密鑰信息。
由於預取器根據先前的訪問模式進行預測信道,這可能導致側信道的狀態發生變化,攻擊者則可以利用這些變化來泄露信息。
爲了應對這種風險,密碼工程師設計了常量時間編程(constant-time programming)。這種方法可以確保無論是怎樣的操作量,所有操作都需要相同的時間來完成。它通過保持代碼不受秘密依賴內存訪問(secret-dependent memory accesses)或其他結構的限制來實現。
這項新研究的突破之處在於,它揭示了蘋果芯片中DMP之前被忽視的一個特徵,即DMP有時會錯誤地將密鑰等敏感數據內容與內存地址指針混淆。其結果是,DMP經常讀取數據並試圖將數據理解爲地址,從而執行內存訪問的操作。這種內存地址指針的“解引用”( dereferencing)意味着數據可以被讀取並通過側信道泄露出去,這明顯違反了常量時間操作。
在一封信件中,他們對DMP的行爲作出解釋:“預取器通常能夠查看被訪問數據的地址,並嘗試猜測未來可能有用的地址,這一過程中預取器會忽略被訪問數據的值。
DMP則不同,因爲除了數據的地址外,DMP還能夠使用數據的值進行預測。尤其是如果一個數據值‘看起來’像一個內存地址指針,它將被DMP視爲一個數據的地址,並且該地址的數據將會被帶到緩存中。地址數據到達緩存這一過程是可見的,數據信息從而通過緩存側信道泄露出去。”
▲內存訪問模式與DMP在訪問數據地址的差別(圖源:GoFetch: Breaking Constant-Time Cryptographic ImplementationsUsing Data Memory-Dependent Prefetchers)
研究人員以此對DMP進行攻擊。雖然無法直接泄露密鑰,但他們可以對加密算法內部的中間數據進行攻擊,使數據值看起來像一個地址,並將該地址的數據放入緩存,從而泄露該地址。經過反覆嘗試,研究人員足以在一段時間內獲取密鑰。
在論文中,該研究團隊對獲取密鑰這一過程的解釋稍有不同,認爲研究的關鍵見解是,雖然DMP只“解引用”指針,但攻擊者可以輸入程序,使這些輸入的程序與密鑰混合,並且當且僅當私密信息滿足攻擊者選擇的驗證時,混合後所產生的中間狀態可以被設計成指針樣式。
研究人員舉例稱假設一個程序具有私密信息s,那麼將x作爲程序輸入並計算,再將y=s⊕x存儲道程序內存中,攻擊者則可以製作不同的x,並觀察DMP是否能夠‘解印’出y,從而推斷出關於s的部分甚至全部信息。
二、不需Root訪問權限,GoFetch降低黑客攻擊門檻
研究人員將這種輸入程序與密鑰混合的攻擊命名爲“GoFetch”。使用GoFetch的應用不需要Root權限(用戶最高權限),只需要與安裝在macOS系統上的大多數第三方應用程序相同的用戶權限。
例如,M系列芯片被分成兩個集羣:一個E集羣(包含四個E核心)和一個P集羣(包含4個P核心)。只要GoFetch應用和目標加密系統在相同的性能集羣上運行,即使在該集羣內的不同核心上,GoFetch也能竊取足夠的私密信息以泄露密鑰。
這種攻擊既針對傳統的加密算法,也對新一代加密算法有效,即便新一代加密算法已經經過強化,可以抵禦量子計算機的預期攻擊。
使用GoFetch的應用只需要不到一小時就能提取一個2048-bit RSA密鑰,兩個多小時就能提取一個2048-bit Diffie-Hellman密鑰。它需要54分鐘提取組裝一個Kyber-512密鑰所需的材料,而提取一個Dilithium-2密鑰需要10小時,這還不包括處理原始數據所需的離線時間。
▲GoFetch提取四種密碼密鑰的實驗結果(圖源:Ars Technica)
在執行操作時,GoFetch能夠竊取目標應用程序用於執行這些加密操作的密鑰。這種機制意味着,在收集數據期間,目標應用程序無需自行執行任何加密操作。
上述四種攻擊都採用了常量時間編程,證明了蘋果芯片中的DMP能擊破了所有加密防禦。
GoFetch並不是研究人員首次發現的潛伏在蘋果DMP中的威脅,對GoFetch的優化在2022年的一項研究中被記錄下來,該研究在蘋果M1和A14芯片中都發現了一種此前未知的“指針雕鏤DMP”(pointer-chasing DMP)。
這項來自不同學術團體的研究引發了名爲Augury的攻擊,該攻擊識別並利用了一個泄露指針的內存側通道,從而對DMP發起攻擊。最終,當使用常量時間編程後,Augury無法將數據信息和數據地址混合在一起。該攻擊的失敗給當時人們的印象是,DMP並沒有構成太大的威脅。
使用GoFetch應用的作者在他們的網站上寫道:“GoFetch表明,DMP比之前想象的更具侵略性,因此也構成了更大的安全風險。具體來說,我們發現任何從內存中加載的值都有可能被解引。這使我們能規避Augury的許多限制,並在常量時間編程演示端到端攻擊。
三、修復安全漏洞,責任在於開發者
與其他微架構CPU側信道一樣,蘋果無法在芯片上修復GoFetch。這樣一來,減輕漏洞有害影響的責任落在了爲蘋果硬件開發代碼的人身上。對於在M1和M2處理器上運行加密軟件的開發人員來說,這意味着,除了常量時間編程外,他們還必須採用其他防禦措施,然而幾乎所有措施都會帶來顯著的性能損失。
一個典型的例子是密文盲化(ciphertext blinding),它是修復安全漏洞最有效的措施之一。密文盲化的工作原理是,在敏感值儲存到內存或從內存加載之前和之後,增加或刪除掩碼。
這能夠有效隨機化加密算法的內部狀態,防止攻擊者控制它,從而中和GoFetch的攻擊。
但不幸的是,研究人員說這種防禦針對特定算法,且通常代價高昂,甚至在某些情況下可能會使所需的計算資源增加一倍,例如Diffie-Hellman密鑰交換協議(Diffie-Hellman key exchanges)。
另一種防禦措施是在前面提到的E核心上運行加密進程,這些核心中沒有DMP。
一種可能的嘗試是,在這些核心上運行所有加密代碼。但是這種防禦措施也並非十全十美。它不僅可能會有未宣佈的變更將DMP功能添加到E核心中,而且在這裡運行加密進程,可能會顯著增加完成操作所需的時間。研究人員還提到其他幾種特別防禦措施,但它們同樣存在問題。
此外,蘋果最新的芯片M3上的DMP有一個特殊的位(bit),開發者可以調用這個位,以禁用DMP獲取數據信息的功能。研究人員目前還不知道在關閉次性能優化時會發生何種性能影響。
研究人員還指出,在英特爾Raptor Lake處理器中發現的DMP不會泄露相同類型的隱私信息。更重要的是,類似於M3,在Raptor Lake上設置一個特殊的DOIT位也能夠有效關閉DMP。
不過對於用戶而言,無論發生怎樣的性能影響,只有當受影響的軟件執行特定的加密操作時,用戶才能感知到。對於瀏覽器和許多其他類型的應用,用戶可能無法感知到性能受到怎樣影響。
研究人員寫道:“從長遠看,我們認爲正確的解決方案是補充2020年公佈的軟硬件協議中的內容以解決DMP問題。至少硬件應該向軟件提供一種在運行安全關鍵應用程序時選擇性禁用DMP的方法,這已經有了初步的行業先例。例如,英特爾的DOIT擴展明確提到可以通過ISA擴展禁用他們的DMP。
從長期看,在理想情況下,人們希望有更精細的控制措施,例如限制DMP只能從特定緩衝區或指定的非敏感內存區域提取數據。”
最後,對此有顧慮的用戶應當檢查可用於實現已知易受攻擊的四種加密協議中任何一種macOS的GoFetch緩解更新。謹慎起見,至少在目前,假設其他加密協議也可能容易受到影響是明智的。
研究人員稱:“不幸的是,要評估一種措施是否容易受到攻擊,需要進行密碼分析和代碼檢查,以瞭解如何讓中間值看起來像指針,從而泄露私密信息。這個過程需要手把手的嘗試,並且極其緩慢,還不排除有其他攻擊方式。”
結語:用戶隱私難保障,蘋果應及時迴應並解決漏洞
在蘋果芯片上發現的這一最新安全漏洞,使得用戶的隱私安全受到威脅。根據該研究論文,這一漏洞的發現揭示了蘋果芯片中預取器中以前被忽視的行爲,蘋果產品的安全風險進一步引發社會關注與擔憂。
根據英特爾此前先例,以及研究人員提出的相關建議,蘋果公司應儘快解決這一漏洞,並防止用戶隱私泄露問題的再次發生。鑑於此前發生的蘋果設備監聽問題,蘋果亟待將保護用戶隱私作爲重點。
來源:Ars Technica