劉宇濤,陳海波
(上海交通大學(xué)并行與分布式系統(tǒng)研究所,上海 200240)
虛擬化安全:機(jī)遇,挑戰(zhàn)與未來(lái)
劉宇濤,陳海波
(上海交通大學(xué)并行與分布式系統(tǒng)研究所,上海 200240)
隨著云計(jì)算的流行,虛擬化安全問(wèn)題受到了廣泛的關(guān)注。通過(guò)引入額外的一層抽象,虛擬化技術(shù)為整個(gè)系統(tǒng)提供了更強(qiáng)級(jí)別的隔離機(jī)制,并為上層軟件提供了一系列自底向上的安全服務(wù)。另一方面,抽象的引入所帶來(lái)的復(fù)雜性提升和性能損失,都對(duì)虛擬化安全的研究帶來(lái)了巨大的挑戰(zhàn)。介紹了上海交通大學(xué)并行與分布式系統(tǒng)研究所近幾年來(lái)在虛擬化安全領(lǐng)域所做的一系列具有代表性的工作,包括利用虛擬化提供可信執(zhí)行環(huán)境、虛擬機(jī)監(jiān)控、域內(nèi)隔離等一系列安全服務(wù),以及對(duì)虛擬化環(huán)境的可信計(jì)算基和跨域調(diào)用等方面進(jìn)行優(yōu)化的成果,并對(duì)當(dāng)前和未來(lái)虛擬化安全領(lǐng)域的問(wèn)題和探索方向進(jìn)行了總結(jié)。
虛擬化安全;可信執(zhí)行環(huán)境;虛擬機(jī)自?。挥騼?nèi)隔離;可信計(jì)算基;跨域調(diào)用
虛擬化的定義有廣義與狹義之分。廣義而言,幾乎任何計(jì)算機(jī)的實(shí)體都可以被虛擬化,包括計(jì)算機(jī)、存儲(chǔ)與網(wǎng)絡(luò)等,相應(yīng)地有系統(tǒng)虛擬化、存儲(chǔ)虛擬化與網(wǎng)絡(luò)虛擬化等。而狹義上的虛擬化一般均指系統(tǒng)虛擬化或者硬件虛擬化,是指在計(jì)算機(jī)上創(chuàng)建出多個(gè)虛擬計(jì)算環(huán)境以運(yùn)行系統(tǒng)軟件棧。本文主要關(guān)注后者。
系統(tǒng)虛擬化這個(gè)概念在20世紀(jì)70年代就被提出并且流行起來(lái),當(dāng)時(shí)它的主要目的是方便多個(gè)用戶共享一臺(tái)物理主機(jī),在該場(chǎng)景下,虛擬化環(huán)境中的用戶數(shù)目少,平臺(tái)管理人員可信程度高,系統(tǒng)的攻擊面小,攻擊的經(jīng)濟(jì)收益低,因此虛擬化安全并未受到廣泛關(guān)注。直到21世紀(jì),隨著云計(jì)算的流行,虛擬化技術(shù)重新回到人們的視野之中,在這個(gè)時(shí)期,虛擬化被廣泛應(yīng)用的主要目的變成了簡(jiǎn)化部署成本,提高硬件資源利用率。其通過(guò)服務(wù)整合等方式將多臺(tái)物理機(jī)整合為運(yùn)行于一臺(tái)物理機(jī)的多個(gè)虛擬機(jī),從而顯著提高IT利用率。近年來(lái),系統(tǒng)虛擬化成為支撐云計(jì)算等計(jì)算模型的核心技術(shù),虛擬機(jī)也成為當(dāng)前各種計(jì)算平臺(tái)的主要載體,如從2009年起全球新增的虛擬機(jī)數(shù)目已經(jīng)超過(guò)新增的物理機(jī)數(shù)目,亞馬遜 2012年就在45萬(wàn)臺(tái)物理主機(jī)上運(yùn)行了超過(guò)300萬(wàn)臺(tái)虛擬機(jī),并預(yù)計(jì)在2016年底達(dá)到800萬(wàn)臺(tái)虛擬機(jī)的數(shù)目。在規(guī)模如此巨大的云計(jì)算平臺(tái)和虛擬化環(huán)境中,用戶數(shù)量急劇增多,攻擊成功所造成的經(jīng)濟(jì)損失被放大,整個(gè)系統(tǒng)的防護(hù)難度也不可避免地變大。IDC(international data corporation)在2008年的一份調(diào)查報(bào)告中就已經(jīng)指出:安全性是影響云計(jì)算被廣泛接受的最大的一個(gè)挑戰(zhàn)。其中,虛擬化安全扮演了一個(gè)非常重要的角色。
近十幾年來(lái),特別是當(dāng)Intel和AMD等各大硬件廠商在自家的處理器中增加了對(duì)虛擬化的硬件支持之后,各大公司和高校的研究機(jī)構(gòu)都對(duì)虛擬化安全進(jìn)行了大量深入的研究,并從各個(gè)角度提出了可能存在的問(wèn)題以及相應(yīng)的解決方案。上海交通大學(xué)并行與分布式系統(tǒng)研究所從早期(2007年)開(kāi)始就在虛擬化安全領(lǐng)域進(jìn)行了深入的探索,已經(jīng)有一系列具有代表性的工作發(fā)表在國(guó)際頂級(jí)的會(huì)議和期刊上,并且獲得了業(yè)界同行的廣泛認(rèn)可。本文將從以下 3個(gè)方面對(duì)這一系列工作進(jìn)行系統(tǒng)的介紹。
首先,利用虛擬化技術(shù)為操作系統(tǒng)和上層應(yīng)用程序提供了一系列自底向上的安全服務(wù)。虛擬化技術(shù)為傳統(tǒng)的軟件行業(yè)帶來(lái)了很多機(jī)遇,PaaS(platform as a service)、IaaS(infrastructure as a service)等服務(wù)平臺(tái)為云計(jì)算帶來(lái)了清晰的運(yùn)營(yíng)模式和巨大的用戶數(shù)量。在這些新型的服務(wù)架構(gòu)中,新的安全問(wèn)題也隨之而來(lái),如如何在不可信的虛擬機(jī)操作系統(tǒng)上提供可信的安全執(zhí)行環(huán)境?如何在外部監(jiān)控虛擬機(jī)內(nèi)部的執(zhí)行環(huán)境等。虛擬化技術(shù)通過(guò)引入一層新的抽象,為這些問(wèn)題的解決提供了新的思路。
其次,在虛擬化安全領(lǐng)域中,對(duì)高可信和高效能2個(gè)方面進(jìn)行了深度的思考和探究,并通過(guò)軟硬件相結(jié)合的方法,提出一系列相應(yīng)的解決方案。虛擬化技術(shù)通過(guò)新的抽象層的引入,固然能解決大量的安全問(wèn)題,但隨著虛擬化的發(fā)展,虛擬化層復(fù)雜度的提高,安全可信基和系統(tǒng)性能都會(huì)受到不可忽視的影響,如何克服這2個(gè)方面所帶來(lái)的挑戰(zhàn),必將很大程度上影響虛擬化安全技術(shù)在現(xiàn)實(shí)系統(tǒng)部署中的可靠性和可行性。在該方向上的研究是極具必要性的。
最后,根據(jù)近幾年學(xué)術(shù)前沿的研究?jī)?nèi)容,結(jié)合自身的經(jīng)驗(yàn)和經(jīng)歷,總結(jié)當(dāng)前和工作比較相關(guān)的其他研究,提出了一些虛擬化安全領(lǐng)域中潛在的探索方向??梢哉f(shuō)虛擬化安全已經(jīng)進(jìn)入了一個(gè)新的時(shí)期,隨著該領(lǐng)域中研究的進(jìn)行,也同時(shí)出現(xiàn)了許多新的問(wèn)題,本文嘗試著列舉出其中較為重要的部分,以及相應(yīng)的可能的解決方案和探究方向。
圖1描述了傳統(tǒng)虛擬化環(huán)境中單個(gè)物理主機(jī)的系統(tǒng)架構(gòu)。一般意義上,會(huì)有一個(gè)虛擬化層,處于虛擬機(jī)和硬件設(shè)備中間,該虛擬化層在功能上主要負(fù)責(zé)系統(tǒng)的資源管理、虛擬機(jī)的調(diào)度等。在安全機(jī)制上,由于虛擬化層具有較高的運(yùn)行權(quán)限,因此可以對(duì)上層的虛擬機(jī)提供安全服務(wù),包括攻擊檢測(cè)、實(shí)時(shí)監(jiān)控等。一般來(lái)說(shuō),虛擬化層的可信基遠(yuǎn)小于操作系統(tǒng),但是隨著功能的日趨復(fù)雜,其可信基也變得越來(lái)越大。本文以下所介紹的幾個(gè)系統(tǒng),根據(jù)不同的威脅模型會(huì)有不同的安全假設(shè),從而決定層級(jí)之間相互的依賴關(guān)系和信任鏈。
圖1 傳統(tǒng)虛擬化平臺(tái)系統(tǒng)架構(gòu)
本文首先介紹3個(gè)系統(tǒng),它們以虛擬化層作為可信基,為上層虛擬機(jī)提供安全執(zhí)行環(huán)境(CHAOS)、域外監(jiān)控(TxIntro)和域內(nèi)隔離(SeCage)機(jī)制。除此之外,將嵌套虛擬化層(CloudVisor)和安全處理器(HyperCoffer)作為可信基,為上層虛擬機(jī)提供更加安全的保障。最后,利用硬件特性為虛擬化環(huán)境提供一個(gè)更加高效的跨域調(diào)用機(jī)制(CrossOver)(如圖2所示)。
計(jì)算機(jī)領(lǐng)域中有一句名言,“任何計(jì)算機(jī)的問(wèn)題都可以通過(guò)額外一層抽象解決”[1]。在計(jì)算機(jī)發(fā)展的歷史中,有許多例子說(shuō)明了這一點(diǎn),包括虛擬內(nèi)存、文件系統(tǒng)、分布式系統(tǒng)等。虛擬化也是這些成功案例的一種。除了資源整合、虛擬機(jī)隔離等功能之外,虛擬化技術(shù)本身通過(guò)新的這一層抽象,就可以更好地為上層虛擬機(jī)提供一系列自底向上的安全服務(wù),為創(chuàng)造安全可信的執(zhí)行環(huán)境提供了一個(gè)極為有效的道路。
隨著包括Linux、Windows在內(nèi)的操作系統(tǒng)功能日趨完善,代碼結(jié)構(gòu)也日益復(fù)雜,從而漏洞存在的可能性也逐漸增大。根據(jù) CVE(common vulnerabilities and exposures)的統(tǒng)計(jì),從1999年至今,Linux內(nèi)核的漏洞達(dá)到1 437個(gè),其中近5年的漏洞數(shù)目更是達(dá)到頂峰;Windows的內(nèi)核同樣脆弱,單單Windows 7這一個(gè)操作系統(tǒng),從2009年至今就有577個(gè)漏洞被披露,更別說(shuō)那些還未被披露的零日漏洞;除此之外,各種服務(wù)軟件、運(yùn)行庫(kù)等代碼量都極其龐大,中間存在可能被攻擊者利用的漏洞數(shù)不勝數(shù)。這些日趨復(fù)雜和不安全的運(yùn)行環(huán)境使在云計(jì)算平臺(tái)中運(yùn)行安全敏感的應(yīng)用和服務(wù)變得極為困難。虛擬化技術(shù)為此提供了一個(gè)巨大的機(jī)遇。首先,相比于操作系統(tǒng)層,虛擬化層本身的復(fù)雜度急劇降低,可信度也隨之提高;其次,新引入的虛擬化層可以對(duì)上層軟件的關(guān)鍵操作進(jìn)行攔截,同時(shí)對(duì)CPU、內(nèi)存、I/O等資源進(jìn)行統(tǒng)一管理和調(diào)配,從而對(duì)整個(gè)系統(tǒng)具有唯一的支配權(quán),可以通過(guò)預(yù)先制定的規(guī)則對(duì)上層虛擬機(jī)進(jìn)行有效的管理;最后,隨著各大硬件廠商對(duì)虛擬化提供越來(lái)越多的硬件支持,虛擬化層能夠?yàn)樯蠈榆浖峁└鼮榧?xì)粒度和高效能的安全服務(wù)。
本文介紹其中3個(gè)具有代表性的工作,分別為上層應(yīng)用程序提供了可信執(zhí)行環(huán)境,細(xì)粒度的域內(nèi)隔離,以及為虛擬機(jī)提供高效的域外監(jiān)控服務(wù)。
2.1 安全執(zhí)行環(huán)境
CHAOS[2,3]作為早期提出在不可信操作系統(tǒng)之上建立安全可信執(zhí)行環(huán)境的系統(tǒng),開(kāi)拓了利用虛擬化層保護(hù)虛擬機(jī)應(yīng)用層的研究方向。CHAOS的目的在于解決操作系統(tǒng)巨大的可信基所帶來(lái)的安全隱患,它的主要貢獻(xiàn)在于引入了一層輕薄的虛擬化層,為上層應(yīng)用程序提供包括內(nèi)存隔離、數(shù)據(jù)加解密、關(guān)鍵操作攔截在內(nèi)的一系列安全服務(wù),如當(dāng)安全敏感的應(yīng)用程序需要往磁盤(pán)中寫(xiě)敏感數(shù)據(jù),CHAOS虛擬化層會(huì)攔截相關(guān)操作,對(duì)數(shù)據(jù)進(jìn)行加密和完整性保護(hù),從而防止惡意的操作系統(tǒng)和其他程序竊取或者篡改隱私數(shù)據(jù)。
圖2 本文所描述的虛擬化相關(guān)安全解決方案
圖3描述了CHAOS的總體框架,假設(shè)在虛擬化層上運(yùn)行的虛擬機(jī)操作系統(tǒng)內(nèi)核是不可信的,它可能會(huì)竊取關(guān)鍵應(yīng)用服務(wù)的敏感數(shù)據(jù),破壞數(shù)據(jù)的完整性等。為了在這種場(chǎng)景下為關(guān)鍵應(yīng)用提供一個(gè)安全的執(zhí)行環(huán)境,引入了安全 VMM(virtual machine monitor)的概念。CHAOS是基于Xen-3.0.2實(shí)現(xiàn)的,它主要保護(hù)3種類(lèi)型的敏感數(shù)據(jù):CPU上下文、內(nèi)存數(shù)據(jù)和I/O數(shù)據(jù),因此相應(yīng)地采用了3項(xiàng)技術(shù)。第一,攔截關(guān)鍵操作,CHAOS通過(guò)二進(jìn)制重寫(xiě)技術(shù)將安全服務(wù)進(jìn)程中的系統(tǒng)調(diào)用入口從原來(lái)的 int 0x80改成了 int 0x81,從而使其進(jìn)行系統(tǒng)調(diào)用的時(shí)候下陷到虛擬化層,另外,通過(guò)修改 IDT(interrupt descriptor table),CHAOS可以攔截所有安全服務(wù)進(jìn)程用戶態(tài)和內(nèi)核態(tài)的轉(zhuǎn)換操作,對(duì)CPU上下文進(jìn)行存儲(chǔ)和恢復(fù),并且將一些敏感的寄存器信息保護(hù)起來(lái),防止泄露給惡意的操作系統(tǒng)。第二,內(nèi)存隔離,CHAOS通過(guò)內(nèi)存映射機(jī)制,將安全服務(wù)進(jìn)程的頁(yè)表從操作系統(tǒng)的映射中去除,并且對(duì)安全服務(wù)進(jìn)程內(nèi)存頁(yè)的訪問(wèn)進(jìn)行跟蹤,防止未被授權(quán)的讀取和修改,從而保證安全服務(wù)進(jìn)程內(nèi)存數(shù)據(jù)的隔離。第三,I/O數(shù)據(jù)封裝,CHAOS通過(guò)I/O系統(tǒng)調(diào)用攔截和頁(yè)表跟蹤,對(duì)端口I/O和內(nèi)存映射I/O進(jìn)行加解密的操作,在數(shù)據(jù)寫(xiě)入磁盤(pán)之前進(jìn)行加密操作和完整性元數(shù)據(jù)的更新,讀出磁盤(pán)并傳送給安全服務(wù)進(jìn)程之前進(jìn)行完整性的檢查和解密操作,從而防止惡意操作系統(tǒng)對(duì)磁盤(pán)數(shù)據(jù)的竊取和篡改。
圖3 CHAOS系統(tǒng)架構(gòu)
2.2 高效的虛擬機(jī)域外監(jiān)控
在增強(qiáng)計(jì)算機(jī)安全的諸多技術(shù)中,VMI(virtual machine introspection)是一種新興的技術(shù)??偟膩?lái)說(shuō),虛擬機(jī)自省是一種域外監(jiān)控的機(jī)制,其利用 VMM,從虛擬機(jī)外部增強(qiáng)虛擬機(jī)自身的安全。通過(guò)直接掃描虛擬機(jī)的運(yùn)行時(shí)內(nèi)存、磁盤(pán)、監(jiān)控網(wǎng)絡(luò)行為等操作,VMM可進(jìn)行殺毒、網(wǎng)絡(luò)防火墻等安全操作。相比傳統(tǒng)的運(yùn)行在虛擬機(jī)內(nèi)部的安全軟件(如殺毒軟件等),虛擬機(jī)自省的優(yōu)勢(shì)在于,其安全性不依賴于虛擬機(jī)本身。例如在傳統(tǒng)平臺(tái),惡意軟件一旦感染主機(jī)成功,首先會(huì)禁止安全軟件的功能,甚至將其直接卸載;而使用虛擬機(jī)自省技術(shù),安全軟件本身運(yùn)行在虛擬機(jī)外部,因此,即使惡意軟件已經(jīng)感染了虛擬機(jī),也無(wú)法干擾安全軟件的執(zhí)行。這得益于虛擬化平臺(tái)對(duì)VMM與虛擬機(jī)的執(zhí)行隔離能力。
然而,VMM與虛擬機(jī)的強(qiáng)隔離也帶來(lái)了語(yǔ)義鴻溝的問(wèn)題,即VMM無(wú)法獲知虛擬機(jī)的內(nèi)部語(yǔ)義。例如,VMM雖然可以讀取虛擬機(jī)的所有內(nèi)存,卻無(wú)法直接獲知內(nèi)存數(shù)據(jù)的語(yǔ)義信息,這為安全軟件的開(kāi)發(fā)帶來(lái)了很大的挑戰(zhàn)。因此,當(dāng)前的虛擬機(jī)自省系統(tǒng)均嘗試通過(guò)不同的方法,盡可能縮小語(yǔ)義鴻溝。本文經(jīng)過(guò)分析發(fā)現(xiàn),現(xiàn)有的虛擬機(jī)自省系統(tǒng)普遍存在以下3個(gè)問(wèn)題:①?zèng)]有一套機(jī)制可以及時(shí)地觸發(fā)虛擬機(jī)自??;②在虛擬機(jī)自省過(guò)程中需要暫停虛擬機(jī),造成性能下降;③即使暫停了虛擬機(jī),仍然會(huì)發(fā)生虛擬機(jī)數(shù)據(jù)讀取不一致的現(xiàn)象。
因此,文獻(xiàn)[4]提出了一套新的系統(tǒng)TxIntro,它是一種利用硬件事務(wù)性內(nèi)存進(jìn)行高效的、安全的虛擬機(jī)自省的機(jī)制。事務(wù)內(nèi)存是在程序并發(fā)控制領(lǐng)域提出的一套完整的解決方案,它是 OCC(optimistic concurrency control)的一種解決方案,假設(shè)在大多情況下,并發(fā)的事務(wù)不會(huì)相互影響,只有在實(shí)際發(fā)生沖突的情況下才會(huì)發(fā)生事務(wù)的回滾。2014年,Intel在其第4代Core處理器(代號(hào) Haswell)上裝配了硬件支持的 TSX(transactional synchronization extensions)機(jī)制,其中的一套軟件接口(RTM,restricted transactional memory)成為市面上首個(gè)為程序員提供的硬件事務(wù)內(nèi)存指令集。TxIntro是首個(gè)利用 RTM增強(qiáng)虛擬機(jī)自省技術(shù)的系統(tǒng)。
如圖4所示,針對(duì)以上提到的3個(gè)問(wèn)題,通過(guò)內(nèi)存硬件虛擬化中EPT(extended page table)的映射機(jī)制,TxIntro將虛擬機(jī)內(nèi)核中的一些關(guān)鍵數(shù)據(jù)結(jié)構(gòu)(如系統(tǒng)調(diào)用表)放入管理虛擬機(jī)用戶進(jìn)程中的 RTM的讀集合中,任意對(duì)虛擬機(jī)關(guān)鍵數(shù)據(jù)結(jié)構(gòu)的惡意修改都會(huì)及時(shí)觸發(fā)虛擬機(jī)自省。另外,它將自省過(guò)程置于事務(wù)之中,這樣即使不暫停虛擬機(jī),也能防止虛擬機(jī)自省過(guò)程中數(shù)據(jù)讀取的不一致,因?yàn)槿绻摂M機(jī)在該過(guò)程中對(duì)相關(guān)數(shù)據(jù)進(jìn)行了修改,RTM就會(huì)中止這個(gè)事務(wù),使其重新執(zhí)行。
圖4 TxIntro系統(tǒng)架構(gòu)
不過(guò),RTM本身具有一定的局限性,如某些系統(tǒng)事件(如中斷、系統(tǒng)調(diào)用等)會(huì)無(wú)條件中止執(zhí)行中的事務(wù);另外,RTM維護(hù)的讀寫(xiě)集合也是有限的,經(jīng)過(guò)測(cè)試,RTM維護(hù)了4 MB的讀集合和32 kB的寫(xiě)集合,當(dāng)事務(wù)中的數(shù)據(jù)超過(guò)了讀寫(xiě)集合的大小,事務(wù)同樣會(huì)被中止。這些缺陷造成了傳統(tǒng)的虛擬機(jī)自省過(guò)程無(wú)法在事務(wù)內(nèi)存中完成。為此,TxIntro提出了2個(gè)創(chuàng)新的優(yōu)化技術(shù):①虛擬機(jī)內(nèi)部的核植入機(jī)制,即在虛擬機(jī)內(nèi)部植入一個(gè)和虛擬機(jī)其他部分完全隔離的進(jìn)程,該進(jìn)程映射了虛擬機(jī)內(nèi)核的內(nèi)存,從而可以直接讀取內(nèi)存,避免了大量由于額外遍歷頁(yè)表翻譯地址所造成的讀寫(xiě)操作;②兩階段VMI復(fù)制機(jī)制,即將虛擬機(jī)自省過(guò)程中大量的讀寫(xiě)操作移到事務(wù)外部執(zhí)行,而在事務(wù)內(nèi)部只是進(jìn)行一致性的檢查,從而大幅度減小了事務(wù)內(nèi)存的讀集合,甚至將寫(xiě)集合直接降為0。
2.3 細(xì)粒度的域內(nèi)隔離
2014年4月,被廣泛運(yùn)用于互聯(lián)網(wǎng)上公鑰認(rèn)證和數(shù)據(jù)加密的開(kāi)源庫(kù) OpenSSL被發(fā)現(xiàn)有一個(gè)非常嚴(yán)重的安全漏洞,被稱為“心臟出血”(heartbleed)。該漏洞被標(biāo)識(shí)為CVE-2014-0160,產(chǎn)生該漏洞的原因在于其支持的TLS協(xié)議中心跳(heartbeat)擴(kuò)展的處理過(guò)程漏掉了一步邊界檢測(cè)的步驟,這個(gè)漏洞使攻擊者能夠從客戶端與服務(wù)器端連接的內(nèi)存泄露中任意讀取多達(dá)64 kB的數(shù)據(jù),也就是說(shuō),無(wú)需任何特權(quán)信息或身份驗(yàn)證,攻擊者就可能從服務(wù)器中讀取包括X.509證書(shū)的私鑰、用戶名、密碼等在內(nèi)的關(guān)鍵數(shù)據(jù)。另外,對(duì)CVE數(shù)據(jù)進(jìn)行分析和統(tǒng)計(jì),發(fā)現(xiàn)無(wú)論是用戶態(tài)還是內(nèi)核態(tài),隱私內(nèi)存泄露是一個(gè)非常嚴(yán)重的問(wèn)題,從 2000~2015年,共計(jì)有 388個(gè)已經(jīng)被披露的相關(guān)漏洞,通過(guò)這些漏洞,應(yīng)用程序關(guān)鍵數(shù)據(jù)(如 Nginx服務(wù)器的私鑰)在外部攻擊或者惡意操作系統(tǒng)的威脅模型中很容易被泄露。
筆者發(fā)現(xiàn)攻擊之所以成為可能,是因?yàn)殛P(guān)鍵數(shù)據(jù)和整個(gè)應(yīng)用程序的軟件棧處于同一個(gè)地址空間,該應(yīng)用程序中任意一個(gè)漏洞都可能對(duì)關(guān)鍵數(shù)據(jù)的安全造成威脅。另外,操作系統(tǒng)內(nèi)核可以映射整個(gè)用戶態(tài)的內(nèi)存,操作系統(tǒng)過(guò)于龐大的可信計(jì)算基使關(guān)鍵數(shù)據(jù)被暴露在更大的威脅模型上。細(xì)粒度的域內(nèi)隔離技術(shù)是針對(duì)這個(gè)問(wèn)題最有效的手段之一,然而如何高效地對(duì)大型軟件進(jìn)行解耦,并且防止在隔離的過(guò)程中造成過(guò)大的性能損失,是亟需解決的2個(gè)問(wèn)題。
為了實(shí)現(xiàn)細(xì)粒度且高效可行的域內(nèi)隔離機(jī)制,筆者引入虛擬化環(huán)境,并且利用Intel硬件虛擬化中的新特性,提出一套完整的解決方案。SeCage[5]是一種針對(duì)應(yīng)用程序中關(guān)鍵數(shù)據(jù)和相關(guān)代碼的高效且細(xì)粒度的隔離方法,它通過(guò)混合分析技術(shù),對(duì)應(yīng)用程序進(jìn)行解耦,將操作關(guān)鍵數(shù)據(jù)的關(guān)鍵代碼從主程序中分離出來(lái),放入一個(gè)通過(guò)Intel硬件虛擬化內(nèi)存隔離出來(lái)的安全運(yùn)行環(huán)境中。同時(shí)利用Intel硬件虛擬化提供的VMFUNC特性,來(lái)提升程序執(zhí)行流的性能和安全性。
如圖5所示,SeCage隔離方法主要包含了3個(gè)步驟:①通過(guò)靜態(tài)和動(dòng)態(tài)分析相結(jié)合的方式,得到預(yù)定義好的關(guān)鍵數(shù)據(jù)的數(shù)據(jù)流,找到該數(shù)據(jù)可能流向其他內(nèi)存區(qū)域的數(shù)據(jù)合集,以及和這些數(shù)據(jù)合集相關(guān)的函數(shù)代碼,并且通過(guò)自動(dòng)化的方法和GCC(gnu c compiler)提供的section attribute屬性,將關(guān)鍵數(shù)據(jù)和相關(guān)代碼從應(yīng)用程序中解耦出來(lái),放入連續(xù)的內(nèi)存段中;②在虛擬化環(huán)境EPT內(nèi)存管理的基礎(chǔ)上,通過(guò)內(nèi)存隔離機(jī)制,為關(guān)鍵數(shù)據(jù)和相關(guān)代碼創(chuàng)建獨(dú)立的擴(kuò)展頁(yè)表,使一般代碼無(wú)法訪問(wèn)關(guān)鍵數(shù)據(jù);③利用CPU處理器硬件虛擬化模塊提供的特性EPTP Switching,在運(yùn)行時(shí)通過(guò)跳板函數(shù)實(shí)現(xiàn)高效的執(zhí)行環(huán)境的切換。其中,EPTP Switching的功能是在不產(chǎn)生虛擬機(jī)下陷的情況下改變EPT最高級(jí)頁(yè)表指針的值。由于在第2步時(shí)創(chuàng)建了兩套相互隔離的EPT頁(yè)表,將它們對(duì)應(yīng)的最高級(jí)頁(yè)表指針的值填入 EPTP(EPT pointer)數(shù)組中,并將該數(shù)組的首地址寫(xiě)入數(shù)據(jù)結(jié)構(gòu)VMCS(virtual machine control structure)的一個(gè)特定的域中。因此,在客戶虛擬機(jī)的跳板函數(shù)中調(diào)用VMFUNC相關(guān)指令,并將寄存器設(shè)為相應(yīng)的值,就可以切換不同的 EPTP,從而達(dá)到在不下陷的情況下高效地將當(dāng)前的EPTP切換到之前配置好的任意一個(gè)EPTP的目的。
SeCage是基于KVM,實(shí)現(xiàn)在Intel Haswell機(jī)器上的,筆者將該機(jī)制應(yīng)用在 Nginx+OpenSSL,OpenSSH 和 CryptoLoop上,成功阻止了HeartBleed、rootkit以及相關(guān)內(nèi)核內(nèi)存泄露的攻擊,保護(hù)了包括私鑰在內(nèi)的關(guān)鍵數(shù)據(jù)不被泄露,達(dá)到了很好的域內(nèi)隔離的效果。另外性能測(cè)試結(jié)果顯示,SeCage的域內(nèi)隔離保護(hù)機(jī)制對(duì)Nginx吞吐量和延遲的影響較小,是一個(gè)可行的基于虛擬化的安全解決方案。
圖5 SeCage系統(tǒng)架構(gòu)
虛擬化通過(guò)引入額外的一層抽象可以有效地解決一系列的安全問(wèn)題,對(duì)上層軟件提供切實(shí)的安全服務(wù),從而提高整個(gè)系統(tǒng)的可靠性。然而,虛擬化環(huán)境下安全性的保證依賴于2個(gè)重要的考量因素:可信基的大小和對(duì)性能的影響。第2節(jié)中提到的利用虛擬化技術(shù)提供自底向上的安全服務(wù)的方法建立在一個(gè)極為重要的前提上:即虛擬化層是可信的,整個(gè)系統(tǒng)的可信基包含了虛擬化層的所有軟件棧。然而,隨著虛擬化層功能的日趨復(fù)雜,其代碼行數(shù)也越來(lái)越多,出現(xiàn)漏洞的可能性也在逐漸增大,如根據(jù)CVE的統(tǒng)計(jì),截止到2015年,當(dāng)前主流的3大虛擬化平臺(tái)VMWare、Xen和KVM分別被披露了234個(gè)、135個(gè)和89個(gè)已知的漏洞。另外,隨著安全事故的發(fā)生(如2010年Google公司的雇員竊取用戶的隱私數(shù)據(jù)),云平臺(tái)中惡意的管理人員也成為了一個(gè)潛在的威脅。因此,學(xué)術(shù)界和工業(yè)界都在考慮將虛擬化層移除出可信計(jì)算基,并且通過(guò)更為精簡(jiǎn)的底層軟件系統(tǒng)或者硬件特性來(lái)保證整個(gè)系統(tǒng)的安全性。在這個(gè)研究方向上,本文提出了兩套解決方案,分別采用嵌套虛擬化和安全處理器的特性來(lái)增強(qiáng)虛擬化環(huán)境中客戶虛擬機(jī)的安全等級(jí)。
另一方面,如果利用虛擬化技術(shù)實(shí)現(xiàn)的系統(tǒng)安全解決方案對(duì)原生系統(tǒng)的性能造成過(guò)大的影響,也會(huì)使相應(yīng)方案無(wú)法被接受。一個(gè)不可避免的現(xiàn)象是,額外的抽象一定會(huì)帶來(lái)額外的上下文切換,造成不必要的性能損失,而如何減少這些上下文切換,在降低性能損失的同時(shí)保證安全性不受影響,這也是該領(lǐng)域必須解決的問(wèn)題之一。本文的另一項(xiàng)工作在這個(gè)方向上前進(jìn)了一步,利用現(xiàn)有處理器中的硬件特性對(duì)一系列極具代表性的系統(tǒng)進(jìn)行了優(yōu)化,在很大程度上減少了它們所帶來(lái)的額外的上下文切換和相應(yīng)的性能損失。
3.1 基于軟件的嵌套虛擬化
近年來(lái),金融改革持續(xù)深化,民營(yíng)銀行、村鎮(zhèn)銀行等相繼設(shè)立,其成立時(shí)間短、資本規(guī)模小、經(jīng)營(yíng)管理能力和抗風(fēng)險(xiǎn)能力相對(duì)較弱,出現(xiàn)破產(chǎn)的風(fēng)險(xiǎn)相對(duì)較高。同時(shí),我國(guó)銀行業(yè)對(duì)外開(kāi)放的速度、幅度和深度不斷擴(kuò)大。2017年底,外資銀行在華營(yíng)業(yè)性機(jī)構(gòu)總數(shù)已達(dá)1013家。外資入股中資銀行的股比限制被正式取消,中外資適用統(tǒng)一的市場(chǎng)準(zhǔn)入和行政許可辦法。在此背景下,建立適用于包括民營(yíng)銀行、外資銀行在內(nèi)的問(wèn)題銀行市場(chǎng)化退出機(jī)制迫在眉睫。
隨著多租戶云計(jì)算平臺(tái)中虛擬化層軟件棧的日益龐大和復(fù)雜,整個(gè)系統(tǒng)的可信基也逐漸增大,租戶在虛擬機(jī)中存儲(chǔ)的隱私數(shù)據(jù)面臨著來(lái)自外部和內(nèi)部共同的威脅。為了增強(qiáng)虛擬化平臺(tái)的安全性,避免過(guò)大的攻擊面,提出將虛擬化監(jiān)控器移除出可信計(jì)算基。因而發(fā)現(xiàn)在虛擬化環(huán)境中,虛擬機(jī)隱私和完整性的保護(hù)和其他功能性的邏輯是相互獨(dú)立的,因此提出 CloudVisor[6]系統(tǒng),它采用嵌套虛擬化技術(shù),將安全保護(hù)機(jī)制的邏輯從整個(gè)虛擬化層剝離出來(lái),由嵌套虛擬化層通過(guò)額外的一層抽象對(duì)虛擬機(jī)監(jiān)控器進(jìn)行監(jiān)控,從而保護(hù)虛擬機(jī),防止虛擬機(jī)中用戶的隱私數(shù)據(jù)被虛擬化層無(wú)意或者惡意地竊取。
圖6 CloudVisor系統(tǒng)架構(gòu)
如圖6所示,在CloudVisor的架構(gòu)中,租戶向云平臺(tái)提供加過(guò)密的虛擬機(jī)鏡像和相應(yīng)的元數(shù)據(jù)文件,該鏡像由CloudVisor加載,磁盤(pán)數(shù)據(jù)的寫(xiě)入和讀取也通過(guò)CloudVisor進(jìn)行加解密。虛擬機(jī)監(jiān)控器將被置于非特權(quán)指令集中,并使用EPT表的隔離機(jī)制防止租戶虛擬機(jī)數(shù)據(jù)被非法訪問(wèn)。虛擬機(jī)監(jiān)控器對(duì)租戶虛擬機(jī)進(jìn)行的所有敏感操作都將下陷到CloudVisor中接受安全檢查。另外,CloudVisor利用安全硬件提供的 TXT(trusted execution technology)功能為系統(tǒng)提供安全啟動(dòng)的支持,利用TPM(trusted platform module)技術(shù)為租戶提供安全驗(yàn)證支持。
CloudVisor基于Xen實(shí)現(xiàn),該架構(gòu)很好地將安全性與功能性解耦合,在保證功能完備的同時(shí)盡量減小了可信計(jì)算基的大小,有利于對(duì)可信基進(jìn)行進(jìn)一步的正確性驗(yàn)證。CloudVisor中可信基僅有5.5 kB行代碼,相比于龐大的虛擬機(jī)監(jiān)控器具有更加簡(jiǎn)單的邏輯及更高的可信性,通過(guò)嵌套虛擬化的方式可以較好地控制權(quán)限的隔離。
3.2 基于安全處理器的虛擬機(jī)隔離
面對(duì)當(dāng)前日益龐大和復(fù)雜的虛擬化層軟件棧,基于嵌套虛擬化技術(shù)的CloudVisor和類(lèi)似的工作雖然能夠在很大程度上緩解這個(gè)問(wèn)題,但是它仍然存在2個(gè)問(wèn)題:①額外層級(jí)的引入使系統(tǒng)上下文切換的數(shù)量增多,性能影響比較大;②基于軟件的方法不能防止包括總線窺探和冷啟動(dòng)在內(nèi)的物理攻擊。因此提出利用安全處理器來(lái)代替嵌套虛擬化層的純軟件保護(hù)。根據(jù)研究經(jīng)驗(yàn)表明,防篡改的CPU芯片是安全的,但是,一般安全處理器沒(méi)有足夠的表達(dá)能力,無(wú)法用于處理復(fù)雜的高層次的語(yǔ)義,如虛擬機(jī)和虛擬機(jī)監(jiān)控器以及外部環(huán)境之間的數(shù)據(jù)交互;此外,純粹依靠基于硬件的保護(hù),由于受限制的功能和有限的片上存儲(chǔ)的可擴(kuò)展性,無(wú)法支持?jǐn)?shù)量眾多的虛擬機(jī)。因此,筆者提出 HyperCoffer[7,8]系統(tǒng),這是一個(gè)軟件/硬件相結(jié)合防止惡意虛擬化監(jiān)控器竊取和纂改上層虛擬機(jī)敏感數(shù)據(jù)的系統(tǒng)。它提出一種新的方法,讓安全處理器提供安全性增強(qiáng)的機(jī)制,而將語(yǔ)義鴻溝交由一個(gè)小的軟件層進(jìn)行語(yǔ)義處理。
如圖7所示,HyperCoffer利用并擴(kuò)展了傳統(tǒng)的虛擬化環(huán)境的安全處理器技術(shù)。安全處理器在過(guò)去的10年已被廣泛研究,其中最主要的2項(xiàng)技術(shù)是在處理器中加入了用于實(shí)現(xiàn)數(shù)據(jù)機(jī)密的AISE(address independent seed encryption)算法和用于完整性保護(hù)的BMT(bonsai merkle tree)算法的邏輯。HyperCoffer利用安全處理器中的AISE加密邏輯,保證每個(gè)虛擬機(jī)的數(shù)據(jù)在芯片外部(包括內(nèi)存中)是處于加密的狀態(tài),只有在被加載到芯片內(nèi)部時(shí)才變成明文,并且不同的虛擬機(jī)通過(guò)使用不同的秘鑰被相互隔離;另外,通過(guò)BMT的邏輯為所有數(shù)據(jù)生成一個(gè)用于完整性保護(hù)的Merkle樹(shù),將樹(shù)的最高層父節(jié)點(diǎn)保存在芯片內(nèi)部的數(shù)據(jù)結(jié)構(gòu)中,從而保證數(shù)據(jù)被篡改會(huì)被馬上檢測(cè)出來(lái)。為了處理虛擬機(jī)特定的語(yǔ)義,保留上層軟件的透明性,HyperCoffer為每一個(gè)虛擬機(jī)實(shí)例提供了一個(gè)受保護(hù)的軟件層,被稱為虛擬機(jī)墊片層。虛擬機(jī)墊片層處理客戶虛擬機(jī)和虛擬機(jī)監(jiān)控器必要的交互,包含CPU上下文、I/O數(shù)據(jù)和輔助信息。該墊片機(jī)制是高度可擴(kuò)展的,可以支持任意數(shù)量的虛擬機(jī)實(shí)例。它作為一個(gè)重要手段,用于盡量減少所需的硬件變化和消除虛擬機(jī)和安全處理器之間的語(yǔ)義差距。
圖7 HyperCoffer系統(tǒng)架構(gòu)
筆者在基于 Qemu的全系統(tǒng)仿真環(huán)境以及Xen虛擬化環(huán)境中實(shí)現(xiàn)了HyperCoffer的原型,并且利用虛擬機(jī)墊片機(jī)制運(yùn)行了未經(jīng)修改的Windows和Linux虛擬機(jī)。Qemu的仿真結(jié)果和虛擬機(jī)墊片機(jī)制的實(shí)際測(cè)量結(jié)果表明,HyperCoffer的性能開(kāi)銷(xiāo)很小,系統(tǒng)的可信計(jì)算基和安全性都得到了全面的提升。
3.3 虛擬化平臺(tái)中跨域調(diào)用的優(yōu)化技術(shù)
利用虛擬化技術(shù)為上層軟件棧提供安全服務(wù)的另外一個(gè)重要的挑戰(zhàn)是如何降低安全服務(wù)所造成的性能損失?,F(xiàn)有的系統(tǒng)架構(gòu)一般都由多個(gè)層級(jí)的不同軟件域構(gòu)成,不管是服務(wù)的提供還是安全的保護(hù)機(jī)制都不可避免地會(huì)出現(xiàn)跨域的調(diào)用,而當(dāng)前的硬件體系結(jié)構(gòu)直接支持的跨域調(diào)用指令是有限的(如syscall、hypercall等),因此其他的跨域調(diào)用就需要通過(guò)攔截的方式進(jìn)行模擬,使單個(gè)跨域調(diào)用實(shí)際上會(huì)有更多數(shù)目的額外的跨域上下文切換。通過(guò)研究發(fā)現(xiàn),現(xiàn)有的一些利用虛擬化環(huán)境提高系統(tǒng)安全性的方法會(huì)造成3~5倍額外的跨域調(diào)用的數(shù)目增長(zhǎng),這種模擬的方式不但會(huì)造成性能的損失,也不可避免地會(huì)給整個(gè)系統(tǒng)帶來(lái)巨大的復(fù)雜性。
針對(duì)這個(gè)問(wèn)題,Li等[9]提出CrossOver機(jī)制來(lái)對(duì)當(dāng)前處理器這種頻繁的多層級(jí)跨域調(diào)用進(jìn)行優(yōu)化。CrossOver的主要思想是將認(rèn)證(authentication)和授權(quán)(authorization)分開(kāi),將跨域間通信的認(rèn)證交給硬件執(zhí)行而將具體的授權(quán)交由軟件執(zhí)行。具體來(lái)說(shuō),在初始階段,調(diào)用者與被調(diào)用者需要請(qǐng)求虛擬機(jī)監(jiān)控器為它們?cè)谟布献?cè)一個(gè)無(wú)法偽造的ID,之后2個(gè)域之間的相互調(diào)用只需要通過(guò)一條新的指令即可直接調(diào)用,而不需要經(jīng)過(guò)其他任何權(quán)限級(jí)和軟件層次。CrossOver通過(guò)Intel的硬件虛擬化VMFUNC擴(kuò)展初步實(shí)現(xiàn)了該機(jī)制,從而保證相互間不信任的調(diào)用者與被調(diào)用者能夠高效地調(diào)用,同時(shí)各自還運(yùn)行在隔離的地址空間中。
圖8描述了一個(gè)利用CrossOver跨虛擬機(jī)進(jìn)行系統(tǒng)調(diào)用的例子,在進(jìn)行這個(gè)系統(tǒng)調(diào)用之前,2個(gè)虛擬機(jī)需要向虛擬機(jī)監(jiān)控器進(jìn)行注冊(cè)認(rèn)證,虛擬機(jī)監(jiān)控器會(huì)為它們維護(hù)好相應(yīng)的元數(shù)據(jù),在這個(gè)場(chǎng)景中就是配置好相應(yīng)的EPT指針。在進(jìn)行系統(tǒng)調(diào)用時(shí),分發(fā)管理模塊會(huì)攔截該系統(tǒng)調(diào)用,并跳轉(zhuǎn)至之前映射好的共享代碼頁(yè),之后會(huì)加載一個(gè)輔助頁(yè)表,保存當(dāng)前上下文信息,并準(zhǔn)備好在另一個(gè)虛擬機(jī)中需要的調(diào)用信息,然后執(zhí)行VMFUNC 指令切換 EPT 到被調(diào)用虛擬機(jī)中。被調(diào)用虛擬機(jī)中的分發(fā)管理模塊會(huì)執(zhí)行實(shí)際的系統(tǒng)調(diào)用,并將調(diào)用結(jié)果返回。將CrossOver實(shí)現(xiàn)在Intel Haswell機(jī)器和Qemu上,并且利用它優(yōu)化了包括Proxos在內(nèi)的4個(gè)現(xiàn)有的系統(tǒng),極大地減小了它們跨域調(diào)用的成本,提高了系統(tǒng)的性能。
圖8 利用CrossOver跨域進(jìn)行系統(tǒng)調(diào)用的例子
關(guān)于虛擬化安全的研究在繼續(xù),除了上文提到的為上層的軟件棧提供更加可信的安全執(zhí)行環(huán)境和更細(xì)粒度的隱私數(shù)據(jù)保護(hù),為虛擬機(jī)提供更為高效和精確的虛擬機(jī)監(jiān)控服務(wù),保證更加精小的可信計(jì)算基,提供性能更好的安全機(jī)制之外,還有一些其他問(wèn)題同樣值得探究,在這節(jié)中會(huì)列舉一些相關(guān)的研究,并且說(shuō)明在這些研究領(lǐng)域還存在哪些問(wèn)題需要更好的解決方案,以及具有哪些可能的探索方向。
在利用虛擬化技術(shù)提供安全可信執(zhí)行環(huán)境這個(gè)領(lǐng)域,OverShadow[10]是和CHAOS同個(gè)時(shí)期的系統(tǒng),它是基于影子頁(yè)表的內(nèi)存虛擬化技術(shù), 通過(guò)截獲虛擬機(jī)中用戶態(tài)和內(nèi)核態(tài)的上下文切換,加上基于頁(yè)表操作的被稱為“隱身”的技術(shù),來(lái)保護(hù)應(yīng)用程序的內(nèi)存,為操作系統(tǒng)和應(yīng)用程序呈現(xiàn)不同狀態(tài)(密文和明文)的內(nèi)存。同時(shí),其引入了“墊片”的概念,來(lái)保證整個(gè)系統(tǒng)的向前兼容性。但是在這一系列的工作中,應(yīng)用程序都會(huì)通過(guò)系統(tǒng)調(diào)用來(lái)向操作系統(tǒng)申請(qǐng)服務(wù),因此都無(wú)法繞過(guò)一種被稱為Iago Attack[11]的攻擊。InkTag[12]解決了這個(gè)問(wèn)題,同時(shí),它是基于EPT內(nèi)存硬件虛擬化。另外,InkTag還簡(jiǎn)化了操作系統(tǒng)的驗(yàn)證機(jī)制,并且提供了訪問(wèn)控制和文件系統(tǒng)的一致性的特性。最后,還有一個(gè)被稱為虛擬機(jī)回滾的攻擊用于竊取虛擬機(jī)內(nèi)部的隱私數(shù)據(jù),XIA等[13]的研究方案在一定程度上解決了這個(gè)問(wèn)題。總之,該領(lǐng)域經(jīng)過(guò)了長(zhǎng)期的研究,已經(jīng)趨于成熟,還存在的問(wèn)題就是對(duì)上層應(yīng)用無(wú)法進(jìn)行更為細(xì)粒度的保護(hù),SeCage在一定程度上解決了這個(gè)問(wèn)題。另一方面,硬件提供的越來(lái)越多的特性也對(duì)高效地保護(hù)虛擬機(jī)內(nèi)部安全提供了更多的可能性。筆者之前的一些工作,如利用硬件提供的預(yù)測(cè)執(zhí)行機(jī)制來(lái)增強(qiáng)信息流追蹤技術(shù)[14],同時(shí)做到更好的控制流混淆[15],以及利用性能計(jì)數(shù)器來(lái)增強(qiáng)CFI(control flow integrity)[16,17]等,這些技術(shù)都可以被擴(kuò)展到虛擬化平臺(tái)中用于保護(hù)虛擬機(jī)內(nèi)部的安全。
在監(jiān)控虛擬機(jī)這個(gè)研究領(lǐng)域中,自從 2003年提出虛擬機(jī)自省[18]這個(gè)概念以來(lái),有大量的研究工作[19,20]致力于解決語(yǔ)義鴻溝的問(wèn)題,TxIntro提出虛擬機(jī)自省中的一致性問(wèn)題并利用硬件事務(wù)內(nèi)存較徹底地解決了這個(gè)問(wèn)題。然而在虛擬機(jī)自省防范惡意 rootkit的領(lǐng)域中還有一個(gè)開(kāi)放性問(wèn)題,即如何檢測(cè)基于DKOM(direct kernel object manipulation)技術(shù)的rootkit,當(dāng)前已經(jīng)有一些基于內(nèi)存快照比對(duì)的初步方案,但是并不能徹底解決該問(wèn)題,同時(shí)還會(huì)造成比較大的性能損失,因此還是一個(gè)待解決的問(wèn)題。
為了減小虛擬化平臺(tái)中系統(tǒng)的可信基,研究者們提出了各種不同的虛擬化系統(tǒng)架構(gòu),除了基于嵌套虛擬化的CloudVisor之外,其他的基于軟件的方法還包括NOVA[21],一個(gè)微內(nèi)核的虛擬機(jī)監(jiān)控器,把單個(gè)整體的虛擬化層分裝成一個(gè)基于組件的系統(tǒng),并通過(guò)引入不同組件之間基于組件功能的訪問(wèn)控制,達(dá)到提高虛擬化層安全性的目的;DeHype[22]將虛擬化層的大部分功能放在用戶態(tài)的虛擬化層,而在內(nèi)核態(tài)維護(hù)一個(gè)稱為HyperLet的微型虛擬機(jī)監(jiān)控器,用于處理事件通知和硬件I/O虛擬化;HyperLock[23]利用內(nèi)核態(tài)中內(nèi)存隔離的機(jī)制,將虛擬化層的功能在內(nèi)核態(tài)進(jìn)行實(shí)例的分割與隔離;Xoar[24]通過(guò)分割特權(quán)級(jí)虛擬機(jī)的服務(wù),將其劃分成多個(gè)可重啟的非特權(quán)級(jí)服務(wù)虛擬機(jī),從而減小系統(tǒng)的可信計(jì)算基,達(dá)到較好的錯(cuò)誤和權(quán)限隔離。然而,純軟件的方法都還沒(méi)有被廣泛應(yīng)用,除了性能和復(fù)雜度的考慮之外,安全性也無(wú)法超越基于硬件的方法。在虛擬化平臺(tái)系統(tǒng)重構(gòu)的研究領(lǐng)域中,設(shè)計(jì)出一套新的基于硬件支持的虛擬化框架將會(huì)是一個(gè)非常有吸引力的探索方向。
虛擬化層的錯(cuò)誤隔離和恢復(fù)也是一個(gè)比較重要并且充滿挑戰(zhàn)性的研究方向,TAN等提出的安全解決方案 TinyChecker[25]在一定程度上解決了這個(gè)問(wèn)題,它借助了嵌套虛擬化的技術(shù),在虛擬化層遭遇錯(cuò)誤的時(shí)候能夠保證虛擬機(jī)快速恢復(fù)。然而錯(cuò)誤隔離的問(wèn)題并沒(méi)有得到根本性的解決,特別是在當(dāng)前的虛擬化環(huán)境中,虛擬化層的單點(diǎn)錯(cuò)誤就能夠造成整個(gè)系統(tǒng)的崩潰,影響所有運(yùn)行于其之上的虛擬機(jī),因此,如何實(shí)現(xiàn)一個(gè)高效細(xì)粒度的虛擬化層錯(cuò)誤隔離機(jī)制是一個(gè)非常有意義的探索課題。
除此之外,虛擬化環(huán)境中的旁路攻擊在近幾年進(jìn)入研究人員的視野,大量的研究[26~28]表明虛擬化平臺(tái)中的旁路攻擊已經(jīng)不再只是理論上的攻擊手段,它們可以被用來(lái)竊取租戶隱私等。針對(duì)這個(gè)問(wèn)題,Catalyst[29]等系統(tǒng)通過(guò)重新設(shè)計(jì)CPU緩存來(lái)緩解這個(gè)問(wèn)題,而 Duppel[30]等系統(tǒng)通過(guò)引入一些隨機(jī)變量來(lái)增加攻擊難度。然而旁路攻擊這個(gè)問(wèn)題并沒(méi)有得到徹底的解決,針對(duì) LLC(lastlevel cache)的旁路攻擊,目前還沒(méi)有有效的軟件防御手段?,F(xiàn)有的系統(tǒng)一方面需要修改硬件或者利用了最新的硬件特性,難以在所有商用平臺(tái)上推廣使用,另一方面會(huì)造成巨大的性能開(kāi)銷(xiāo)。因此,如何設(shè)計(jì)出一個(gè)兼容性強(qiáng),性能高的旁路攻擊防御系統(tǒng)依然是一個(gè)開(kāi)放的問(wèn)題。
最后,移動(dòng)平臺(tái)的安全牽涉到每一個(gè)終端用戶的隱私安全,筆者之前的研究通過(guò)終端與云的相結(jié)合技術(shù)[31]來(lái)保護(hù)終端隱私數(shù)據(jù)的安全,并且利用基于 TrustZone的技術(shù)[32]來(lái)增強(qiáng)終端線上廣告的安全機(jī)制。隨著硬件的不斷發(fā)展,ARM也逐漸在移動(dòng)終端加入了虛擬化技術(shù)的支持。然而移動(dòng)端與服務(wù)器端的虛擬化技術(shù)相比,在架構(gòu)、應(yīng)用場(chǎng)景等方面都具有很大的差別,如何利用移動(dòng)虛擬化平臺(tái)構(gòu)造一個(gè)更為可信的終端環(huán)境,將會(huì)是一個(gè)很有前景的研究方向。
隨著云計(jì)算的普及和資源整合的迫切需求,虛擬化平臺(tái)必然在整個(gè)軟件架構(gòu)中占據(jù)重要地位,如何合理應(yīng)用虛擬化層這一額外的抽象層,為上層軟件提供進(jìn)一步的功能和安全的相關(guān)服務(wù),以及如何克服虛擬化在安全領(lǐng)域中所帶來(lái)的問(wèn)題,是每一個(gè)云計(jì)算廠商都需要思考的問(wèn)題。本文介紹了上海交通大學(xué)并行與分布式系統(tǒng)研究所近幾年來(lái)在虛擬化安全領(lǐng)域做出的一系列貢獻(xiàn),包括利用虛擬化為上層軟件提供自底向上的安全服務(wù),以及探索虛擬化環(huán)境中可信計(jì)算基和性能的優(yōu)化,并且總結(jié)了現(xiàn)在和未來(lái)虛擬化安全領(lǐng)域還存在的問(wèn)題和可能的探索方向。相信這些會(huì)對(duì)該領(lǐng)域的發(fā)展產(chǎn)生一定的借鑒意義。
[1] SPINELLIS D. Another level of indirection. Beautiful code[M]. CA: O'Reilly. 2007.
[2] CHEN H, CHEN J, MAO W, et al. Daonity-grid security from two levels of virtualization[J]. Information Security Technical Report,2007, 12(3): 123-138.
[3] CHEN H, ZHANG F, CHEN C, et al. Tamper-resistant execution in an untrusted operating system using a virtual machine monitor[R]. FDUPPITR-2007-0801.
[4] LIU Y, XIA Y, GUAN H, et al. Concurrent and consistent virtual machine introspection with hardware transactionalmemory[C]// 2014 IEEE 20th International Symposium on High Performance Computer Architecture. 2014: 416-427.
[5] LIU Y, ZHOU T, CHEN K, et al. Thwarting memory disclosure with efficient hypervisor-enforced intra-domain isolation[C]//The 22th ACM Conference on Computer and Communications Security. 2015.
[6] ZHANG F, CHEN J, CHEN H, et al. CloudVisor: retrofitting protection of virtual machines in multi-tenant cloud with nested virtualization[C]//The 23rd ACM Symposium on Operating Systems Principles. 2011: 203-216.
[7] XIA Y, LIU Y, CHEN H. Architecture support for guest-transparent VM protection from untrusted hypervisor and physical attacks[C]// IEEE 19th International Symposium on High Performance Computer Architecture. 2013:246-257.
[8] XIA Y, LIU Y, GUAN H, et al. Secure outsourcing of virtual appliance[J]. IEEE Transactions on Cloud Computing, 2015:1.
[9] LI W, XIA Y, CHEN H, et al. Reducing world switches in virtualized environment with flexible cross-world calls[C]//The 42nd Annual International Symposium on Computer Architecture, ACM. 2015:375-387.
[10] CHEN X, GARFINKEL T, LEWIS E C, et al. Overshadow: a virtualization-based approach to retrofitting protection in commodity operating systems[C]//ASPLOS. 2008.
[11] CHECKOWAY S, SHACHAM H. Iago attacks: why the system call API is a bad untrusted RPC interface[C]//The 18th International Conference on Architectural Support for Programming Languages and Operating Systems. 2013.
[12] HOFMANN O S, KIM S, DUNN A M, et al. Inktag: secure applications on an untrusted operating system[C]//ASPLOS. 2013.
[13] XIA Y, LIU Y, CHEN H, et al. Defending against VM Rollback Attack[C]//The 2nd International Workshop on Dependability of Clouds Data Centers and Virtual Machine Technology. 2012.
[14] CHEN H, WU X, YUAN L, et al. Practical and efficient information flow tracking using speculative hardware[C]//The 35th International Symposium on Computer Architecture. 2008.
[15] CHEN H, YUAN L, WU X, et al. Control flow obfuscation with information flow tracking[C]//The 42nd International Conference on Microarchitecture. 2009.
[16] YUAN L, XING W, CHEN H, et al. Security Breaches as PMU deviation: detecting and identifying security attacks using performance counters[C]//ACM SIGOPS Asia-pacific Workshop on Systems. 2011.
[17] XIA Y, LIU Y, CHEN H, et al. CFIMon: detecting violation of control flow integrity using performance counters[C]//The 42nd Annual IEEE/IFIP International Conference on Dependable Systems and Networks. 2011.
[18] GARFINKEL T, ROSENBLUM M, et al. A virtual machine introspection based architecture for intrusion detection[C]//NDSS. 2003.
[19] PAYNE B D, DE CARBONE M, LEE W. Secure and flexible monitoring of virtual machines[C]//ACSAC. 2007: 385-397.
[20] SRINIVASAN D, WANG Z, JIANG X, et al. Processout-grafting: an efficient out-of-vm approach for fine-grained process executionmonitoring[C]//CCS. 2011: 363-374.
[21] STEINBERG U, KAUER B. NOVA: a micro-hypervisorbased secure virtualization architecture[C]//The 5th European Conference on Computer Systems, ACM. 2010:209-222.
[22] WU C, WANG Z, JIANG X. Taming hosted hypervisors with(mostly) deprivileged execution[C]//NDSS. 2013.
[23] WANG Z, WU C, GRACE M, et al. Isolating commodity hosted hypervisors with hyperlock[C]//The 7th ACM European Conference on Computer Systems. 2012: 127-140.
[24] COLP P, NANAVATI M, ZHU J, et al. Breaking up is hard to do: security and functionality in a commodity hypervisor[C]//The 23rd ACM Symposium on Operating Systems Principles. 2011:189-202.[25] TAN C, XIA Y, CHEN H. TinyChecker: transparent protection of VMs against hypervisor failures with nested virtualization[C]//The Second International Workshop on Dependability of Clouds Data Centers and Virtual Machine Technology. 2012.
[26] OSVIK D A, SHAMIR A, TROMER E. Cache attacks and countermeasures: the case of aes[C]//Topics in Cryptology-CT-RSA 2006. 2006:1-20.
[27] YAROM Y, FALKNER K. Flush+ reload: a high resolution, low noise, l3 cache side-channel attack[C]//The 23rd USENIX Security Symposium (USENIX Security 14). 2014:719-732.
[28] SHI J, SONG X, CHEN H, et al. Limiting cache-based side- channel in multi-tenant cloud using dynamic page coloring[C]//The 7th Workshop on Hot Topics in System Dependability. 2011:194-199.
[29] LIU F, GE Q, YAROM Y, et al. CATalyst: Defeating last-level cache side channel attacks in cloud computing[C]//IEEE Symposium on High-Performance Computer Architecture. 2016.
[30] ZHANG Y, REITER M K. Düppel: retrofitting commodity operating systems to mitigate cache side channels in the cloud[C]//The 20th ACM Conference on Computer and Communications Security. 2013: 827-837.
[31] XIA Y, LIU Y, TAN C, et al. TinMan: eliminating confidential mobile data exposure with security-oriented offloading[C]//The 10th European Conference on Computer Systems. 2015.
[32] LI W, LI H, CHEN H, et al. AdAttester: secure online advertisement attestation on mobile devicesusing trustzone[C]//The 13th International Conference on Mobile Systems, Applications, and Services. 2015.
劉宇濤(1989-),男,福建龍巖人,上海交通大學(xué)博士生,主要研究方向?yàn)椴僮飨到y(tǒng)、虛擬化安全和手機(jī)安全。
陳海波(1982-),男,湖南邵陽(yáng)人,上海交通大學(xué)教授、博士生導(dǎo)師,主要研究方向?yàn)橄到y(tǒng)軟件、系統(tǒng)結(jié)構(gòu)與系統(tǒng)安全。
Virtualization security: the good, the bad and the ugly
LIU Yu-tao, CHEN Hai-bo
(Institution of Parallel and Distributed Systems, Shanghai Jiaotong University, Shanghai 200240, China)
The virtualization security has increasingly drawn widespread attention with the spread of cloud computing in recent years. Thanks to another level of indirection, virtualization can provide stronger isolation mechanisms,as well as bottom-up security services for upper-level software. On the other side, the extra indirection brings complexity and overhead as well, which poses huge challenges. A series of recent representative work done by the institute of parallel and distributed system shanghai jiaotong university, including providing security services of trusted execution environment, virtual machine monitoring, intra-domain isolation, as well as optimizing trusted computing base and cross-world calls in the virtualization environment. Finally the problems and directions in the space of virtualization security were summarized.
virtualization security, trusted execution environment, virtual machine introspection, intra-domain isolation, trusted computing base, cross-world call
TP309.2
A
10.11959/j.issn.2096-109x.2016.00091
2016-08-25;
2016-09-27。通信作者:陳海波,haibochen@sjtu.edu.cn