在Yoongu Kim et al的論文中談到了關(guān)鍵的原理:
code1a:
mov (X), %eax // Read from address X mov (Y), %ebx // Read from address Y clflush (X) // Flush cache for address X clflush (Y) // Flush cache for address Y jmp code1a
1,地址選擇:地址X和地址Y必須印射到內(nèi)存的不同row但是又是在同一bank上。
每個(gè)DRAM芯片包含了很多行(row)的單元。訪問一個(gè)byte在內(nèi)存中涉及到將數(shù)據(jù)從row傳輸?shù)叫酒?row buffer"中(放電操作),當(dāng)讀取或者寫入row buffer的內(nèi)容后,再把row buffer內(nèi)容傳輸?shù)皆瓉淼膔ow單元里(充電操作)。這種”激活“一個(gè)row的操作(放電和充電)可以干擾到臨近的row。如果這樣做足夠多的次數(shù),臨近row的自動(dòng)刷新操作(一般是每64ms)可能會(huì)讓臨近row的位產(chǎn)生變化。row buffer作為緩存,如果地址X和Y指向相同的row,那code1a將會(huì)從row buffer中讀取信息而不用任何”激活“操作。
每個(gè)DRAM的bank都有自己的"當(dāng)前已激活的row",所以如果地址X和地址Y指向不同的bank,code1a將會(huì)從那些bank的row buffer中讀取信息而不用反復(fù)的激活row。所以,如果地址X和地址Y指向同一bank上不同的row,code1a會(huì)導(dǎo)致X和Y不斷的被激活,這被稱為ROWHAMMERING。
2,繞過緩存:沒有了code1a中的CLFLUSH指令的話,內(nèi)存讀操作(mov)只會(huì)操作CPU的緩存。CLFLUSH刷新緩存的操作強(qiáng)制讓內(nèi)存的訪問直接指向DRAM,而這會(huì)導(dǎo)致不斷有row被重復(fù)的激活。
小編推薦閱讀國產(chǎn)工具PKAV HTTP Fuzzer滲透測(cè)試助手最新發(fā)布
閱讀FireEye:11.2%的移動(dòng)APP仍存在FREAK漏洞
閱讀惠普漏洞:惠普ArcSight企業(yè)安全系列產(chǎn)品曝高危安全漏洞
閱讀騰訊、360各顯神通,分別秒殺IE、Flash、PDF項(xiàng)目
閱讀蘋果Mac OS X系統(tǒng)被發(fā)現(xiàn)存在DLL劫持漏洞
閱讀金融行業(yè)平臺(tái)的針對(duì)性防御滲透測(cè)試
閱讀D-Link(友訊)路由器曝遠(yuǎn)程文件上傳及命令注入漏洞(已發(fā)布安全更新)
閱讀Win10將使用P2P進(jìn)行系統(tǒng)更新,引發(fā)安全擔(dān)憂
閱讀美國最大的無卡ATM網(wǎng)絡(luò)即將推出,從此告別刷卡!
閱讀谷歌應(yīng)用漏洞泄漏超過28萬條私人WHOIS數(shù)據(jù)
閱讀使命召喚、魔獸世界、英雄聯(lián)盟……專攻游戲的勒索軟件TeslaCrypt
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]
湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2025 haote.com 好特網(wǎng)