Rowhammer漏洞致“比特位翻轉(zhuǎn)”,如何解決?

責(zé)任編輯:editor005

作者:Michael Cobb

2016-07-29 14:31:27

摘自:TechTarget中國

讀者們也許會覺得Rowhammer和比特位翻轉(zhuǎn)是音樂及舞蹈行業(yè)的專業(yè)術(shù)語,但其實(shí)他們指的是存在于動態(tài)隨機(jī)訪問存儲(DRAM)——大多數(shù)電子設(shè)備中都存在的一種核心組件中的某種非常嚴(yán)重的漏洞。

讀者們也許會覺得Rowhammer和比特位翻轉(zhuǎn)是音樂及舞蹈行業(yè)的專業(yè)術(shù)語,但其實(shí)他們指的是存在于動態(tài)隨機(jī)訪問存儲(DRAM)——大多數(shù)電子設(shè)備中都存在的一種核心組件中的某種非常嚴(yán)重的漏洞。隨著驅(qū)動器中在每個單獨(dú)的DRAM芯片上的存儲容量的提升,造成了其自身嚴(yán)重的漏洞,其允許攻擊者把DRAM中比特位的值從1改成0,或翻轉(zhuǎn)為相反的數(shù)值。這一基于硬件的攻擊能夠繞過核心系統(tǒng)保護(hù)措施,使數(shù)據(jù)安全和流程之間產(chǎn)生隔離。這威脅到了電子數(shù)據(jù)安全的基本原則,即內(nèi)存位置的內(nèi)容只有在它們被寫入時才發(fā)生變化。

Rowhammer漏洞致“比特位翻轉(zhuǎn)”,如何解決?

DRAM芯片包含數(shù)以百萬計排的電容,包括充電或放電兩種類型,這兩種狀態(tài)代表了比特位的值,即0和1。要訪問DRAM芯片中存在的值,系統(tǒng)需要給整排電容進(jìn)行同時加壓,并讀出所有的值,由于性能的原因使得要一次只讀取其中某位比特的信息是不現(xiàn)實(shí)的。事實(shí)上,DRAM的讀取操作實(shí)際上是一個讀取和更新的操作。讀取一行的值需要其電容放電,電容也就丟掉了它存的值。這意味著數(shù)據(jù)必須通過給電容充電的方式立即寫回。這種讀取和更新過程實(shí)際上發(fā)生在DRAM定期給電容放電來穩(wěn)定自己,這就是術(shù)語中是動態(tài)RAM(Dynamic RAM),而不是靜態(tài)RAM的原因。

隨著電容越來越小,排列越來越近,要防止相鄰電容之間相互影響干擾已經(jīng)變得越來越難??焖俸头磸?fù)地訪問一排電容,會在相鄰行的電容間產(chǎn)生干擾錯誤和比特位翻轉(zhuǎn)。比特位翻轉(zhuǎn)很少發(fā)生在正常操作期間,因為緩存會限制DRAM讀取和更新循環(huán)需要發(fā)生的次數(shù)。然而,卡內(nèi)基梅隆大學(xué)的研究人員在2014年發(fā)表的一篇題為《無訪問情況下的內(nèi)存比特位翻轉(zhuǎn)——DRAM干擾性錯誤的試驗研究》的論文表明,重復(fù)性使用機(jī)器碼指令CLFLUSH或Cache Line Flush,能夠清除緩存并強(qiáng)制進(jìn)行讀取和更新。研究人員發(fā)現(xiàn),利用這一技術(shù)迫使內(nèi)存反復(fù)讀取并給一排電容充電的話,將引起大量的比特位翻轉(zhuǎn)——產(chǎn)生所謂的Rowhammering現(xiàn)象。

谷歌的Project Zero團(tuán)隊最近的研究發(fā)現(xiàn),惡意程序可以利用比特位翻轉(zhuǎn)的Rowhammering運(yùn)行未經(jīng)授權(quán)的代碼。該團(tuán)隊設(shè)計出如何使CPU重定向,從錯誤的內(nèi)存地址運(yùn)行代碼,利用Rowhammering改變操作系統(tǒng)的內(nèi)存映射的內(nèi)容。來自阿姆斯特丹自由大學(xué)的四位研究人員已經(jīng)在Windows 10上使用Rowhammering與新近發(fā)現(xiàn)的一種存儲重復(fù)數(shù)據(jù)刪除矢量相結(jié)合的方法成功實(shí)現(xiàn)攻擊。即使系統(tǒng)的補(bǔ)丁完全修復(fù),并運(yùn)行著各種安全加固措施,此種方式還是可以使攻擊者控制操作系統(tǒng)。

Rowhammering漏洞在現(xiàn)實(shí)中出現(xiàn)可能還需要一段時間,但這種設(shè)計缺陷存在當(dāng)今計算機(jī)設(shè)備的基本硬件之中。硬件供應(yīng)商都試圖在DDR4架構(gòu)中引入防止或減少Rowhammering漏洞的緩解措施或功能,但谷歌公司以及Third I/O公司的研究表明,DDR4也不能免疫Rowhammering,要防范這一漏洞,業(yè)界還有許多事情要做。

管理員們可以借助FuturePlus Systems Corp的FS2800 DDR Detective軟件的Rowhammer監(jiān)測功能或谷歌的免費(fèi)Rowhammer測試工具來檢查自己的設(shè)備是否存在漏洞。而另一種否定的聲音認(rèn)為,沒有必要認(rèn)為設(shè)備在比特位翻轉(zhuǎn)上存在漏洞,因為這一現(xiàn)象很難實(shí)現(xiàn),他們的假設(shè)是基于比特位翻轉(zhuǎn)是不存在。這些工具只能運(yùn)行在測試機(jī)器上,要求測試機(jī)和真實(shí)環(huán)境具有類似的硬件配置,且那些包含敏感數(shù)據(jù),因為工具的操作可以永久性地?fù)p壞DRAM芯片,導(dǎo)致數(shù)據(jù)受損或系統(tǒng)崩潰。

這一存在設(shè)備硬件端的漏洞,已然超越了傳統(tǒng)反病毒和安全軟件的對于解決方案的認(rèn)識,該問題無法僅僅通過升級操作系統(tǒng)軟件來解決。用戶正寄希望于硬件供應(yīng)商提供解決措施,例如提升最小內(nèi)存更新頻率來降低Rowhammering對比特位翻轉(zhuǎn)的影響。不幸的是,這一辦法將對DRAM能耗和性能產(chǎn)生不利影響。DRAM模塊制造商們對他們的產(chǎn)品如何應(yīng)對Rowhammering均守口如瓶,可能的緩解機(jī)制也被深埋在產(chǎn)品規(guī)格說明書中。思科在降低級別變化方面提出了一些建議能夠緩解DRAM Rowhammer漏洞,但任何新的參數(shù)都必須現(xiàn)在測試環(huán)境中進(jìn)行配置測試后二次配置才能應(yīng)用。由曼徹斯特大學(xué)計算機(jī)科學(xué)學(xué)院正在開發(fā)能夠阻止Rowhammer漏洞的可行的硬件解決方案,簡稱為ARMOR,是一種內(nèi)存運(yùn)行時的熱排探測器。

如果在測試過程中發(fā)生了比特位翻轉(zhuǎn),管理員應(yīng)該考慮監(jiān)視那些經(jīng)常性具有很高CPU占用率和高緩存丟失的進(jìn)程,這很有可能是基于Rowhammer攻擊方式的特征。根據(jù)評估的風(fēng)險水平,將硬件移動到支持偽目標(biāo)行更新(Pseudo Target Row Refresh)或目標(biāo)行更新(Targeted Row Refresh)的平臺,通過目標(biāo)行更新運(yùn)行某一hammered row可能是一種選擇,但最好的建議是直接與您的供應(yīng)商尋求意見,如何才能完全地保護(hù)特定的環(huán)境免受攻擊。最后,任何快速的解決方法將很有可能以BIOS更新的形式發(fā)布,管理員們應(yīng)保證他們能實(shí)時跟蹤硬件廠商的安全通知。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號