引言
由于應用程序和操作系統(tǒng)自身缺陷的存在及惡意程序可能對執(zhí)行環(huán)境造成的干擾和破壞,目前操作系統(tǒng)和應用程序等軟件并不是處于一個完全安全的環(huán)境中。利用系統(tǒng)虛擬化技術(shù)解決與軟件安全相關(guān)的問題,提高操作系統(tǒng)和應用程序的安全性成為虛擬化研究的一個重要方向;谔摂M化技術(shù)的可信計算、程序隔離執(zhí)行、惡意軟件分析和入侵檢測等安全技術(shù)被廣泛研究。研究人員利用系統(tǒng)虛擬化技術(shù)提供為安全敏感應用程序提供更安全的隔離執(zhí)行環(huán)境、更小的可驗證的計算基,將不同的應用程序和操作系統(tǒng)隔離防止它們之間的干擾和破壞,從虛擬機抽象底層來獲得程序和系統(tǒng)更真實有效的執(zhí)行狀態(tài)和運行信息。
1 系統(tǒng)虛擬化
系統(tǒng)虛擬化實現(xiàn)在一臺物理主機上虛擬出多個虛擬機(virtual machine,VM),每個虛擬機可看作是一個物理主機的副本。各虛擬機相互隔離并運行獨立的操作系統(tǒng),虛擬機的資源由虛擬機監(jiān)控器(virtual machine monitor,VMM)統(tǒng)一管理。系統(tǒng)虛擬化本質(zhì)上是多個VM利用一組物理資源,由VMM實現(xiàn)對底層資源的劃分和共享,向上表現(xiàn)出多組虛擬計算資源。
1.1虛擬機監(jiān)控器分類
VMM是系統(tǒng)虛擬化的核心,根據(jù)VMM提供的平臺類型,VMM可以被分為兩類:
(1)完全虛擬化:由VMM來虛擬實現(xiàn)現(xiàn)實平臺,對虛擬機來說,虛擬平臺和實現(xiàn)平臺一致,操作系統(tǒng)無需作任何修改即可運行在虛擬平臺上。原有的x86體系結(jié)構(gòu)沒有為虛擬化提供硬件支持,完全虛擬化只能全部由軟件模擬實現(xiàn)。但完全軟件虛擬化會存在優(yōu)先級壓縮、性能開銷大等弊端。
針對這個問題,硬件廠商修改硬件結(jié)構(gòu)在CPU、芯片組和I/O設(shè)備中增加針對虛擬化的支持,比如Intel VT和AMD SVM技術(shù)等。它們幫助系統(tǒng)軟件更高效的實現(xiàn)虛擬化功能。現(xiàn)有的常用VMM平臺,比如Ken、VMware、KVM等都支持硬件虛擬化技術(shù)。
(2)類虛擬化:類虛擬化中VMM呈現(xiàn)給操作系統(tǒng)的平臺抽象與現(xiàn)實平臺并不完全等價,需要修改操作系統(tǒng)來與VMM配合來實現(xiàn)虛擬化。類虛擬化可避開硬件結(jié)構(gòu)的缺陷,提高性能。VMM平臺比如Xen,即支持完全虛擬化,也支持類虛擬化。
1.2系統(tǒng)虛擬化的安全優(yōu)勢
系統(tǒng)虛擬化提供了隔離的執(zhí)行環(huán)境,且VMM具有軟件層中最高特權(quán)級,為安全應用帶來多方面優(yōu)勢:
(1)隔離性:VMM管理的多個虛擬機獨立運行在隔離的環(huán)境中,不會被其他虛擬機的干擾和破壞。
(2)高特權(quán)級:VMM比運行在其上的操作系統(tǒng)有更高特權(quán)級,通過、nn壓可管理運行在上層的操作系統(tǒng)和應用程序的軟硬件資源。
(3)多實例:一個物理機上運行多個虛擬機,可將應用程序組件分布到多個虛擬機提供不同的安全等級,消除完全物理隔離方式的局限性。
(4)可信計算基(trust computing base,TCB):VMM相對于操作系統(tǒng)來說代碼量更小,更易于實現(xiàn)安全驗證。通過VMM為應用程序提供執(zhí)行環(huán)境,可大幅減小安全應用的TCB大小。
2 安全應用和系統(tǒng)研究
針對系統(tǒng)虛擬化提供的安全優(yōu)勢,本節(jié)主要討論利用系統(tǒng)虛擬化的安全技術(shù)的研究文獻及最新進展。最近幾年,在S&P和CCS等安全會議上每年都有與此類別的論文,而SOSP和OSDI等系統(tǒng)會議也常有相關(guān)研究。下面選取較為典型的研究作下介紹。
Proxos將系統(tǒng)調(diào)用劃分為可信和不可信兩部分,可信部分由一般虛擬機提供,而不可信調(diào)用將由應用程序私有的可信虛擬機提供,并允許應用程序開發(fā)者確定應用程序系統(tǒng)調(diào)用的路由規(guī)則。Proxos還設(shè)計了代理模塊來控制程序?qū)σ话闾摂M機資源的訪問及可信虛擬機與一般虛擬機間的切換。系統(tǒng)實現(xiàn)的原型對Xen和上層操作系統(tǒng)Linux的修改添加了一萬多行,應用程序的路由配置一般也只需幾百行,最終性能開銷在15%左右。
TrustVisor利用VMM來完成應用程序安全敏感代碼的強制驗證和隔離執(zhí)行。研究引入程序邏輯片(pieces of application logic,PAL)的概念,PAL是由應用程序開發(fā)者決定的應用程序的安全敏感片段,由不需要上下文和操作系統(tǒng)等支持且有保密性和完整性需求的代碼和數(shù)據(jù)組成。TrustVisot利用硬件虛擬化的支持構(gòu)造一個特定功能的微型VMM,引入了3種工作模式:①傳統(tǒng)客戶模式,該模式正常執(zhí)行操作系統(tǒng)和其他應用程序;②安全客戶模式,執(zhí)行被隔離的PAL;③主模式,擁有最高特權(quán)級的VMM執(zhí)行。VMM為PAL建立安全的隔離環(huán)境,將PAL和不可信環(huán)境隔離。TrustVisor還實現(xiàn)一個稱為μTPM的軟件模塊來模擬硬件TPM功能,為PAL分配一個μTPM實例完成代碼可信驗證。TrustVisor代碼量在一萬多行左右,大大縮減了PAL的TCB大小。
SP3保護模型中應用程序可以直接請求VMM加密自己的某個內(nèi)存頁面,使操作系統(tǒng)和其他應用程序只能得到該頁面的密文內(nèi)容。為減少頻繁加密和解密帶來的開銷,SP3采取了兩個優(yōu)化措施:①頁面冗余,在VMM中存儲加密頁面的解密副本,在解密時由VMM重定向請求到副本頁面;②延時同步,在頁面被修改時并不同步頁面的鏡像,直到頁面鏡像被訪問時才同步頁面。通過優(yōu)化,系統(tǒng)原型大約只有3%的性能開銷,不過只能提供頁級加密保護,并需修改操作系統(tǒng)。
Overshadow則無需修改操作系統(tǒng)和應用程序利用VMM的影子頁表,為應用程序提供透明的加密機制。應用程序的內(nèi)存頁面被生成兩種不同視圖,應用程序自身使用正常的內(nèi)存頁面視圖,而操作系統(tǒng)和其他應用程序使用加密的頁面視圖。VMM跟蹤和管理每個加密頁中包含的資源,同時對加密頁生成hash值來防止其被惡意修改。對于非內(nèi)存的資源比如文件等,則利用內(nèi)存映射功能將其映射為內(nèi)存頁面,實現(xiàn)對其的加密。Overshadow中操作系統(tǒng)可以管理應用程序的資源,但不能直接訪問加密資源,并增加用戶態(tài)shim部件處理系統(tǒng)內(nèi)核與應用程序間的控制流轉(zhuǎn)換及指針型參數(shù)和返回值的調(diào)整。
Lycosid、VMwatcher都是通過虛擬機自省(virtual machines introspection,VMI)來檢測虛擬機中隱藏進程。Lycosid在VMM中統(tǒng)計虛擬機內(nèi)每個進程消耗的CPU時間,并與虛擬機內(nèi)得到的進程消耗的CPU時間匹配,推斷可能的隱藏進程。VMwatcher則提出一種稱為客戶視圖轉(zhuǎn)換的技術(shù),在虛擬機外系統(tǒng)化地建立虛擬機的語義視圖,與內(nèi)部視圖比較發(fā)現(xiàn)隱藏的惡意軟件。它需要使用虛擬機系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)及函數(shù)定義來自省VMM中得到的低級別狀態(tài),將其重構(gòu)為與vM內(nèi)部相等價的信息,完成對虛擬機內(nèi)語義的系統(tǒng)化重建。
與需要系統(tǒng)的數(shù)據(jù)及函數(shù)定義等信息完成VMI不同,Virtuoso提出一種只需系統(tǒng)API定義即可自動產(chǎn)生自省程序的方法。Virtuoso首先在目標系統(tǒng)中運行包含被自省的功能的程序,記錄程序執(zhí)行的指令序列。然后對指令序列使用程序切片技術(shù)找到與功能相關(guān)的指令,如果一次執(zhí)行不成功,則多次執(zhí)行分析過程。最后合并多次分析得到的二進制指令,并轉(zhuǎn)化為自省程序。
Lares將虛擬化的優(yōu)勢運用到主動監(jiān)控中。它在不可信虛擬機中加入鉤子截獲可能的敏感事件。當敏感事件發(fā)生時,將相關(guān)信息傳遞至安全虛擬機內(nèi)的安全工具中,由安全工具使用VMI等功能完成分析,再將結(jié)果返回不可信虛擬機。Lares在不可信虛擬機中增加自包含的trampoline部件,部件不依賴操作系統(tǒng)功能,在事件發(fā)生時通過VMM完成信息傳遞和交互。為防止鉤子和trampoline被惡意修改,在VMM中將它們的頁表設(shè)置為只讀。Hooksafe對Lares中hooks較為分散,利用頁表保護性能開銷大的問題作改進。它分析內(nèi)核中鉤子的訪問情況,得到內(nèi)核對所有鉤子的訪問點,將鉤子集中到一片連續(xù)的只讀內(nèi)存中。而原有的訪問點被重定向到被保護的鉤子,減小離散頁表保護的性能開銷。
SecVisor試圖解決操作系統(tǒng)內(nèi)核在運行時的完整性問題。它利用AMD的svIⅥ硬件虛擬化技術(shù)實現(xiàn)了一個代碼量少、對外接口少、便于移植的輕量級VMM。VMM對影子頁表創(chuàng)建副本,修改副本用戶空間執(zhí)行標志位,使系統(tǒng)在內(nèi)核態(tài)運行時不能執(zhí)行用戶空間的代碼,保證內(nèi)核代碼的完整性。SecVisor建立一個進入內(nèi)核態(tài)的控制轉(zhuǎn)移事件列表,找到每個事件對應的數(shù)據(jù)結(jié)構(gòu),得到所有進入內(nèi)核態(tài)的人口點。在執(zhí)行到入口點時,進入VMM中完成對影子頁表和副本使用的切換。VMM只包含4000多行代碼,并且只需對操作系統(tǒng)作較小的功能添加便可適應內(nèi)核空間的初始化和變更。
HyperSafe的目標是VMM提供運行時控制流完整性的保證,阻止惡意軟件在監(jiān)控器中執(zhí)行,提高VMM自身的安全性。它利用了兩個技術(shù):①不可繞過內(nèi)存鎖,在VMM啟動完后,修改CR0寄存器的頁表讀寫標志位將其設(shè)置為只讀。對頁表的更新必須關(guān)閉只讀保護,完成更新后再開啟只讀保護;②受限指針索引,通過靜態(tài)分析VMM的控制流圖,對每個間接調(diào)用和跳轉(zhuǎn)以及返回指令,得到所有可能的跳轉(zhuǎn)目標表。替換所有的函數(shù)調(diào)用和控制流轉(zhuǎn)換地址為目標表中的索引值,使VMM只能完成合法的控制流轉(zhuǎn)換。兩個技術(shù)相互間形成鎖關(guān)系,受限指針索引保證頁表更新功能不會被誤用而惡意破內(nèi)存保護鎖,內(nèi)存保護鎖保證受限指針索引不會被篡改。
HyperSentry則利用X86結(jié)構(gòu)CPU的系統(tǒng)管理模式(system management mode,SMM)完成VMM完整性保證。CPU通過觸發(fā)系統(tǒng)管理中斷進入SMM管理模式執(zhí)行SMM程序,操作系統(tǒng)將會被掛起直至SMM執(zhí)行完成。SMM程序被保存專用內(nèi)存中,在BOIS啟動后被鎖定,VMM和操作系統(tǒng)都無法對其進行訪問和篡改。文章通過平臺管理接口隱式觸發(fā)SMM程序,完成對VMM的測量和驗證。為防止驗證被VMM感知,SMM程序執(zhí)行中,系統(tǒng)屏蔽了可屏蔽中斷,臨時構(gòu)造中斷表處理不可屏蔽中斷。
CloudVisor解決VMM或管理虛擬機被攻擊時如何保證虛擬機安全的問題。它利用硬件虛擬化的支持通過嵌套虛擬化技術(shù),在VMM之下引入一個稱為CloudVisor的特定VMM保護托管虛擬機的安全,實現(xiàn)虛擬化中資源管理和安全分離。原有的VMM和其他虛擬機管理軟件只需負責虛擬機資源管理等復雜任務。CloudVisor消除商業(yè)VMM越來越復雜的弊端,大大減小TCB大小。
3 研究現(xiàn)狀和趨勢分析
根據(jù)目前的研究現(xiàn)狀,依據(jù)系統(tǒng)層次將系統(tǒng)虛擬化的安全技術(shù)的相關(guān)研究分為三類:應用程序安全,操作系統(tǒng)安全和虛擬機監(jiān)控器的安全性。
3.1應用程序安全
操作系統(tǒng)可能被惡意軟件破壞,而無法為應用程序提供可信的執(zhí)行環(huán)境。基于系統(tǒng)虛擬化提高應用程序安全性的研究,主要利用VMM的優(yōu)勢為應用程序提供隔離的可信執(zhí)行環(huán)境,減小應用程序的TCB。
現(xiàn)有的研究主要解決以下幾個問題:①安全性,保證應用程序執(zhí)行環(huán)境與不可信外界的安全隔離,無法被外部環(huán)境惡意破壞;②可交互性,應用程序需要操作系統(tǒng)功能,并由其完成對自身資源的管理,如何實現(xiàn)隔離執(zhí)行的同時與不可信外界間的安全交互;③兼容性,提供的環(huán)境如何與現(xiàn)有軟硬件結(jié)構(gòu)兼容,盡可能少的修改應用程序和操作系統(tǒng),保證方案易于實施。④低開銷,如何減少VMM的隔離操作帶來性能開銷,保證隔離環(huán)境的可用性。
相關(guān)工作主要通過在VMM層對加密應用程序的數(shù)據(jù)和代碼,或者直接在VMM層為應用程序提供執(zhí)行環(huán)境來實現(xiàn),一般需要調(diào)整應用程序來使用VMM提供的功能。對應用程序的加密保護主要能過內(nèi)存頁面或頁表上。對于非內(nèi)容資源,比如文件、網(wǎng)絡端口等的加密保護依然是一個難點。而為減小性能開銷,通常會對應用程序數(shù)據(jù)、代碼或功能等依據(jù)安全需求的不同進行分離,為其提供不同安全等級的執(zhí)行環(huán)境。快速有效、易于實施的應用程序分離策略也是相關(guān)研究要考慮的問題。
3.2操作系統(tǒng)安全
惡意軟件通過修改系統(tǒng)內(nèi)核數(shù)據(jù),截獲系統(tǒng)調(diào)用等方法破壞操作系統(tǒng)功能并隱藏自己,增加監(jiān)控軟件的檢測難度。研究主要利用系統(tǒng)虛擬化技術(shù)保護操作系統(tǒng)內(nèi)核完整性,增強入侵檢測和惡意軟件分析等安全工具的能力,提高操作系統(tǒng)安全性。
3.2.1增強安全工具能力
基于虛擬機的惡意代碼分析和人侵檢測,在VMM或安全的虛擬機中實現(xiàn)安全工具可以具有以下優(yōu)勢:①不必考慮被檢測系統(tǒng)安全;②檢測無法被虛擬機繞過;③虛擬機難以感知檢測的存在。現(xiàn)有的研究主要解決兩方面的問題:
(1)虛擬機自省
在虛擬機外,安全工具從VMM得到的虛擬機狀態(tài)一般是寄存器,內(nèi)存等低級別信息。而安全工具則使用程序的高層語義信息如文件行為、進程行為、系統(tǒng)服務行為等。虛擬機自省通過讀取虛擬機的狀態(tài),利用已知的虛擬機操作系統(tǒng)知識,如數(shù)據(jù)結(jié)構(gòu)和函數(shù)定義等,重建虛擬機信息的高級語義如PCB控制塊,文件描述符等。面對復雜的操作系統(tǒng)環(huán)境特別是非開源系統(tǒng)如何有效正確的完成自省,并將應用已有的程序分析方法仍需進一步研究。
(2)保護虛擬機內(nèi)部件的安全
基于虛擬化的入侵檢測為保證性能通常在被檢測虛擬機中增加驅(qū)動或組件完成截獲敏感事件、傳遞信息等功能,F(xiàn)在研究通過在VMM對組件頁表寫保護,加密等措施來防止組件被不可信破壞。但頁表保護和加密在執(zhí)行時將發(fā)生VMM的特權(quán)級切換,帶來一定的開銷。為保證方案有效性,需要保證安全性的同時降低性能開銷。
3.2.2操作系統(tǒng)完整性保證
目前的研究主要為利用VMM驗證和控制操作系統(tǒng)中應用程序?qū)Σ僮飨到y(tǒng)的惡意修改,及防止操作系統(tǒng)在內(nèi)核態(tài)中執(zhí)行用戶空間惡意程序兩方面。它們主要根據(jù)操系統(tǒng)用戶態(tài)和內(nèi)核態(tài)的不同特權(quán)級,在VMM中通過修改頁表達到目的。而針對惡意代碼通過動態(tài)加載模塊和驅(qū)動完成對操作系統(tǒng)的攻擊,也有一些研究將通過將不可信驅(qū)動及模塊同已有的可信系統(tǒng)內(nèi)核隔離。這方面的研究通常假設(shè)已有內(nèi)核可信。利用虛擬化技術(shù),可將不可信驅(qū)動及模塊同已有的可信系統(tǒng)隔離,驗證和控制不可信組件。目前的研究主要解決兩方面:①如何降低訪問控制策略的開銷;②如何保證同已有系統(tǒng)程序的兼容性。同時返回值導向(return oriented)這種利用已有安全代碼完成惡意攻能的攻擊方式,也為利用虛擬化保證操作系統(tǒng)控制流完整性提出新的要求。
3.3自身安全性
大部分基于虛擬化的安全研究是以VMM可信為假設(shè)前提,但VMM實際上并非完全可信,如Xen和VMware等都被報告存在漏洞。隨著VMM功能越來越復雜,代碼量不斷增加,將引入更多的漏洞。針對VMM的惡意軟件和攻擊,比如subVirt、blue pill、虛擬機逃逸等也被研究。所以提高VMM自身的安全性為上層應用提供一個可信的基礎(chǔ)也是研究的一個重要方向。它們可被分為兩類:
(1)減小TCB:VMM隨著功能的日益復雜,代碼量不斷增加,上層安全應用的TCB隨之加大。目前研究工作主要通過功能劃分的方法,將VMM管理和安全相關(guān)部分分離,減小TCB。但是如何在分離之后保持VMM的特性和功能仍然是一個研究的難點。而針于特定安全應用,構(gòu)建專用VMM也是減小TCB研究的一個重要方面。
(2)自身可信保證:VMM作為軟件層面的最下層,保證自身可信十分困難,F(xiàn)有的研究主要利用硬件的安全特性來完成VMM的可信保證。比如利用BOIS的啟動驗證功能,完成VMM的可信啟動。Intel的可信執(zhí)行技術(shù)通過硬件擴展來提供動態(tài)可信根機制,建立動態(tài)的可信計算環(huán)境。而硬件虛擬化的支持,特別是嵌套虛擬化技術(shù)配合控制流分析也為實現(xiàn)VMM完整性提供可能的途徑。
4 實驗與分析
Intel-VT硬件輔助的虛擬化技術(shù)中,增加了虛擬機控制塊(VMCS)和兩種操作模式:根模式和非根模式,其中VMM運行在根模式,虛擬機運行在非根模式,每個虛擬機的虛擬處理器對應一個VMCS結(jié)構(gòu)。在VMM中可以對虛擬機的VMCS進行修改和配置,修改虛擬機當前執(zhí)行的狀態(tài)。根據(jù)這個特性,我們對VMM進行修改,截獲虛擬機中正在執(zhí)行的程序的狀態(tài)信息,對信息進行修改,調(diào)試程序的運行。系統(tǒng)設(shè)計如圖1所示。
圖1惡意軟件調(diào)試分析系統(tǒng)設(shè)計
系統(tǒng)原型在開源軟件Ether上二次開發(fā)實現(xiàn),Ether是一個基于Xen的惡意軟件分析工具可以截獲惡意軟件的系統(tǒng)調(diào)用和指令序列,我們增加了對程序的調(diào)試功能并結(jié)合程序切片技術(shù)提取程序的條件判斷語句對惡意軟件進行多路徑的調(diào)試,提高惡意程序動態(tài)分析的代碼覆蓋率。
實驗選取了5個惡意代碼樣本在系統(tǒng)原型上分析調(diào)試,結(jié)果如表1所示:其中代碼長度是對代碼靜態(tài)分析后的代碼總長,斷點數(shù)為動態(tài)調(diào)試時設(shè)置的惡意代碼斷點數(shù),執(zhí)行總長度為代碼動態(tài)調(diào)試時執(zhí)行的不重復代碼的總長。對于不能其中不能達到完全代碼覆蓋的程序,是由于在調(diào)試過程中發(fā)生錯誤,程序崩潰退出。
表1惡意代碼動態(tài)分析調(diào)試測試
從實驗結(jié)果可以看出從VMM中可以截獲程序的狀態(tài)信息,并完成對程序狀態(tài)的修改,防止惡意程序?qū)Ψ治霏h(huán)境的破壞。系統(tǒng)原型可以有效提高惡意程序的動態(tài)執(zhí)行中的代碼覆蓋率。相比較單機的調(diào)試環(huán)境,此方式更透明安全。
5 結(jié)束語
系統(tǒng)虛擬化技術(shù)有隔離性、封裝性安全優(yōu)勢同時虛擬機監(jiān)控器有更小的可信計算基,更高的特權(quán)級,彌補了原有系統(tǒng)和應用軟件系統(tǒng)上的安全性上的不足。但為應用程序或操作系統(tǒng)構(gòu)建一個隔離獨立、安全性高、性能影響小、兼容性強的執(zhí)行環(huán)境提供更細粒度的保護依然存在不少困難,仍需要進深入研究。利用不斷成熟的硬件輔助虛擬化技術(shù),將是解決這些問題的重要方向。本文最后利用虛擬化技術(shù)建立一個安全透明的惡意軟件調(diào)試環(huán)境,一定程序上驗證了系統(tǒng)虛擬化的安全特性,但是對調(diào)試環(huán)境自動化的仍需進一步改進。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務領(lǐng)域、行業(yè)應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業(yè)務領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標題:基于系統(tǒng)虛擬化的安全技術(shù)研究
本文網(wǎng)址:http://www.ezxoed.cn/html/support/1112159342.html