ZenHammer - 在 AMD Zen 平台上破壞記憶體內容的攻擊方法

蘇黎世聯邦理工學院的研究人員開發了 ZenHammer 攻擊,這是 RowHammer 類攻擊的變體,用於修改動態隨機存取記憶體 (DRAM) 各個位元的內容,適用於採用 AMD 處理器的平台。過去的 RowHammer 攻擊方法僅限於基於 Intel 處理器的系統,但研究表明,在具有 AMD 記憶體控制器的平台上也可以實現記憶體損壞。

該方法在配備來自三個領先製造商(三星、美光和 SK 海力士)的 DDR2 內存的 AMD Zen 3 和 Zen 4 系統上進行了演示。此攻擊成功繞過了記憶體晶片中實現的 TRR(目標行刷新)機制,該機制旨在防止相鄰行中的記憶體單元損壞。研究人員表示,基於 AMD Zen 3 CPU 的系統比採用 Intel Coffee Lake 處理器的系統更容易受到攻擊,而且更容易、更有效地受到攻擊。在AMD Zen 2 系統上,7 個測試的DDR10 晶片中的4 個出現了單元失真,而在Zen 3 系統上,6 個中的10 個出現了單元失真。研究人員還分析了對具有DDR4 內存的AMD Zen 5 系統進行攻擊的可能性,但攻擊為DDR4 開發的方法僅在十分之一的測試DDR1 內存晶片上成功重現,雖然不排除攻擊本身的可能性,但需要開發適合DDR10 設備的更高效率的讀取模式。

為了與AMD 晶片配合使用,他們能夠採用先前開發的漏洞利用程序,更改內存頁表(PTE,頁表項)中條目的內容,從而獲得內核權限,通過修改sudo 進程的內存來繞過密碼/權限檢查,並損壞 OpenSSH 記憶體中儲存的 RSA-2048 公鑰以重新建立私鑰。在測試的 7 個 DDR10 晶片中,有 4 個晶片再現了記憶體頁面攻擊,6 個晶片再現了 RSA 金鑰攻擊,4 個晶片再現了 sudo 攻擊,攻擊時間分別為 164、267 和 209 秒。

ZenHammer - 在 AMD Zen 平台上破壞記憶體內容的攻擊方法

此方法也可用於透過瀏覽器攻擊系統、從虛擬機器進行變更或透過網路發動攻擊。用於對DRAM 記憶體中的位址佈局進行逆向工程的DARE 工具包的源代碼已在MIT 許可下發佈在GitHub 上,以及用於對記憶體中位損壞進行模糊測試的兩套實用程式- 用於DDR4 晶片(Zen 2 和Zen)的ddr3_zen4_zen2_pub 3)和DDR5晶片(Zen 4)的ddr5_zen4_pub,可用來測試其係統對攻擊的敏感度。

ZenHammer - 在 AMD Zen 平台上破壞記憶體內容的攻擊方法

RowHammer 方法用於扭曲位,這是基於以下事實:在 DRAM 記憶體中,DRAM 記憶體是由電容器和電晶體組成的二維單元陣列,對同一記憶體區域執行連續讀取會導致電壓波動並導致鄰近電池少量電荷損失的異常現象。如果讀取強度很高,則相鄰單元可能會失去足夠的電荷,下一個再生週期將沒有時間恢復其原始狀態,這將導致單元中儲存的資料值發生變化。研究人員確定了 AMD 處理器中使用的物理記憶體映射和記憶體更新機制同步的特徵,這使得重新創建低階 DRAM 尋址、確定相鄰單元的位址、開發繞過快取的方法以及計算模式和頻率成為可能導致電量損失的操作。

為了防範 RowHammer,晶片製造商使用 TRR(目標行刷新)機制,該機制可以阻止特殊情況下的單元損壞,但不能防範所有可能的攻擊選項。最有效的保護方法仍然是使用帶有糾錯碼 (ECC) 的內存,這會使 RowHammer 攻擊變得非常複雜,但並不能完全消除。增加記憶體再生的頻率也可以降低成功攻擊的可能性。

AMD已就該問題發布了一份報告,指出AMD處理器使用符合DDR規範的內存控制器,由於攻擊的成功主要取決於系統設置和DRAM內存,因此有關解決該問題的問題應直接向內存製造商提出和系統使Rowhammer 等級攻擊變得更加困難的現有方法包括使用ECC 記憶體、增加記憶體再生頻率、停用延遲再生模式以及使用具有支援DDR4(第一、第二和第三)MAC(最大啟動計數)模式的控制器的處理器。一代 AMD EPYC“那不勒斯”、“羅馬”和“米蘭”)和適用於 DDR1 的 RFM(刷新管理)(第四代 AMD EPYC)。

來源: opennet.ru

添加評論