針對管理程序的“風(fēng)水反轉(zhuǎn)”攻擊對企業(yè)用戶有著短期和長期的影響。專家Ed Moyle在本文中介紹了這個漏洞攻擊的工作原理以及應(yīng)應(yīng)對方法。
在安全領(lǐng)域中的相關(guān)專業(yè)人員都應(yīng)該知道的是,當(dāng)后果和影響足夠嚴(yán)重時, 比較有利的一種做法就是將當(dāng)前環(huán)境保持在趨勢模型中相對不會發(fā)生的場景中。例如,最近荷蘭阿姆斯特丹Vrije大學(xué)學(xué)生所報告針對云服務(wù)虛擬機(jī)內(nèi)存的風(fēng)水反轉(zhuǎn)攻擊。
對于云用戶來說,這項(xiàng)技術(shù)是相當(dāng)危險的,因?yàn)樗墓舴绞绞浅鋈艘饬锨蚁喈?dāng)聰明的:它主要利用了內(nèi)存管理的功能(特別是重復(fù)數(shù)據(jù)刪除功能)來為Rowhammer帶來最大的影響,它打破了管理程序在過程中的隔離狀態(tài)。換而言之,這是一個在管理程序環(huán)境中針對分段模式的攻擊——而這恰恰是眾多企業(yè)組織的云威脅模型中假定絕不會發(fā)生的情況。
什么是“風(fēng)水反轉(zhuǎn)”?
“風(fēng)水反轉(zhuǎn)”主要涉及跨虛擬邊界找到并反轉(zhuǎn)一個或多個單個比特位。這意味著管理程序上的一臺虛擬機(jī)(VM)會對在同一物理主機(jī)上不同虛擬機(jī)中的比特位進(jìn)行反轉(zhuǎn)。這一攻擊方式能夠奏效的原因有二:內(nèi)存重復(fù)數(shù)據(jù)刪除與Rowhammer。理解這兩個原因是了解風(fēng)水反轉(zhuǎn)如何在技術(shù)層面上發(fā)揮攻擊作用的關(guān)鍵所在。
首先,讓我們來談?wù)剝?nèi)存重復(fù)數(shù)據(jù)刪除。這是一個用于在數(shù)據(jù)中心環(huán)境中最大程度實(shí)現(xiàn)系統(tǒng)效率和性能的功能。可以想像一下,一個管理程序運(yùn)行相同配置的實(shí)例,如Linux(例如運(yùn)行一個LAMP堆棧的東西)。由于這些實(shí)例都具有相同的配置,那么可以想象這些機(jī)器的存儲和內(nèi)存中存在著多少的冗余——在任意時間點(diǎn)的相同狀態(tài)下。內(nèi)存重復(fù)數(shù)據(jù)刪除功能可以有助于最大程度地減少此類浪費(fèi):與系統(tǒng)保留多個完全相同內(nèi)存頁的做法不同,它只保留一個頁面以供在該頁面可能出現(xiàn)的任意位置所共享。所以,例如兩個不同的虛擬機(jī)實(shí)例可能指向同一個內(nèi)存頁面,該內(nèi)存頁面也同時被這兩個實(shí)例所擁有。
其次,則是Rowhammer。Rowhammer是一個硬件級問題,它能夠讓某些有心人有意識地通過專為引起中斷的手工訪問模式來改變動態(tài)RAM(DRAM)中單個電容的充放電狀態(tài)。因?yàn)镈RAM的充放電狀態(tài)代表了其中所存儲的數(shù)值(無論是打開或是關(guān)閉、充電或放電、1還是0),這些訪問模式可以以一個帶外方式來改寫其他內(nèi)存空間。
風(fēng)水反轉(zhuǎn)的攻擊方式是通過在有可能發(fā)生比特位反轉(zhuǎn)且正在運(yùn)行的虛擬機(jī)上查找內(nèi)存空間,從而從攻擊者的角度(內(nèi)存模板)獲得所需的便利。這種內(nèi)存部署的方式使攻擊者能夠控制比特反轉(zhuǎn)。最后,攻擊者執(zhí)行比特反轉(zhuǎn),從而使目標(biāo)內(nèi)存被破壞(或當(dāng)作漏洞被利用)。
那么,攻擊者跨虛擬化邊界執(zhí)行比特反轉(zhuǎn)會帶來什么危害呢?好吧,事實(shí)證明,通過一個比特位的反轉(zhuǎn),攻擊者可以造成很多的破壞。例如,在SSH公共密鑰中進(jìn)行比特反轉(zhuǎn)就可以輕松實(shí)現(xiàn)密鑰因數(shù)分解(從而破壞認(rèn)證)或者針對系統(tǒng)更新修改可信任軟件庫(從而允許在主機(jī)上安裝任意軟件)。所以,從實(shí)質(zhì)上來說,通過對單個比特位的反轉(zhuǎn)操作,攻擊者可以在目標(biāo)系統(tǒng)上為所欲為。
補(bǔ)救措施與寶貴教訓(xùn)
從實(shí)踐的角度來看,相關(guān)從業(yè)人員顯然會希望在短期內(nèi)就采取措施來防止這種類型的攻擊。那么,他們能做些什么呢?風(fēng)水反轉(zhuǎn)一文建議在多租戶環(huán)境中應(yīng)禁用內(nèi)存重復(fù)數(shù)據(jù)刪除功能。
顯而易見,目前并不是每一個云用戶都擁有控制權(quán),或者甚至知道云供應(yīng)商對客戶所使用的何種配置狀態(tài)。這意味著,客戶在多租戶環(huán)境中與公有云供應(yīng)商還有著不少的準(zhǔn)備工作要做。具體來說,應(yīng)由客戶來詢問關(guān)于配置狀態(tài)的問題,并根據(jù)風(fēng)險容限來決定是否采用配置狀態(tài)已知和/或可知的(例如裸機(jī)云)服務(wù)。
但是,就長期來說,還是有著更廣泛的含義的。具體來說,云客戶可以冒險忽略隔離攻擊。也就是說,威脅建模場景甚至在它們的風(fēng)險/對策演算中都不會包括隔離攻擊。在面臨諸如“風(fēng)水反轉(zhuǎn)”攻擊時,這就是一個問題。
雖然隔離攻擊是很罕見的,但那并不是說它們是不存在的,事實(shí)上它們確實(shí)會不時地發(fā)生。因此,設(shè)置分層防御并特別地解決風(fēng)險建模和風(fēng)險應(yīng)對方案中的隔離攻擊是非常重要的。