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