張鵬騫
(河北省兒童醫(yī)院,河北 石家莊 050031)
虛擬化是云的戰(zhàn)略組成部分之一。虛擬化允許多個客戶使用相同的物理資源,為每個用戶實例化一個單獨的虛擬制造(Virtual Manufacturing,VM),虛擬地為用戶提供一個完整的操作機器。幾個虛擬機可以映射到相同的物理資源,從而允許多租戶環(huán)境中的資源池化。虛擬機監(jiān)視器(Virtual Machine Monitor,VMM)或虛擬機管理程序是管理虛擬機并允許各種操作系統(tǒng)在同一物理系統(tǒng)上同時運行的模塊,然而虛擬化也給云用戶和基礎設施帶來了安全挑戰(zhàn),因此將在下面討論與虛擬化相關的安全問題。
虛擬機鏡像用于實例化虛擬機。用戶可以創(chuàng)建自己的虛擬機鏡像,然后就可以從存儲庫上傳和下載信息,這種做法如果被惡意使用,則可能會演變成一種嚴重的威脅,惡意用戶可以研究信息的代碼來尋找可能的攻擊點[1]。另外,被感染的虛擬機將成為在云計算系統(tǒng)中引入惡意軟件的來源,可用于監(jiān)控其他用戶的活動和數(shù)據(jù),從而導致隱私泄露。
運行在同一物理硬件上的虛擬機需要相互隔離[2]。盡管不同虛擬機之間存在邏輯隔離,但對相同物理資源的訪問可能會導致數(shù)據(jù)泄露和跨虛擬機攻擊。不僅存儲設備需要隔離,內存和計算硬件也需要隔離。
虛擬機逃逸是指惡意用戶對虛擬機管理程序的控制,可能會為攻擊者提供對其他虛擬機的訪問,或者使虛擬機停機,過程如圖1所示。成功的虛擬機逃逸攻擊可以提供對計算和存儲硬件的訪問[3]。基礎設施即服務(Infrastructure as a Service,IaaS)模型受到影響,進而影響其他服務模型。
圖1 虛擬機逃逸過程示意
虛擬化環(huán)境中允許虛擬機在需要時通過快照快速恢復到某個先前的狀態(tài)。虛擬機快照的快速恢復功能為用戶提供靈活性的同時,也會引發(fā)安全問題。例如,虛擬機快照的快速恢復不僅會使虛擬機恢復到當前安全憑證啟用之前的狀態(tài),還會使虛擬機恢復到修補漏洞之前,甚至恢復到以前的安全策略和配置信息等。如圖2所示,建立了基礎的Kernel 4.18版本,通過升級到5.4.211版本,進行了安全策略配置,最終到CentOS8-Template版本,后經檢查發(fā)現(xiàn)配置策略存在安全隱患,此時即可通過虛擬機快照的快速恢復功能使其當前版本快速恢復到5.4.211版本。
圖2 快照的快速恢復
虛擬化的關鍵模塊是虛擬機管理程序,用來負責虛擬機管理、虛擬機隔離以及生成和管理虛擬資源。正因為虛擬機管理程序多入口的特點和互聯(lián)的復雜性,才促使它為不法分子提供了攻擊空間,并被動成為了更大的攻擊媒介。虛擬機管理程序被入侵后,它管理的所有虛擬機和保存的虛擬機元數(shù)據(jù)也可能暴露給攻擊者。若虛擬機管理程序中存在的且已報告的漏洞未及時得到修復,則會促使攻擊者控制虛擬機管理程序或繞過安全限制。
鏡像是虛擬機的模板,它指定了虛擬機的初始狀態(tài),是對安全性和完整性要求較高的實體,經常被各種不相關的用戶采納應用[4]。云計算系統(tǒng)中,為避免虛擬化因技術或安全漏洞帶來的影響,可以注意以下幾點。
(1)實施人員應該保護每個來賓虛擬機中的每個虛擬化操作系統(tǒng);(2)虛擬化操作系統(tǒng)應采用內置程序;(3)使用第三方安全技術來減少對云服務提供商的依賴;(4)靜態(tài)虛擬機應該加密;(5)安全漏洞評估工具應涵蓋虛擬化環(huán)境;(6)靜態(tài)虛擬機鏡像應盡快使用最新的補丁進行修補,而且在修補虛擬機之前,保護機制應該到位;(7)在云計算環(huán)境中實施和使用支持虛擬化的安全工具。
(1)在云中建立鏡像加密模塊以及密鑰管理服務器,利用加密來保護磁盤上的虛擬機鏡像。每當虛擬機終止時,鏡像加密模塊都會對鏡像進行加密。(2)通過修補補丁來緩解虛擬機中的漏洞[5]。需要建立更新檢查器和在線滲透套件,更新檢查器記錄云設置中虛擬機使用的所有軟件、版本號、更新版本等。在注冊時需檢查虛擬機內安裝的程序軟件,并保留與已安裝可用軟件相匹配的記錄,匹配結果會檢測出任何不匹配或過時的程序軟件。(3)為云中的虛擬機提供更新的軟件安裝和補丁。記錄虛擬機上運行的所有軟件,檢查已安裝軟件的更新并識別需要更新的虛擬機(休眠和運行中)。(4)打離線補丁。通過建立收集器模塊及補丁程序模塊來識別、糾正具有過時軟件和具有惡意軟件漏洞的鏡像。(5)通過使用虛擬機自?。╒irtual Machine Introspection,VMI)技術從外部監(jiān)控虛擬機的物理內存。
將通過虛擬機管理程序獲得的物理內存字節(jié)映射到核結構定義(Kernel Structure Definition,KSD),后者生成實時虛擬機的操作系統(tǒng)(Operating System,OS)視圖,接著在需要監(jiān)控的內存頁面上安裝內存訪問和基于時間的觸發(fā)器。生成的操作系統(tǒng)視圖由一個防御模塊使用,在請求訪問被監(jiān)控的存儲器頁面時,防御模塊停止虛擬機的執(zhí)行,將所需的頁面加載到KSD,并評估KSD在新狀態(tài)下的安全性。
虛擬機管理程序從本質上是管理和控制虛擬化的程序軟件,由此非常容易使其成為被襲擊的主要目標對象[6]。而受損的虛擬機管理程序可能會破壞整個系統(tǒng),故其虛擬機管理程序的安全性需要特別關注,為此可注意以下幾點應對措施。
(1)從硬件角度保護系統(tǒng)管理程序。建立一個硬件輔助框架,使用x86架構的系統(tǒng)管理模式(System Management Mode,SSM)來查看機器的中央處理器(Central Processing Unit,CPU)和內存狀態(tài)[7]。SMM位于基本輸入輸出系統(tǒng)(Basic Input/Output System,BIOS)中,無法從其他CPU模式訪問。SMM模塊讀取被管理程序保護的CPU寄存器的內容并對其進行驗證。外圍器件互聯(lián)(Peripheral Component Interconnect,PCI)網卡用于讀取物理內存,主要交換載波(Primary Interexchange Carrier,PIC)網卡的驅動程序在SMM模塊中處理,以避免遭受到攻擊。內存中的內容和CPU寄存器驗證的結果被發(fā)送到稱為監(jiān)控機器的機器中。監(jiān)控機器上的分析模塊基于線性、穩(wěn)定性和永久屬性,以此來分析存儲器的內容。此外,完整的虛擬機快照同虛擬機管理程序的初始快照進行比較,如果出現(xiàn)任何惡意行為,則會通知人工操作員[8]。通過安全連接將內容傳輸?shù)奖O(jiān)控機,傳輸?shù)拿荑€由監(jiān)控機管理。
(2)由于虛擬機管理程序運行在特權模式下,假設管理程序受到攻擊或感染,則受到感染的虛擬機管理程序可能會將所有權限授予攻擊者,從而將所有的虛擬機管理程序內置資源置于危險區(qū)域[9]。所以可以利用最小特權原則來減少超級用戶的攻擊面,并確保其他系統(tǒng)組件和資源的安全。管理程序分為兩個主要組件模式,一是與操作系統(tǒng)解耦并在用戶模式下執(zhí)行的去特權組件,二是需要很少或不需要與操作系統(tǒng)交互的模塊被移至去特權模式。去特權模式下需要操作系統(tǒng)提供功能部分被用戶模式的等效部分所取代[10]。由于大多數(shù)系統(tǒng)管理程序代碼沒有特權,所以該方案會大大降低系統(tǒng)被攻擊的風險,即便受到危害的虛擬機管理程序也不會讓攻擊者完全控制系統(tǒng)。
(3)依靠硬件功能來確保虛擬機之間的隔離,減少虛擬機管理程序攻擊面。有研究表明,要實現(xiàn)一個原型,多個虛擬主機可以與管理程序一起運行[11]。資源的管理可以通過擴展的硬件功能完成,也可以通過微型系統(tǒng)(命名為NoHype)管理軟件完成。資源的預先分配消除了系統(tǒng)管理程序動態(tài)管理資源的需要,虛擬化I/O設備的使用消除了模擬它們的需要。在NoHype中使用現(xiàn)代硬件功能來隔離多個虛擬機的資源,如現(xiàn)代處理器中的硬件分頁機制,對客戶機操作系統(tǒng)進行少量修改,以便檢查可用的系統(tǒng)配置和資源,這種掃描只允許在使用臨時管理程序啟動時進行,可避免其他用戶通過執(zhí)行惡意代碼進行任何攻擊,掃描完成后,臨時管理程序將被禁用。此外,由于客戶虛擬機有專用的內核和硬件,因此避免了間接操作。
通過安全日志和審計虛擬機操作(掛起、恢復、遷移)進行攻擊。在每次操作開始時,虛擬機快照的哈希值將通過寄存器、內存內容和映像磁盤進行計算,而每個狀態(tài)下的哈希值隨后用于激活快照。在虛擬機的安全運行環(huán)境中,也使用了類似的日志記錄和審計機制來防止虛擬機回滾。
盡管云計算提供了一些優(yōu)勢,但它也引發(fā)了安全問題,阻礙了其快速應用。所有的用戶,無論是個人還是組織,都應該清楚地意識到云中存在的安全威脅。了解安全威脅和應對措施將有助于組織進行成本效益分析,使云計算得到快速應用。