今天看了一篇 IT 之家關(guān)于 AMD 處理器受 RowHammer 內(nèi)存攻擊影響的報(bào)道,心血來潮了解了一下 RowHammer 攻擊的原理,把了解到的知識(shí)記錄下來社痛。
RowHammer 攻擊是一種相對較新的攻擊方式浦辨,它利用了現(xiàn)代動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)的物理缺陷,這種攻擊方式不同于傳統(tǒng)的軟件漏洞利用仆百,它直接針對硬件的弱點(diǎn)驶社。這種攻擊利用了 DRAM 在運(yùn)行過程中產(chǎn)生的意外電荷泄漏效應(yīng),可能導(dǎo)致存儲(chǔ)器單元泄露電荷并造成比特翻轉(zhuǎn)涵防。這個(gè)問題主要是由于現(xiàn)在 DRAM 存儲(chǔ)單元高密度排列造成的闹伪。通過在一定模式下的高頻率反復(fù)內(nèi)存訪問,攻擊者可以在其原本無權(quán)訪問的內(nèi)存區(qū)域引發(fā)存儲(chǔ)值的變化壮池。這種攻擊可以導(dǎo)致權(quán)限提升偏瓤、數(shù)據(jù)泄漏和拒絕服務(wù)等安全問題。
要理解 RowHammer 攻擊椰憋,首先需要了解 DRAM 的工作原理厅克。DRAM 通過存儲(chǔ)電荷在電容中來保存信息,每個(gè)電容與一個(gè)訪問晶體管相連熏矿,共同構(gòu)成一個(gè)存儲(chǔ)單元(Cell已骇,如下圖所示)。電容充滿電票编,存儲(chǔ)單元就是 1褪储,電容放完電,存儲(chǔ)單元就是 0慧域,晶體管用來控制電容充放電鲤竹。
這些存儲(chǔ)單元被組織成多行多列,形成一個(gè)二維陣列(Bank昔榴,如下圖所示)辛藻。當(dāng)讀取或?qū)懭雰?nèi)存數(shù)據(jù)時(shí),一個(gè)存儲(chǔ)單元行會(huì)被激活互订,整行的數(shù)據(jù)會(huì)被加載到行緩沖器(row-buffer)中吱肌,同時(shí)存儲(chǔ)單元中的電容放電,在行緩沖器內(nèi)完成數(shù)據(jù)的讀寫操作仰禽。在操作完成后氮墨,行緩沖器內(nèi)的數(shù)據(jù)會(huì)寫入原來的存儲(chǔ)單元行之中,同時(shí)存儲(chǔ)單元中的電容充電吐葵。所以规揪,不論是讀還是寫數(shù)據(jù),存儲(chǔ)單元都會(huì)充放電温峭。
在內(nèi)存如“白菜”價(jià)的今天猛铅,不改變內(nèi)存電路板面積大小的前提下,為了能存儲(chǔ)更多的數(shù)據(jù)凤藏,只能將存儲(chǔ)單元排列的越來越近奸忽,密度大幅度增加堕伪。雖然芯片的制程有所提升,但每個(gè)電容之間的隔離不是完全的月杉。當(dāng)一個(gè)行被頻繁激活時(shí)刃跛,相鄰行的電容可能會(huì)受到電磁干擾,導(dǎo)致存儲(chǔ)的比特從 1 翻轉(zhuǎn)為 0苛萎,或者相反桨昙。這種比特翻轉(zhuǎn)可以被惡意利用,攻擊者可以通過精心設(shè)計(jì)的內(nèi)存訪問模式來控制比特翻轉(zhuǎn)的位置和結(jié)果腌歉。通過高頻率地讀取 DRAM 中的某一行蛙酪,可以影響到相鄰行中的數(shù)據(jù),這種現(xiàn)象被稱為 RowHammer翘盖,因?yàn)樗拖裼缅N子反復(fù)敲擊內(nèi)存行一樣桂塞。如下圖所示,第 1馍驯、3 行是攻擊行阁危,這兩行中間是被攻擊行,攻擊行不停地充放電汰瘫,中間行大概率會(huì)出現(xiàn)比特翻轉(zhuǎn)狂打。
即使理解了 RowHammer 攻擊的原理,如果不知道哪些存儲(chǔ)單元里隱藏著關(guān)鍵數(shù)據(jù)混弥,毫無目的的去攻擊也沒有意義趴乡。更何況程序在訪問內(nèi)存數(shù)據(jù)時(shí),并不會(huì)直接使用內(nèi)存中的真實(shí)地址蝗拿,而是使用虛擬地址映射的方式進(jìn)行訪問晾捏。這使得找到數(shù)據(jù)的真實(shí)地址變得更加困難,所以很長時(shí)間以來哀托,對于 RowHammer 攻擊的研究只停留在理論階段惦辛,解決這個(gè)問題的關(guān)鍵在于如何實(shí)現(xiàn)逆向 DRAM 地址映射。由百度安全所研究設(shè)計(jì)的逆向工具 DRAMDig 能夠在平均 7 ~ 8 分鐘時(shí)間仓手,快速胖齐、可靠地逆向出 DRAM 地址映射,解決了這一復(fù)雜的問題俗或。感興趣的朋友可以閱讀這篇論文<u>《DRAMDig: A Knowledge-assisted Tool to Uncover DRAM Address Mapping》(DOI: 10.1109/DAC18072.2020.9218599)</u>市怎。
盡管 RowHammer 攻擊非常強(qiáng)大岁忘,但也不是無法防御的辛慰。從硬件層面,新的 DRAM 芯片中實(shí)現(xiàn)了各種緩解措施干像,如目標(biāo)行刷新(Target Row Refresh, TRR)帅腌,或者使用支持 ECC 的 DRAM 內(nèi)存驰弄。軟件層面的解決方案包括增加內(nèi)存訪問的隨機(jī)性,以減少連續(xù)訪問同一行的可能性速客。