IBM的科學家將谷歌發現的DRAM位翻轉攻擊方法Rowhammer應用到了MLC NAND閃存上。
谷歌Project Zero在2015年發現了Rowhammer,他們演示了頁表項RAM位翻轉可讓攻擊者入侵Linux系統。
因為該漏洞不是通過找尋開發者失誤,而是通過攻擊內存來入侵操作系統,即便僅適用于沒有糾錯保護(例如新型RAM中的錯誤檢查和糾正)的有限存儲類型,其能力也是十分強大的。
自 Project Zero 的初始結果發布之后,科學家們還探索了其他方式或其他受害者。例如,2016年Rowhammer就演變成了一種安卓root攻擊。
本周Usenix在溫哥華舉辦的W00T17大會上,IBM蘇黎世研究所的一組科學家闡述了 MLC NAND 閃存Rowhammer攻擊,并打算進行實際演示。
聽起來很恐怖吧?不過,好消息也不是沒有:這是個本地而非遠程攻擊,而且研究員們將攻擊限制在了文件系統級別,而不是對整個系統。
壞消息是,NAND Rowhammer 對精確性的要求比前代要小:最初的谷歌研究通過翻轉單個比特位起效,而現在攻擊者可從MLC NAND閃存漏洞獲得的攻擊基礎,則是粗粒度的破壞。
換句話說,他們較弱的攻擊基礎,仍然足以發起本地提權攻擊。
研究人員在論文中指出,要達到這一步,從閃存芯片到操作系統的每層防護都必須突破掉:
芯片上存儲單元間的干擾保護;
閃存控制器上用來提升設備可靠性的干擾及錯誤糾正代碼;
SSD控制器上為讓攻擊者難以預測內存分配而設的損耗均衡及區塊布局算法;
緩存和錯誤檢測之類需繞過的文件系統防護措施。
只有層層突破到這種程度,攻擊者才能最終拿出他們的攻擊載荷。
下面的視頻演示了一次成功提權:
在按4 KB塊大小格式化的Linux ext3文件系統中,一個可以創建100GB大小文件的攻擊者,有99.7%的概率進行成功的漏洞利用。
Linux中讓該攻擊可行的特性就是索引節點(inode),它存儲了對象數據的屬性和對該攻擊非常重要的磁盤塊位置數據的特殊數據結構。
當某文件大小超過12塊時,內核文件系統驅動就會去寫一個間接塊,而這種寫操作對于攻擊者而言非常易于計時和觸發的。
盡管研究員們只走到了本地漏洞利用這一步,但他們也指出,利用瀏覽器中JavaScript一類的東西,遠程攻擊也是可行的。
因為瀏覽器確實允許文件系統讀寫操作,盡管這是間接的。通過Web內容本地緩存、cookies,或者使用HTML5存儲API,將該攻擊方法擴展成遠程攻擊也不是不可能。
他們指出,最佳防御,就是用dm-crypt一類的東西進行磁盤加密。