最快69秒逆向DRAM地址映射,百度安全論文入選國際電子設計頂會DAC

導讀:近日,國際頂級設計自動化大會DAC大會公佈DAC 2020會議議程和論文名單,由百度安全發表的《DRAMDig: A Knowledge-assisted Tool to Uncover DRAM Address Mapping》成功入選。緩存

本篇論文介紹了由百度安全所研究設計的DRAM address mapping逆向工具——DRAMDig,可以在平均7~8分鐘時間(最快僅須要69秒),快速、可靠地逆向出DRAM地址映射 ——Rowhammer攻擊實現的關鍵步驟。該工具可用來評估我的主機、雲計算基礎設施是否受到Rowhammer攻擊的威脅。安全

DAC是以電子設計自動化(EDA)和嵌入式系統及軟件(ESS)爲主題的國際公認的最頂尖學術會議,也是中國計算機學會(CCF)認定的A類會議,被譽爲EDA界的奧斯卡。大會每一年吸引全球知名的學者參與成果發佈和技術討論,近兩年論文接受率維持在20%左右。架構

image.png
圖1. 2020 DAC Accepted Papersapp

談到Rowhammer攻擊,整個安全行業必定都不陌生,2014卡內基梅隆大學 宣佈發現一種存在於動態隨機儲存器(下稱DRAM)的漏洞,藉助這項漏洞,攻擊者能夠經過反覆加載內存的特定行來實現帳戶提權,研究一經發表,便掀起業內極大轟動,由於這代表了無論是PC、手機,無論操做系統是Linux、Windows··,幾乎全部搭載DRAM內存的X86構架CPU的設備都會都會存在安全隱患,影響不言而喻。ide

那麼,今天咱們就帶你們瞭解一下,究竟顛覆攻擊邏輯的Rowhammer究竟是什麼?由百度安全研究員Minghua Wang和Yueqiang Cheng聯合Henry Zhang(來自澳洲Data61)所研究設計的映射逆向工具DRAMDig,又是如何快速、可靠地逆向出觸發Rowhammer攻擊的DRAM地址映射?函數

「一招通殺」全部設備 ——Rowhammer攻擊原理

從硬件角度來看,計算機就是一個龐大的集成電路,由大量的電子管、繼電器和各類電氣元件組合而成。其中用來存儲信息用的物理內存,就是咱們上面提到的DRAM。就像去圖書館找一本書,你須要經過書的類型和編碼,定位到它在哪個書架,哪一排,哪一格,DRAM裏想要找到存儲的某一數據,也有一套明確的訪問路徑:channel→DIMM→rank→chip→bank→cell。因此,計算機內存就是由無數個內存存儲單元(下簡稱cell)構成的電路板。工具

image.png
圖2.內存存儲單元cell結構測試

cell由一個晶體管和一個電容組成,就像一個小電池,每一個cell存放1 bit數據,而計算機裏全部的內容,本質上都是一堆數據編碼,均可以用相似01010101001這樣的二進制來表達——體如今cell上,晶體管通電狀態表示1,不通電狀態表示0。因此說,無論你在電腦裏存放的文檔、照片,下載的遊戲、音樂程序,亦或是計算機自己的操做系統,其實歸根結底都是經過必定規則存儲在cell裏的「0」或「1」。編碼

然而近年來,隨着人們生產生活對計算機存儲的需求要求更高,設備廠商在不改變內存電路板面積大小的前提下,讓其可以存儲更多的數據,只能將cell的設計越作越多,排列愈來愈近,密度大幅度增長,雖然製做工藝有所提高,但仍是會存在一種假設,那就是相鄰的cell在運行中可能會受到干擾,若是頻繁「轟炸」某兩行(行話稱之爲row),就可能會形成中間一排腹背受敵、上下夾擊,從而出現比特位翻轉,也就是0變成1,1變成0...雲計算

業內把這種上下敲擊的瘋狂操做,稱爲double-sided Rowhammer test,而致使比特位翻轉的這個攻擊方式就叫作Rowhammer攻擊,Row是行,Hammer是反覆敲擊,如此簡潔明瞭,一針見血。

固然若是隻是單純的瘋狂改寫數據,以此來搞破壞也過過小看Rowhammer攻擊的威力了,其實攻擊者的深層目標是利用Rowhammer攻擊來提高帳號權限,得到通往各路關卡的「通行證」。此前就有學者發現,經過rowhammer能夠打破進程間隔離,user-kernel隔離,VM間隔離以及VM-VMM間隔離,從而得到更多系統權限。

再舉個例子,有攻擊者企圖獲取你的網銀支付密碼,但此類程序開發者爲了安全起見,都會將諸如密碼、身份證號等核心數據,設立重重關卡,存放在金字塔的頂端,除了用戶自身,其餘人沒法觸及。而有了Rowhammer攻擊,雖然被設立關卡,攻擊者卻能夠繞過這些,選擇經過更底層去找到儲存核心數據的cell,而後反覆敲擊其「隔壁鄰居」,引發比特位翻轉,來實現最終獲取支付密碼的目的。

提及來容易作起來難」 ——Rowhammer攻擊難點

讀到如今,你是否是會有一個這樣的疑問,計算機內存裏密密麻麻分佈着cell,即便理解了Rowhammer攻擊的操做手法,若是不知道哪些cell裏隱藏着帳號提權的核心線索,一頓轟炸操做無異於隨機「抽盲盒」,能不能找到關鍵全靠運氣。

因此很長時間以來,對於Rowhammer攻擊的研究只停留在理論階段,歸根結底緣由是:找到那最爲關鍵的兩個row實在是太難了!

專業上,定位到最關鍵的兩個row須要解決的核心問題,是要找出DRAM核心數據所在的DRAM地址,其實也就是逆向DRAM地址映射(下簡稱DRAM address mapping)的過程。

上文咱們講到過,在計算機裏,無論是什麼類型的文件、信息、數據,最終都會以0101011的形式被存儲在內存裏,程序運行中須要訪問到這些數據,只能經過虛擬地址來訪問。這些虛擬地址在操做系統中首先轉換成物理地址,而後物理地址再經過CPU中的Memory Controller轉爲爲DRAM中的地址。物理地址與DRAM中地址的映射關係是一段未公開的「咒語」,須要逆向分析來解決。

對此,百度安全研究員調研了的目前行業公開的全部DRAM address mapping逆向工具並作了分析,結果顯示這些工具的表現並不盡如人意,或是沒法通用於各種型號的CPU,或是操做時間過長,須要數小時的時間,還有的甚至檢測屢次,得出的結果先後不一致。

而這次即將在DAC大會上公開的,由百度安全所研究設計的DRAMaddress mapping逆向工具——DRAMDig, 可以在平均7~8分鐘時間(最快僅須要69秒),快速、可靠地逆向出DRAM地址映射,而且通用於包括Non-ECC DDR3\DDR4內存條,以及當前市面上流行的Intel CPU(Sandy Bridge ~ Coffee Lake)。

更經得起推敲」—— DRAMDig工具核心原理**

目前已有逆向工具(如DRAMA)沒法穩定、快速、準確逆向出DRAM address mapping,主要有以下幾個方面緣由。首先,已有工具對DRAM自身信息挖掘不到位,好比缺少對bank數目、row/column位數的理解;其次,已有工具中存在物理地址盲目的隨機選取,致使逆向結果不穩定、不許確,同時存在大量的窮舉操做,致使較大時間開銷;最後,已有工具對interleaved mode形式的DRAM address mapping逆向能力有限。

由百度安全研發的新型DRAM address mapping映射逆向工具——DRAMDig,提出了Domain-knowledge assisted的方案,可以充分挖掘、利用已有的knowledge來輔助逆向,使得最終獲得的逆向結果準確、穩定、快速。Domain knowledge包括三個方面:

(1)DDR3/DDR4 Specification。咱們從Specification中可以獲取有關DRAM row/column bits的確切數量;
(2)系統信息。經過程序來獲取DRAM中bank數量,系統的物理內存大小(物理地址中有效地址位數)等信息;
(3)經驗觀察。咱們認爲Intel CPU上的bank尋址採用的是線性XOR計算方式,參與XOR計算的是物理地址中的特定bits(稱之爲bank bits)。例如,在某款Intel CPU,以及一個包含8個bank的DRAM的設定下,bank尋址函數表示爲:(BA0, BA1, BA2)。其中,BA0 = bit6⊗bit13, BA1= bit14⊗bit16,BA2=bit15⊗bit18。

DRAM address mapping逆向目標是肯定物理地址到DRAM中地址的映射關係。包括兩個方面,第一,還原物理地址中bits的角色,即哪些是row bits,column bits和bank bits;第二,肯定bank尋址函數。圖3描述了DRAMDig的工做流程。在介紹具體流程以前,咱們首先簡要介紹一個DRAMDig逆向所依賴的一個基本操做原語,它是DRAMDig工做的基石。

image.png

圖3. DRAMDig逆向流程

這個操做原語是一個timing channel。具體而言,這個timing channel是由同一DRAM bank中的row buffer衝突引發的。DRAM中每一個bank都有一個row buffer來緩存最後訪問到的row。若是一對地址在同一bank的兩個不一樣row中,交替訪問它們時row buffer將反覆從新加載、清除這兩個row,致使row buffer衝突。而若是兩個地址位於同一row或不一樣bank中,訪問這兩個地址時不會發生row buffer衝突。顯然發生row buffer衝突狀況下,也就是兩個地址在同一bank不一樣row時,獲得的latency更大。所以,根據兩個地址的latency測量結果的高低,能夠判斷它們是否在同一bank不一樣row。

在這個操做原語基礎之上,咱們來簡要介紹DRAMDig的逆向流程。主要分爲三個階段。

第一階段,精心選取多對物理地址,利用timing channel進行latency測量,根據測量結果對row、column和bank bits範圍進行初步的劃分。首先從高到低考察物理地址中每一個bit,選取僅有這個bit不一樣的兩個物理地址測量latency。若是是high latency,則說明它們在同一個bank不一樣row,當前只有1個bit不一樣,因此這個bit是row bit。而後選定1個row bit和一個非row bit,再選取僅有這2 bit不一樣的物理地址測量latency。若是是high則說明它們在同一bank不一樣row,這個非row bit不會是bank bit,而是column bit。這樣兩輪測量以後可以獲得row bits和column bits的位置範圍,剩餘的bits是bank bits。

第二階段,選取覆蓋bank bits全部取值狀況的物理地址,再次利用timing channel來測量latency。將latency爲high的地址劃分到一堆,最終這些物理地址將被劃分爲#bank堆,同一堆物理地址都在一個bank中,並且每一堆的物理地址個數大體相同。而後依次在每堆中考察bank bits之間的XOR組合狀況,找出堆中全部物理地址都知足的bits XOR方式,做爲候選bank尋址函數。在全部地址堆都考察完畢後,將候選bank尋址函數進行消元處理,獲得最終的bank尋址函數。

第三階段,肯定具備多重角色的bits,這是因爲存在interleave mode的尋址狀況,例如,有些bit既是row bit也是bank bit,有些bit既是column bit也是bank bit。還原多重角色row bits的方式是,考察2-bit的bank尋址函數,選取僅有這2個bit不一樣的兩個物理地址,測量它們的latency。若是測量結果是high latency,則認爲高位bit是row bit。對於多重角色的column bits,根據Domain knowledge和第一階段的還原結果,可以獲知未還原的column bits數量(N)。在已還原出column bits的位置基礎上,按照從低到高的順序,將未還原數量(N)的bits認爲是column bits。

因爲DRAMDig選取了覆蓋全部bank bits取值狀況的物理地址,不但可以真實且完整揭示bank尋址方式,並且可以根據latency測量結果將這些地址均勻地劃分到#bank堆,保證了bank尋址函數還原結果的準確性和穩定性。另外,DRAMDig僅須要在bank bits空間內的尋找bank尋址函數,不須要在全部bits空間內窮舉,大大下降了時間開銷。

據介紹,百度安全利用DRAMDig在9臺具備不一樣CPU和內存設定的機器上進行了DRAM address mapping逆向實驗。實驗結果如表1所示。能夠看到,實驗的CPU涵蓋Sandy Bridge、Ivy Bridge到Coffee Lake等多個新老微架構(Microarch.),內存條涵蓋DDR3和DDR4 (DRAM Type,Size),和包含多種DRAM設定方式(DRAM Config)。

image.png

表1. DRAMDig在9個不一樣機器設置上的逆向結果

其中Config表示以下參數:#channel,#DIMM/channel,#rank/DIMM,#bank/rank.

在這些逆向實驗中,最多須要17分鐘,最少須要69秒能夠得到逆向結果,如圖4所示。相比較逆向工具DRAMA而言,DRAMDig具有更短的時間開銷。其中,在第3和第7臺機器中,DRAMA花費了將近2小時都沒有輸出逆向結果。此外,百度安全研究員在實驗中發現,運行DRAMA屢次,很大概率會出現每次逆向結果都不相同的狀況,所以DRAMA在逆向結果的準確性和穩定性方面均沒法保證。

image.png
圖4. DRAMDig和DRAMA逆向時間開銷(單位:秒)

在得到逆向結果基礎之上,爲進一步驗證,百度安全研究員還在多臺機器上進行了double-sided Rowhammer測試,而且和DRAMA進行了對比。使用兩個工具在不一樣的機器上分別進行了5次測試,每次測試5分鐘,最後統計bit翻轉的數量。能夠從表2中看到,DRAMDig可以產生更多的bit flips。有一些測試中DRAMA甚至沒有出現翻轉,而DRAMDig敲出了翻轉,這也可以說明DRAMDig逆向結果的正確性。因而可知,準確的逆向DRAM address mapping對bit翻轉具備很重要的影響,對Rowhammer威脅評估具備很是關鍵的做用。

image.png
表2. DRAMDig和DRAM執行5次double-sided rowhammer測試,每次測試持續5分鐘。DRAMDig比DRAMA產生了更多的bit flip。

結語:毫無疑問,DRAMDig的誕生,大大提高了對DRAM address mapping逆向的效率和準確性,對於高效評估我的主機、雲計算平臺等基礎設施是否受到Rowhammer攻擊的威脅有着重要意義。對於硬件廠商修復Rowhammer漏洞,提高芯片製做工藝,也提供了新的思路。據悉,百度安全正在計劃將DRAMDig開源。同時,百度安全也開放自身頂尖技術能力,以開放共享的姿態,歡迎整個行業上下游攜手一道,打破技術壁壘,推動安全生態建設,保護數據隱私安全。

瞭解更多項目信息,歡迎關注【百度安全實驗室】公衆號

相關文章
相關標籤/搜索