通殺所有系統(tǒng)的硬件漏洞?聊一聊Drammer,Android上的RowHammer攻擊

大家肯定知道前幾天剛爆出來一個linux內(nèi)核(Android也用的linux內(nèi)核)的dirtycow漏洞。此洞可以說是個神洞,通過dirtycow,一個普通權(quán)限的app可以做到root權(quán)限的文件任意寫,隨后還可以轉(zhuǎn)化為android上的通用root。就在大家紛紛埋頭研究dirtycow的時候,Drammer橫空出世,號稱也可以root最新版的Android 6.0.1,同時還放出了CCS論文POC。

那么這個Drammer到底是什么東西呢?

Drammer可以說是一種針對android設(shè)備的攻擊方式,利用的是內(nèi)存芯片設(shè)計上的一個缺陷。然而,這個問題并不是只出現(xiàn)在Android系統(tǒng)上,而是所有使用內(nèi)存的系統(tǒng)都會出現(xiàn)這個問題。最早提出這種攻擊方式的人是卡內(nèi)基梅隆大學(xué)的Yoongu Kim寫的一篇paper -《Flipping Bits in Memory Without Accessing Them: An Experimental Study of DRAM Disturbance Errors》 在這篇文章中,作者提到有個有趣的現(xiàn)象,如果不斷的訪問兩個具有"侵略者"性質(zhì)的虛擬地址會讓一個具有"受害者"性質(zhì)的內(nèi)存數(shù)據(jù)進(jìn)行位翻轉(zhuǎn),更神奇的是這個具有"受害者"性質(zhì)的內(nèi)存可能會在當(dāng)前進(jìn)程可訪問的虛擬地址以外

為什么會有這種現(xiàn)象呢?

原因是內(nèi)存廠商為了能讓內(nèi)存芯片存儲更多的數(shù)據(jù),于是將內(nèi)存中的DRAM(The Dynamic Random Access Memory)cell越做越小并且離的越來越近,從而導(dǎo)致相鄰的cell在通電的過程中會受到影響。因此,如果我們不斷的訪問某個位置上的內(nèi)存,就可能會造成相鄰的內(nèi)存進(jìn)行位翻轉(zhuǎn)。隨后google project zero還通過PC上的linux提權(quán),證明了這種現(xiàn)象的確存在并且可以用來進(jìn)行攻擊(https://googleprojectzero.blogspot.com/2015/03/exploiting-dram-rowhammer-bug-to-gain.html)并將這種攻擊方式稱為RowHammer。因此,這次出現(xiàn)的drammer是受之前研究的啟發(fā),從而實現(xiàn)了Android上的rowhammer攻擊,所以drammer全稱其實是DRoid and rowhAMMER。

網(wǎng)友評論