英特爾處理器漏洞導致數據通過第三方渠道洩露

來自中國和美國大學的一組研究人員發現了英特爾處理器中的一個新漏洞,該漏洞會導致第三方洩露有關推測操作結果的信息,例如,該漏洞可用於在進程或進程之間組織隱藏的通訊通道。識別 Meltdown 攻擊期間的洩漏。

此漏洞的本質是由於推測執行指令而導致 EFLAGS 處理器暫存器發生變化,從而影響 JCC 指令的後續執行時間(滿足指定條件時跳轉)。 推測操作未完成,結果被丟棄,但可以透過分析 JCC 指令的執行時間來確定丟棄的 EFLAGS 變化。 在轉換之前以推測模式執行的比較操作如果成功的話,會產生一個小的延遲,可以測量該延遲並將其用作內容選擇的標誌。

英特爾處理器漏洞導致數據通過第三方渠道洩露

與其他類似的旁路攻擊不同,新方法不會分析快取和未快取資料的存取時間變化,也不需要將 EFLAGS 暫存器重設為其初始狀態,這使得偵測和阻止攻擊變得困難。 作為演示,研究人員實施了 Meltdown 攻擊的變體,使用一種新方法來獲取有關投機操作結果的資訊。 在採用 Intel Core i7-6700 和 i7-7700 CPU 的系統上,在 Ubuntu 22.04 和 Linux 核心 5.15 的環境中,成功示範了在 Meltdown 攻擊期間組織資訊外洩的方法的操作。 在具有 Intel i9-10980XE CPU 的系統上,攻擊僅進行了部分。

Meltdown 漏洞基於以下事實:在指令的推測執行期間,處理器可以存取私有資料區域,然後丟棄結果,因為設定的權限禁止使用者進程進行此類存取。 在程式中,推測執行的區塊透過條件分支與主程式碼分開,該條件分支在實際情況下總是觸發,但由於條件語句使用處理器在搶佔執行期間不知道的計算值程式碼中,所有分支選項都是推測性地進行的。

在 Meltdown 的經典版本中,由於與正常執行的指令相同的快取用於推測執行的操作,因此在推測執行期間可以在快取中設置反映封閉記憶體區域中各個位的內容的標記,然後透過分析快取和未快取資料的存取時間來決定正常執行的程式碼中它們的含義。 新變體使用 EFLAGS 暫存器中的變更作為洩漏標記。 在隱蔽通道演示中,一個程序對傳輸的資料進行調製,為改變EFLAGS暫存器的內容創造條件,另一個程序分析JCC指令執行時間的變化,重新建立第一個程序傳輸的資料。

來源: opennet.ru

添加評論