“風水逆轉”:獲取云端虛擬機的完整控制權其實很容易
我們先前介紹過一種名為Bitsquatting的攻擊手法,這是一種超高端的釣魚攻擊:我們假定內存、CPU緩存由于環境,或者制造缺陷,產生內存的比特位翻轉,就可能導致原本我們要訪問某家網站,最終由于這種硬件錯誤,卻訪問了與這家網站域名相近的釣魚站點。
這種聽起來很玄幻的攻擊其實不算新鮮,雖然看起來具有很強的不可控性,但實際還是可以人為觸發其中的“硬件”漏洞。這個漏洞名為Rowhammer,前兩年就有人提出了,可能是有史以來最理想化的漏洞。由于其不可控性,很多人認為Rowhammer停留在理論階段。
不過最近有安全研究人員提出一種名為“風水翻轉”的攻擊技術,主要針對同處一個云環境下的其他虛擬機。其本質也是Rowhammer攻擊,據說具備了“高準確性”和“可控”的特點,可從其他虛擬機盜取加密密鑰。
顛覆攻擊邏輯的Rowhammer技術
去網上查資料,會發現Rowhammer的描繪極為晦澀。但Rowhammer漏洞其實很容易理解,這是個特別針對內存的攻擊技術,但不是內存破壞或溢出攻擊。計算機內存中,每個存儲單元(晶體管+電容器)存放1bit數據,這個比特位要么是0,要么是1——存儲單元中充滿電子表示1,清空表示0。內存就是由上億這樣的存儲單元構成的,數據也因此得以存儲。
不過電容器會泄露,一個電容器充滿電子后,只需要幾毫秒就會泄露殆盡。這就要求CPU(內存控制器)對電容進行充電,讓“1”這個值能夠保持住。整個過程是由內存控制器先讀取電容器中的值,然后再把數據寫回去。這種刷新操作,每秒會執行幾千次。
這幾年的內存容量正在大幅度上漲,所以存儲比特位的電容器也就越來越小,排列越來越近。要防止相鄰的電容之間相互干擾,難度也就變得更大。如果能夠快速、反復訪問一排電容,相鄰行的電容更容易產生干擾錯誤和所謂的“比特位翻轉”,也就是0變成1。
其實正常的數據讀寫一般是不會發生比特位翻轉的,可是如果對某些行進行反復讀寫,問題就有可能產生。2014年卡內基梅隴大學的研究人員層發表過一篇論文,題為《無訪問情況下的內存比特位翻轉——DRAM干擾行錯誤的試驗研究》,其本質是通過機器碼指令CLFUSH或Cache Line Flush,強制進行這種比特位的讀取和更新。據說利用這種方式,可引起大量比特位翻轉。
利用比特位翻轉,很多事情都可以做,比如說執行未經授權的代碼。這就是所謂的Rowhammer。這是一種顛覆人類對安全認知的攻擊技術,軟件層面幾乎解決無望。先前已經有研究人員演示,如何用Rowhammer來進行提權,以及打破安全沙盒。
不過看原理就知道,這種攻擊實在有夠理想化,存在諸多不確定性,因為攻擊者根本無法精準控制比特位如何翻轉。比如說,這種攻擊對數據所在的內存位置首先就有要求,這樣才能實施內存翻轉:但敏感數據存儲在這些位置的幾率可能并不算高。
實現內存“風水逆轉”
針對Rowhammer的內存位置限制,最近有人開發出一種名為Flip Feng Shui(風水翻轉)的攻擊技術,這本質上也是Rowhammer。這種攻擊就是篡改deduplication操作——deduplication在云端主機中應用得很常見,這種技術可讓兩個或者更多虛擬主機共享特定的數據塊,起到節約內存資源的作用。
Flip Feng Shui在物理內存上做手腳,可致加密密鑰和其他敏感數據存儲到內存特定的位置——這些位置就很容易受Rowhammer的影響了。所以才叫風水翻轉,就是讓數據在內存中的“風水”位置變更好,Rowhammer攻擊變得更可靠。
這種技術是由阿姆斯特丹自由大學的一名研究人員Ben Gras提出的(居然不是中國人!!!)。他說:“先前就已經有攻擊方法表明,共同主機的虛擬機彼此間是可以相互攻擊的,比如說獲取對方的加密密鑰。不過這次的攻擊更具破壞性,也是此類攻擊的第一例。”
“我們可以相當高的精度和可控性,針對目標虛擬機的內存進行篡改。針對這種軟件堆棧中看似隨機化的數據破壞方式,我們首次以極高的準確性和可控的方式,對其進行了展示。”這里Gras所謂的“看似隨機化的數據破壞方式”也就是Rowhammer攻擊。
研究團隊演示了攻擊者如何利用Flip Feng Shui攻擊,獲取另一臺VM虛擬機上的RSA加密密鑰——當然這要求被攻擊的虛擬主機與攻擊者處在相同的云環境中。在他們進行的某一例實驗中,進行攻擊的虛擬機獲取到可用于授權安全shell訪問的密鑰,這樣一來,這臺虛擬機就可以獲取目標虛擬機的未授權訪問了。
研究人員在報告中提到,進行攻擊的虛擬機獲取到GPG密鑰——該密鑰是Ubuntu系統開發者用來確認更新可靠性的。有了這個GPG密鑰,攻擊者就能迫使目標虛擬機下載和安裝惡意更新。
其實整個攻擊過程描述起來還是比較復雜的,首先需要獲取目標公鑰。發起攻擊的虛擬機通過Flip Feng Shui,針對公鑰的某個特定部分進行比特位翻轉,也就是我們上面提到的Rowhammer攻擊方式——這里實際上還利用了云環境的deduplication技術。就像前文提到的,這種技術在云端主機中很常見,這是一種相較數據壓縮粒度更大、節約存儲資源的技術?;诖?,物理頁才會在多個虛擬機用戶間共享,針對共享數據塊的比特位翻轉才顯得有意義。
在公鑰的比特位發生翻轉之后,就構造出了一個全新的公鑰,這個公鑰會非常簡單(足以進行因式分解)。也就是說,Rowhammer攻擊欺騙目標虛擬機,接受新的公鑰;攻擊者隨后也就能夠得到相對應的私鑰,并進行未經授權的SSH訪問,簽署惡意Ubuntu更新了。
鑒于篇幅關系,我們沒法細致詳述每一環技術細節,有興趣的同學可以前往翻閱研究人員發表的論文,題為《Flip Feng Shui: Hammering a Needle in the Software Stack》。Gras表示,這次的實驗雖然只針對RSA密鑰,但他預期未來這種攻擊方式還能針對數字簽名算法、Diffie-Hellman加密算法、ECC等等。這樣一來,攻擊者就不僅能夠進行未授權訪問量了,還能竊聽合法會話。
另外,這種攻擊也需要一些條件才能發起,比如說像前文提到的,要求虛擬機開啟Deduplication;而且本次實驗依賴于基于內核的虛擬機,以及Linux中的Kernel SamePage Merging特性。還有,內存芯片本身也需要具備比特位翻轉的基礎,先前有人做過相應的測試,129款DDR3內存中,110款存在攻擊可行性,還有12款DDR4內存有8款也存在Rowhammer漏洞。
最后,研究人員還列出了一些可抵御Flip Feng Shui攻擊的手段,硬件層面要求DRAM芯片制造商進行相應的Rowhammer測試,還有比如針對某些DDR4芯片實施的直接行刷新機制等;至于軟件層面,包括禁用內存的deduplication,開發者和工程師也應該考慮加入額外的措施,比如檢查安全敏感信息完整性。
“這種攻擊不需要攻擊者進行什么復雜的操作,就能完全控制共用主機的云虛擬機。同時,我們認為Flip Feng Shui還能通過更多的形式發起攻擊,這就需要系統安全社區能夠對這樣的威脅引起足夠的重視。”