Blacksmith-針對 DRAM 記憶體和 DDR4 晶片的新攻擊

來自蘇黎世聯邦理工學院、阿姆斯特丹自由大學和高通公司的研究小組發布了一種新的 RowHammer 攻擊方法,該方法可以更改動態隨機存取記憶體 (DRAM) 各個位元的內容。 這次攻擊的代號為 Blacksmith,編號為 CVE-2021-42114。 許多配備了針對先前已知的 RowHammer 類方法的保護的 DDR4 晶片很容易受到此問題的影響。 用於測試系統漏洞的工具已發佈在 GitHub 上。

回想一下,RowHammer 類別攻擊可讓您透過循環讀取相鄰記憶體單元的資料來扭曲各個記憶體位元的內容。 由於 DRAM 記憶體是二維單元陣列,每個單元由電容器和電晶體組成,因此對相同儲存區域執行連續讀取會導致電壓波動和異常,從而導致相鄰單元中的少量電荷損失。 如果讀取強度很高,則相鄰單元可能會失去足夠的電荷,下一個再生週期將沒有時間恢復其原始狀態,這將導致單元中儲存的資料值發生變化。

為了防禦RowHammer,晶片製造商提出了TRR(目標行刷新)機制,該機制可以防止相鄰行的單元被損壞,但由於這種保護是基於「隱匿性安全」的原則,因此並沒有解決問題根,但僅受到已知特殊情況的保護,這使得很容易找到繞過保護的方法。 例如,XNUMX月份,Google提出了Half-Double方法,該方法不受TRR保護的影響,因為攻擊影響的是與目標不直接相鄰的小區。

Blacksmith 的新方法提供了一種繞過 TRR 保護的不同方法,其基礎是以不同頻率對兩個或多個攻擊者字串進行非均勻訪問,從而導致電荷洩漏。 為了確定導致電荷洩漏的記憶體存取模式,我們開發了一種特殊的模糊器,可以自動選擇特定晶片的攻擊參數,從而改變單元存取的順序、強度和系統性。

這種與影響相同小區無關的方法使目前的 TRR 保護方法無效,這種方法以某種形式歸結為計算對小區的重複調用次數,並在達到特定值時啟動充電的相鄰細胞。 在 Blacksmith 中,訪問模式從目標的不同側面同時分佈在多個單元上,這使得可以在不達到閾值的情況下實現電荷洩漏。

事實證明,該方法比之前提出的繞過TRR 的方法要有效得多- 研究人員成功地在最近購買的40 個不同的DDR4 內存晶片中實現了位元失真,這些晶片由三星、美光、SK 海力士和一家未知製造商(製造商是4 個晶片上未指定)。 相較之下,同一研究人員先前提出的 TRRespass 方法僅對當時測試的 13 個晶片中的 42 個有效。

總體而言,Blacksmith 方法預計適用於市場上 94% 的 DRAM 晶片,但研究人員表示,某些晶片比其他晶片更容易受到攻擊,更容易受到攻擊。 在晶片中使用糾錯碼(ECC)並將記憶體更新率加倍並不能提供完整的保護,反而會使操作變得複雜。 值得注意的是,該問題無法在已發布的晶片中被阻止,並且需要在硬體層級實施新的保護,因此該攻擊將持續多年。

實際例子包括利用Blacksmith改變記憶體頁表項(PTE,頁表項)內容來取得核心權限,破壞OpenSSH記憶體中儲存的RSA-2048公鑰(可以將公鑰帶入記憶體)的方法。別人的虛擬機來匹配攻擊者的私鑰以連接到受害者的虛擬機器)並透過修改sudo 進程的記憶體來繞過憑證檢查以獲得root 權限。 根據晶片的不同,改變一個目標位元需要 3 秒到幾個小時的攻擊時間。

此外,我們還可以注意到由 Antmicro 為 Google 開發的開放式 LiteX Row Hammer Tester 框架的發布,該框架用於測試針對 RowHammer 類別攻擊的記憶體保護方法。 此架構基於利用FPGA完全控制指令直接傳輸到DRAM晶片,消除記憶體控制器的影響。 提供 Python 工具包用於與 FPGA 互動。 基於 FPGA 的網關包括用於封包傳輸的模組(定義記憶體存取模式)、有效負載執行器、基於 LiteDRAM 的控制器(處理 DRAM 所需的所有邏輯,包括行啟動和記憶體更新)和 VexRiscv CPU。 該專案的開發是在 Apache 2.0 許可證下分發的。 支援各種 FPGA 平台,包括 Lattice ECP5、Xilinx 系列 6、7、UltraScale 和 UltraScale+。

來源: opennet.ru

添加評論