Plundervolt 是 Intel 處理器的新攻擊方法,影響 SGX 技術

英特爾 已發布 修復的微程式碼更新 脆弱性 (CVE-2019-14607), 允許 透過操縱 CPU 中的動態電壓和頻率控制機制,對資料單元的內容造成損壞,包括隔離的 Intel SGX 飛地中用於計算的區域。 這種攻擊稱為 Plundervolt,可能允許本地用戶升級其在系統上的權限,導致拒絕服務並獲得對敏感資料的存取權限。

這種攻擊僅在 SGX 飛地中進行計算操作的情況下才是危險的,因為它需要係統的 root 權限才能執行。 在最簡單的情況下,攻擊者可以篡改 enclave 中處理的訊息,但在更複雜的情況下,不可能使用 RSA-CRT 和 AES-NI 演算法重新建立儲存在 enclave 中用於加密的私鑰。排除。 該技術還可用於在最初正確的演算法中產生錯誤,從而在使用記憶體時引發漏洞,例如組織對已分配緩衝區邊界之外的區域的存取。
用於執行攻擊的原型程式碼 發表 在 GitHub 上

此方法的本質是為 SGX 計算期間發生意外資料損壞創造條件,而 enclave 中使用加密和記憶體身份驗證並不能避免這種情況。 為了引入失真,事實證明可以使用標準軟體介面來控制頻率和電壓,通常用於降低系統空閒時間期間的功耗並在密集工作期間激活最大性能。 頻率和電壓特性跨越整個晶片,包括隔離飛地中運算的影響。

透過改變電壓,可以創造條件,使電荷不足以再生CPU內部的儲存單元,且其值會改變。 與攻擊的主要區別 羅漢默 RowHammer 允許您透過循環讀取相鄰單元的資料來更改 DRAM 記憶體中各個位元的內容,而 Plundervolt 允許您在資料已從記憶體載入用於計算時更改 CPU 內部的位元。 此功能可讓您繞過 SGX 對記憶體中的資料使用的完整性控制和加密機制,因為記憶體中的值保持正確,但在結果寫入記憶體之前對其進行操作時可能會被扭曲。

如果在加密過程的乘法過程中使用此修改後的值,則輸出會因不正確的密文而被拒絕。 攻擊者能夠聯繫 SGX 中的處理程序來加密其數據,從而導致失敗,累積有關輸出密文變化的統計數據,並在幾分鐘內恢復儲存在 enclave 中的金鑰值。 原始輸入文字和正確的輸出密文已知,金鑰不會改變,錯誤密文的輸出表示某些位元已被扭曲為相反的值。

使用差分故障分析方法(DFA、 差動故障分析) 能 預測 AES 對稱加密使用的可能金鑰,然後透過分析不同集合中金鑰的交集,確定所需的金鑰。

多種型號的英特爾處理器均受到該問題的影響,其中包括具有 6 個處理器的英特爾酷睿 CPU
第十代,以及第五代和第六代Xeon E10、第一代和第二代Intel Xeon Scalable、Xeon D、
至強 W 和至強 E。

讓我們提醒您,SGX 技術 (軟件防護擴展)出現在第六代英特爾酷睿處理器(Skylake)中並且 優惠 一系列指令,允許使用者層級應用程式分配封閉記憶體區域 - enclave,即使核心和運行在ring0、SMM和VMM模式下的程式碼也無法讀取或修改其中的內容。 使用傳統的跳轉函數以及暫存器和堆疊操作不可能將控制權轉移到飛地中的程式碼;為了將控制權轉移到飛地,需要使用專門建立的新指令來執行權限檢查。 在這種情況下,放置在 enclave 中的程式碼可以使用經典的呼叫方法來存取 enclave 內部的函數以及呼叫外部函數的特殊指令。 Enclave 記憶體加密用於防止硬體攻擊,例如連接到 DRAM 模組。

來源: opennet.ru

添加評論