人人書

雜誌

保存到桌面 | 簡體人人書 | 手機版
傳記回憶文學理論偵探推理驚悚懸疑詩歌戲曲雜文隨筆小故事書評雜誌
人人書 > 雜誌 > 跨虛拟機的Row Hammer攻擊和權限提升

跨虛拟機的Row Hammer攻擊和權限提升

時間:2024-11-06 07:53:29

RowHammer攻擊是一種針對動态随機存取内存(DRAM)的攻擊。它利用高密度内存中相鄰存儲單元相互間的電磁作用來引發錯誤。通過在一定模式下的高頻率反複内存訪問,攻擊者可以在其原本無權訪問的内存區域引發存儲值的變化。

軟件系統的安全是建立在正确執行的硬件/軟件協議的基礎上的。違反這些協議會帶來嚴重的安全漏洞。例如操作系統的安全建立在内存中的數據和代碼無法在缺乏操作系統授權的情況下被修改的假設上。然而,近來出現的RowHammer攻擊卻能破壞這種假設,并帶來一系列安全問題。這種攻擊可以在不訪問目标内存區域的前提下使其産生數據錯誤。

RowHammer攻擊利用了内存設計中的缺陷。現代大容量内存有着很高的内存單元密度。這使得單元間的相互電磁作用變得更為顯著。電磁影響會加速電容電壓的變化,帶來潛在的數據丢失威脅。這種被稱作“DisturbanceError”的漏洞多年前就已被發現,但是它直到最近才被發現能夠被軟件人為觸發。尤其值得注意的是,快速并且重複地激活同一個内存行(DRAMRow)的訪問模式能大大提高相鄰行出現幹擾錯誤的可能性。

RowHammer漏洞被發現後的短時間内,利用它進行的安全攻擊就陸續出現,例如,Google的軟件工程師Seaborn展示的兩種權限提升攻擊(Google的NaCl沙盒逃脫以及在Linux中的用戶态程序獲取内核态内存訪問權限)。其他的研究以用高級程序設計語言(如JavaScript)觸發RowHammer為目标。這樣一個攻擊者就可以通過網絡中注入的惡意代碼,遠程地引發内存錯誤并實現權限提升。

對于服務器端的攻擊研究要遠少于對客戶端攻擊的研究,而RowHammer的服務器端攻擊在多用戶的雲環境中尤其值得注意。互不信任的用戶在雲中可能共享一台物理機器,分享一些硬件資源,這就包括内存。盡管服務器級的處理器和更昂貴的内存對于RowHammer的防禦更好,研究表明即使配備了帶有自動糾錯(ECC)功能的内存,服務器仍然可能受到RowHammer攻擊的影響。

在研究中,我們着重探索了RowHammer攻擊在跨虛拟機環境中的應用,并提出了在雲環境中的威脅。我們的目标并不是攻擊雲服務器,進而探究其在這種攻擊面前有多脆弱,而是探索在硬件存在這種錯誤的情況下,雲系統中基于虛拟化的隔離是否可以被破壞。

圖1基于圖模型的XORscheme分析算法強化的RowHammer攻擊

在本文中提出了一種高可靠度且高确定性的double-sidedRowHammer攻擊。這種攻擊通過攻擊目标内存行的兩個相鄰行來提高攻擊效果。但是這就需要我們了解物理地址是如何被分配到内存中的,比如物理地址中的哪些位決定了内存的channel、bank、row等。這使得我們可以找到同一個bank中的相鄰行(row)。然而,Intel拒絕公布這些相關信息。另外,即使使用同樣的處理器和同樣的内存控制器,這種分配方法還會因為内存(DRAMmodule)的區别而不同。

為了解決這個問題,我們提出了一種算法來破解物理地址的動态分配機制。内存芯片(chip)中的每個bank都有一個行緩沖器(rowbuffer)來緩存最近使用的行。因此,如果交替訪問同一個bank中兩個不同的行,由于行緩沖器的沖突,會觀察到一個高延遲。這種訪問延遲的增加形成了一個時延通道(timingchannel)。可以通過這個通道來确定兩個物理地址是否被分配到了同一個bank的不同行。通過交替訪問兩個隻有特定bit不同的物理地址,可以利用它們是否在同一個bank的不同行中。基于這個事實,能夠推斷出物理地址中這些特定bit的功能,例如是否決定了bank,row,column等等。

在這個時延通道的基礎上,我們提出了一種新的基于圖模型的算法來破解物理地址中存在的XORscheme。為了提高内存性能,物理地址分配時會将某些決定行的bit和一些其他bit進行XOR操作,并用這個XOR的結果決定bank或channel等。在圖模型算法中,每個物理地址的bit是一個節點,通過内存訪問延遲我們可以得到節點間是否存在XOR關系。如圖1所示就是一個我們的圖模型算法的例子,圖中上半部分是通過測試四個bit(15,16,18和20)所建立的圖模型,而下半部分是則是它對應的XORscheme。這種算法能在一到兩分鐘内分析出我們的各個測試機器的内存分配機制。

在了解物理地址的分配機制後,就可以從Xen虛拟機中進行double-sidedRowHammer攻擊。首先通過實驗分析了哪種RowHammer攻擊的方法最為有效(例如是否引入mfence指令)。接着,我們通過從虛拟機中攻擊所有可訪問内存行的方法找到足夠多的可攻擊bit。它們需要在特定的位置,并且可以被重複觸發錯誤。由于每個虛拟機僅僅被分配到一小部分物理内存,我們也設計了能夠測試多于初始分配内存的方法。另外,還設計了一個安全模式來減少可能使得系統崩潰的内存錯誤。

圖2頁面表替換攻擊(PageTableReplacementAttack)跨虛拟機環境下的RowHammer權限提升

以往的研究都寄希望于随機的RowHammer攻擊能恰好在pagetable中産生内存錯誤。不同于這些方法,我們設計了一種确定性的攻擊來獲得跨虛拟機環境下的任意内存位置讀寫權限。圖2展示了整個權限提升攻擊的過程。攻擊者是一個沒有特殊權限的普通虛拟機,在發起攻擊前能對自己的内存空間進行讀寫操作。雖然攻擊者所擁有的pagetable都被維護在攻擊者自己的内存空間中,攻擊者并不能直接修改pagetable。所有的修改必須通過hypercall被hypervisor審核。在攻擊前,通過RowHammer攻擊在攻擊者的内存空間裡找到一個可用的flippablebit,并且它在page中的相對位置需要滿足一定條件。我們要求在将一個page(4K字節)均分成64個64bit長的段後,flippablebit在這個64bit段中的位置對應一個pagetableentry中的pageframenumber部分。

首先,找到一個last-levelpagetable(即PT)和一個攻擊者控制的普通page。這兩個page的物理地址隻有一個bit不同,并且這個不同bit的位置就是flippablebit所對應的位置。在這個普通page中僞造一個pagetable。這個僞造的pagetable中的entry指向任意的攻擊者想要訪問的内存物理地址,不論是否受攻擊者的控制。

第二步是将選定的PT所屬的secondlevelpagetable(即PMD)複制到包含flippablebit的page中。由于沒有修改PMD和PT的内容,我們可以直接通過hypercall來把原來的PMD替換成含有flippablebit的page。我們稱這個新的PMD為shadowPMD。需要注意的是,之前所選定的PT在PMD中對應的entry應該包含這個flippablebit。

接下來,通過RowHammer來在shadowPMD的這個entry中産生bitflip,使得原本指向PT的條目轉而指向僞造的PT,證明了這個攻擊方法可以使得一個XenPV虛拟機對于機器上的任意page擁有讀寫權限。并且此時hypervisor和攻擊者的kernel仍然認為這個僞造的PT是一個普通page,因此攻擊者仍然可以通過直接寫入的方式來修改僞造的PT中的entry。

另外,我們還展示了兩個基于這種攻擊的實例。一個例子是HTTPS網絡服務器中的私鑰竊取。我們利用對任意物理内存的讀權限判斷某一内存地址是否儲存的數據結構是否符合一個有效密鑰的結構。

第二個例子展示了如何利用RowHammer攻擊,在不知道目标密碼的情況下登錄一個OpenSSH服務器。被攻擊服務器和攻擊者各是一個虛拟機。它們共享同一台物理機器。我們的主要目标是通過修改内存中SSH服務器進程的代碼來繞過密碼驗證。在進行攻擊前,通過對OpenSSH的彙編和機器代碼的分析,找到跳轉到密碼驗證函數的代碼。首先,利用前面描述的RowHammer攻擊獲得物理機上的任意讀寫權限。然後在内存中搜索這句跳轉到密碼驗證函數的機器代碼。一旦找到了對應代碼,将其改為把驗證通過的返回值直接寫入對應寄存器(如圖3所示)。這樣,一旦有接入請求發送到服務器,驗證函數将不會被調用,而直接通過了驗證。

圖3通過内存修改繞過密碼驗證攻擊主要以XenPV虛拟機位目标。需要注意的是,盡管它正逐漸被HVM所取代,目前它仍然被公共雲服務提供商廣泛使用。這其中就包括AmazonEC2。這給攻擊者提供了攻擊機會。由于目前已經有了很多成功的攻擊能夠在公共雲中實現與目标共用物理機器,建議所有雲供應商停止對PV的使用。
   

熱門書籍

熱門文章