研究人員攻破 AMD 的虛擬機加密防線!
研究報告稱,中招的虛擬機管理程序會從加密的內存中獲取明文信息。
德國研究人員認為,他們已設計出一種方法,可攻破AMD的Epyc伺服器晶元用來自動加密內存中虛擬機的安全機制。
他們表示,甚至可以通過被劫持的虛擬機管理程序和簡單的HTTP請求,就能從加密的訪客系統(guest)獲取明文數據,這些HTTP請求發往在同一台機器上的第二個訪客系統中運行的Web伺服器。
AMD的Epyc數據中心處理器以及RyzenPro系列支持所謂的安全加密虛擬化(SEV)。該技術在數據存儲於內存中時可實時解密和加密虛擬機,那樣主機操作系統、虛擬機管理程序和主機上的任何惡意軟體都無法窺視受保護的虛擬機。每個虛擬機都分配有一個地址空間ID,該ID與加密密鑰關聯起來,那樣數據在內存和CPU核心之間傳送時,加密密鑰可以加密和解密數據。密鑰永遠不離開片上系統,每個虛擬機都有自己的密鑰。
這意味著,從理論上來說,連惡意或被劫持的虛擬機管理程序、內核、驅動程序或其他特權代碼都無法查看受保護虛擬機裡面的內容,這對於多租戶模式的雲平台來說是一項很好的安全功能。現在你可以確信該死的操作人員(BOFH)沒在窺視你的訪客實例。
然而據稱,為非作歹的主機級管理員、虛擬機管理程序裡面的惡意軟體或類似的威脅分子可以使用一種名為SEVered的技術,繞過SEV保護機制,將信息從客戶或用戶的虛擬機中拷貝出來。
弗勞恩霍夫應用集成信息安全研究所(Fraunhofer AISEC)的幾位研究人員馬修斯?莫比策(MathiasMorbitzer)、曼紐爾?休伯(Manuel Huber)、朱利安?霍施(JulianHorsch)和薩莎?韋塞爾(Sascha Wessel)表示,問題在於,進入主機層面的不法分子可以使用標準頁表來篡改訪客系統的物理內存映射,那樣SEV機制就無法正確地隔離和加密內存中虛擬機的部分內容。下面是該研究團隊概述攻擊的內容:
藉助SEVered,我們演示了惡意的HV[虛擬機管理程序]仍然可以從SEV加密的VM[虛擬機]獲取明文格式的所有內存數據。我們從SEV得出了結論,主內存的頁加密缺乏完整性保護。
雖然虛擬機的訪客虛擬地址(GVA)到訪客物理地址(GPA)的轉換由虛擬機本身來控制,並對HV來說不透明,但HV仍然負責第二級地址轉換(SLAT),這意味著它維護主內存中虛擬機的GPA到主機物理地址(HPA)映射。這使我們能夠改變HV中虛擬機的內存布局。我們使用這種功能來誘騙虛擬機中的服務,比如Web伺服器,那樣一旦外部發出資源請求,該服務就會以明文格式返回虛擬機的任意頁。
這不是研究人員頭一回發現SEV嚴加保護虛擬機的功能存在缺陷了:以前的研究已經分析了黑客如何可以鑽內存管理系統的空子,窺視加密的訪客系統。弗勞恩霍夫應用集成信息安全研究所在本周四發表的研究報告在此基礎上更進了一步,它表明:的確,就算SEV處於啟用狀態,虛擬機的全部內存內容也可能被虛擬機管理程序獲取。
為了表明這個,研究人員搭建了一個測試系統,該系統搭載啟用SEV的AMDEpyc 7251處理器,並安裝了Debian GNU/ Linux,在單獨的虛擬機中運行兩項服務:Apache Web伺服器和OpenSSH。然後,他們修改了系統的KVM虛擬機管理程序,觀察訪客中的軟體何時訪問物理內存。
通過向其中一項服務發出大量請求,比如從Apache獲取HTML網頁,虛擬機管理程序就能看到物理內存的哪些頁用於保存該文件。然後它切換頁面映射,以便Apache使用另一個虛擬機中的加密頁來發送請求的網頁,因而改而發送另一個虛擬機的自動解密的內存頁。
這意味著Apache泄漏了來自另一個訪客的數據。隨著時間的推移,該團隊能夠從一個受攻擊的虛擬機獲取整整2GB內存的數據。
研究人員寫道:「我們的評估顯示,SEVered實際上切實可行,它可以用來在合理的時間內從SEV保護的虛擬機獲取整個內存數據。結果明確表明,SEVered妥善處理好了關鍵方面,比如識別過程中的噪音和資源粘性(resource stickiness)。」
無法聯繫上AMD的發言人請其發表評論。研究團隊特別指出,不過這家晶元製造商可採取幾個措施,隔離主機和訪客物理地址過程之間的轉換,從而應對研究中描述的攻擊。
他們解釋道:「最好的解決辦法似乎是除了加密外,另外針對訪客內存頁提供功能完備的完整性和新鮮度保護,英特爾SGX就是這麼做的。然而,相比SGXenclave,保護整個虛擬機可能面臨高昂的矽片成本。」
「一種低成本且高效的解決辦法也許是將內存頁內容的哈希與分配給訪客的GPA安全地結合起來。」
論文:


※要提防「技術合作」的種種風險
※Cloudera深陷雲時代轉型困境
TAG:雲頭條 |