通殺所有系統的硬件漏洞?聊一聊Drammer,Android上的RowHammer攻擊
大家肯定知道前幾天剛爆出來一個linux內核(Android也用的linux內核)的dirtycow漏洞。此洞可以說是個神洞,通過dirtycow,一個普通權限的app可以做到root權限的文件任意寫,隨后還可以轉化為android上的通用root。就在大家紛紛埋頭研究dirtycow的時候,Drammer橫空出世,號稱也可以root最新版的Android 6.0.1,同時還放出了CCS論文和POC。
那么這個Drammer到底是什么東西呢?
Drammer可以說是一種針對android設備的攻擊方式,利用的是內存芯片設計上的一個缺陷。然而,這個問題并不是只出現在Android系統上,而是所有使用內存的系統都會出現這個問題。最早提出這種攻擊方式的人是卡內基梅隆大學的Yoongu Kim寫的一篇paper -《Flipping Bits in Memory Without Accessing Them: An Experimental Study of DRAM Disturbance Errors》 在這篇文章中,作者提到有個有趣的現象,如果不斷的訪問兩個具有"侵略者"性質的虛擬地址會讓一個具有"受害者"性質的內存數據進行位翻轉,更神奇的是這個具有"受害者"性質的內存可能會在當前進程可訪問的虛擬地址以外。
為什么會有這種現象呢?
原因是內存廠商為了能讓內存芯片存儲更多的數據,于是將內存中的DRAM(The Dynamic Random Access Memory)cell越做越小并且離的越來越近,從而導致相鄰的cell在通電的過程中會受到影響。因此,如果我們不斷的訪問某個位置上的內存,就可能會造成相鄰的內存進行位翻轉。隨后google project zero還通過PC上的linux提權,證明了這種現象的確存在并且可以用來進行攻擊(https://googleprojectzero.blogspot.com/2015/03/exploiting-dram-rowhammer-bug-to-gain.html)并將這種攻擊方式稱為RowHammer。因此,這次出現的drammer是受之前研究的啟發(fā),從而實現了Android上的rowhammer攻擊,所以drammer全稱其實是DRoid and rowhAMMER。