田東海 ,陳君華,賈曉啟,胡昌振
(1. 北京理工大學 北京市軟件安全工程技術重點實驗室,北京 100081;2. 云南民族大學 云南省高校物聯網應用技術重點實驗室,云南 昆明 650500;3. 中國科學院 信息工程研究所 信息安全國家重點實驗室,北京 100093)
操作系統內核是操作系統最核心的部分,負責管理和維護系統的整體運行。操作系統內核的任何部分受到損害都有可能影響上層應用程序的安全。當前主流操作系統如Windows和Linux均采用宏內核(monolithic-kernel)架構,即操作系統內核和內核擴展模塊都運行在同一地址空間。這種架構的優點是操作系統內核無需切換地址空間就可以直接調用內核擴展模塊,其性能明顯優于微內核(micro-kernel)架構。然而宏內核的缺點是外部非可信擴展模塊一旦被加載到內核,將可以不受限制地訪問操作系統內核的任何資源,從而給操作系統帶來了極大的安全隱患。目前針對內核的常見攻擊是將惡意擴展模塊載入到內核,使其直接破壞操作系統內核的資源,比如通過替換系統調用表來劫持應用程序與操作系統之間的交互。
為了保護操作系統內核的安全,最有效地方法之一是對內核擴展模塊的行為進行訪問控制。現有許多方法都是基于這一思想,他們雖然能夠在一定程度上保護內核得安全,但存在以下一些局限:1)缺乏清晰地安全模型,比如文獻[1]僅僅考慮了Biba模型[2]中不能上寫的思想;2)過多地依賴專家知識,比如文獻[3]要求安全專家詳細指明內核中那些客體應受到保護;3)大部分保護機制的實現都是基于模擬器(如Bochs emulator)的方法,其性能開銷非常大,比如文獻[1,3]都要求截獲操作系統運行的每一條寫指令。
針對上述問題,本文提出了一種基于強制訪問控制(MAC, mandatory access control)的模型MOKIP。該模型為操作系統內核空間提供了一套安全機制,其基本方法也是通過限制非可信內核擴展模塊的行為來保護操作系統內核的完整性安全。MOKIP采用了信息流完整性模型的思想,將內核空間中的不同主體和客體設置不同完整性的安全標簽,然后應用一些訪問控制的規則確保具有低完整性標簽的主體(即非可信內核模塊)不會影響具有高完整性標簽的客體(主要包括操作系統內核數據和內核代碼)的安全。為了實現MOKIP模型,本文采用了最新的硬件輔助虛擬化技術,通過合理使用硬件輔助的頁表機制(hardware assisted paging)將非可信內核擴展模塊從操作系統內核隔離出來。利用虛擬機管理器(VMM, virtual machine monitor)的特權級動態截獲非可信內核模塊對操作系統內核數據的訪問以及對內核代碼的調用,并保證其操作符合本文的訪問控制規則。對于那些違反安全規則的行為,VMM 將及時阻止并通知系統管理員。為了驗證基于MOKIP模型的系統在實際運行環境中的有效性,本文向操作系統內核載入了8種包含不同惡意行為的內核擴展模塊。實驗結果表明本系統能夠成功檢測出所有這些模塊的惡意行為。此外,還通過性能測試證明了本系統對上層應用程序的性能影響較小。
MOKIP模型的基本思想是通過限制操作系統內核空間中不同實體間的信息流來保證操作系統內核的完整性安全。
MOKIP模型和傳統的訪問控制模型一樣,需要區分實體E中的主體S和客體O。在本模型中,主體S的定義為在內核空間中發出訪問請求的實體;客體O的定義為在內核空間中接受主體訪問的實體。其形式化表示為:
在操作系統內核空間中,將主體S分為3類:操作系統內核(SOS)、可信內核模塊(STE)、非可信內核模塊(SUE)。其中,SOS是指操作系統最基本的部分,它主要負責管理系統資源;STE是指對操作系統內核的可信擴展,它的引入通常需要額外的驗證機制(比如微軟的驅動簽名技術[4])來證明其可信性;SUE是指對操作系統內核的非可信擴展,它通常由未知廠商或非可信個人開發。雖然能為用戶提供特定的功能,但由于可能包含惡意代碼,該類模塊被載入后有潛在破壞操作系統內核安全的危險。為了區分可信內核模塊與非可信內核模塊,可以采用微軟的驅動簽名技術[5]。
對于客體,主要關注操作系統內核及其擴展模塊的代碼,數據和堆棧部分,具體包括:內核可信入口點代碼(OOS-TC)、內核其他代碼(OOS-other)、內核數據(OOS-data)、內核堆棧(OOS-stack)、可信擴展模塊代碼(OTE-code)、可信擴展模塊數據(OTE-data)、可信擴展模塊堆棧(OTE-stack)、非可信擴展模塊代碼(OUE-code)、非可信擴展模塊數據(OUE-data)、非可信擴展模塊堆棧(OUE-stack)。需要說明的是,內核數據(OOS-data)僅包括屬于內核本身的數據,不包括操作系統為內核模塊動態分配的數據。此外,操作系統所依賴的特權寄存器(Oreg)也屬于本模型的客體。
為了實現主體S對客體O進行訪問控制,在主體和客體的屬性中引入了安全標簽L。每個實體僅有一個安全標簽,不同的安全標簽反應了不同實體的安全級別,用形式化表示為

本模型定義了2類安全標簽:高完整性標簽Lh和低完整性標簽Ll。進一步定義了安全標簽L1和L2之間的支配關系≤,即如果L1的完整性高于或等于L2,則稱L1支配L2,記做L2≤L1。該支配關系適用于多級安全模型。由于本模型僅包含2類等級,顯然有Ll≤Lh,即高完整性標簽支配低完整性標簽。此外,還定義了安全標簽L1和L2之間的強支配關系<,即如果L1的完整性高于L2,則稱L1強支配L2,記做L2 當某個主體s或客體o產生時,需要對其設置相應的安全標簽。對于主體,為SOS和STE設置高完整性標簽Lh,而為SUE設置低完整性標簽Ll。對于客體,按照以下2條規則設置安全標簽。 1)當客體o被主體s創建時,客體o繼承主體s的完整性標簽,記做int(o)←int(s)。該規則表明由高(低)完整性主體創建的客體將擁有高(低)完整性標簽。例如,由操作系統內核SOS創建的內核堆棧OOS-stack和內核數據OOS-data都將擁有高完整性標簽Lh。這里需要注意的是,認為特權寄存器(Oreg)由SOS創建,因此Oreg擁有高完整性標簽Lh。 2)當主體s1請求另一主體s2創建客體o時,該客體的完整性標簽為s1和s2中被支配的,記做int(o)←dom(int(s1), int(s2)),即如果 int(s1)≤int(s2),則 dom(int(s1), int(s2))= int(s1),int(o)←int(s1)。該規則適用于這樣一些客體,它屬于某個主體,但不由該主體創建。例如,非可信內核模塊(SUE)請求操作系統內核(SOS)分配一片緩沖區,而該區域中的數據區屬于SUE,其安全標簽為Ll。 對于靜態客體,將非可信擴展模塊數據(OUE-data)、非可信擴展模塊堆棧(OUE-stack)和內核其他代碼(OOS-other)標記成低完整性標簽Ll,而將內核可信入口點代碼(OOS-TC)和內核數據(OOS-data)設置成高完整性標簽Lh。 在內核空間中,操作系統內核和擴展模塊之間及內部存在許多操作。例如,內核擴展模塊向操作系統內核申請一片內存空間,然后向這片內存區寫入數據。從信息流的觀點[6]來看,所有的訪問操作都可以映射成讀類型(read)和寫類型(write)操作。基于這2種操作,可以找出主體和客體在信息流之間的關系。如果主體s能夠寫客體o,則存在信息流從s流向o,記做write(s,o)。另一方面,如果主體s能夠讀客體o,則存在信息流從o流向s,記做read(o,s)。此外,信息流之間的關系還可以描述成流轉換關系。如果主體s1能寫客體o,而該客體o又能被另一主體s2讀取,則存在信息流從s1到s2的轉換,記做flowtrans(s1,s2)。 傳統的信息流完整性模型(如Biba模型[2])要求信息流不能從低完整性客體流向高完整性主體。這樣雖然能保證系統具有較高的完整性,但很難在實際環境中應用。例如,現實系統中許多高完整性主體都可能接收低完整性客體的輸入。因此,完備的信息流完整性模型需考慮信息流從低完整性流向高完整性的情況。Clark-Wilson[7]完整性模型能較好地處理這些情況,它通過引入過濾器(filter)來完成對低完整性數據的更新或舍棄。然而該模型的不足是它要求所有接收數據的輸入接口(input interface)都必須為過濾器,這極大影響了該模型的最終實現。為了在操作系統內核保護中應用完整性保護模型,借鑒Clark-Wilson-Lite[8]模型的思想,重點關注于那些可能會接收低完整性數據的輸入接口,只要能保證這些接口能正確處理非可信數據,就能從很大程度上確保操作系統內核的完整性安全。為了實現這個目標,本文設置了以下3條保護規則。 1) 當主體s執行客體o時,必須滿足條件:客體o的完整性強支配主體o的完整性(即int(s) 2) 當主體s讀取客體o時,必須滿足以下2個條件之一:①客體o的完整性支配主體s的完整性(即int(s)≤int(o));②主體s通過具有過濾功能的輸入接口I讀取客體o。該規則表明只有客體o的完整性高于或等于主體s的完整性或者主體s通過過濾器接口I才能讀取客體o。例如,非可信內核模塊(SUE)能夠讀取操作系統內核數據(OOS-data),SOS可以通過濾器接口(即部分可信函數入口點)讀取來源于SUE的低完整性數據。該規則的形式化表示如下 3) 當主體s寫客體o時,必須滿足條件:主體s的完整性支配客體o的完整性(即int(o)≤int(s))。該規則表明當且僅當主體s的完整性高于或等于客體的完整性時,s才能寫o。例如:操作系統內核(SOS)可以修改非可信內核模塊數據(OUE-data),但非可信內核模塊(SUE)卻不能修改操作系統內核數據(OOS-data)。該規則的形式化表示如下 雖然本文的保護規則能保證系統的完整性,但是卻從一定程度上影響了系統的可用性。例如,本文的保護規則不允許高完整性主體從非過濾器接口讀取低完整性數據,然而在實際中卻可能出現一些相反的情況。為增強MOKIP模型的可用性,設置了以下2條轉換規則。 1) 當高完整性主體s從非過濾器接口I讀取低完整性客體o時,該主體的高完整性將降至低完整性,該形式化表示為 該規則適用于這樣的可信內核模塊,當它通過非過濾器接口接收低完整性數據以后,其行為將受到限制,比如該模塊將無法寫高完整性數據。 2) 低完整性主體s能通過轉換器接口T提升為高完整性,從而能使該主體s能寫高完整性客體o,該形式化表示為 該規則可看成是保護規則的例外,它允許低完整性主體通過某種方式寫高完整性客體來實現某些特定功能,然而這些例外規則必須由系統管理員顯式指明。 在宏內核構架下,操作系統內核和內核擴展模塊處于同一地址空間,可以不受限制地相互訪問,因此在傳統系統架構下很難對它們之間的交互進行訪問控制。針對這一問題,可以利用了硬件輔助的虛擬化技術。在虛擬化環境中,虛擬機管理器運行在最底層,負責管理和調度上層客戶機操作系統(guest OS)的運行。本文通過修改開源虛擬化平臺Xen[9]基本實現了MOKIP模型。假設操作系統在啟動時除操作系統內核以外僅包含可信內核模塊,并且可信內核模塊總是通過過濾器接口讀取低完整性數據。因此,本文的實現可以簡化成怎樣利用虛擬機管理器監控從操作系統外部載入的非可信內核模塊的行為,其具體實現包括:對操作系統內核對象的標記機制和對內核模塊的訪問控制機制。圖1給出了本原型系統的基本架構,其中系統的核心模塊位于虛擬機監控器層,具體包括訪問控制模塊和標記模塊。系統的工作流程可分為2步:首先,標記模塊對內核層的實體設置安全標簽;其次,訪問控制模塊將根據安全標簽的屬性控制內核擴展模塊對內核代碼和內核數據的訪問。 圖1 系統架構 MOKIP模型的實現依賴于硬件輔助的內存虛擬化技術。利用Intel擴展頁表技術(EPT, extended page tables)[10]來監控內核模塊在內核空間中的活動。當EPT功能被打開時,客戶機內存地址轉換過程如圖 2所示,客戶機頁表負責客戶機虛擬地址(GVA, guest virtual address)到客戶機物理地址(GPA,guest physical address)的轉換,EPT頁表負責客戶機物理地址(GPA)到主機物理地址(HPA, host physical address)的轉換。EPT頁表的結構與傳統頁表相類似,其頁表項包含物理頁幀和相應的權限位(RWX),其中,R代表可讀,W代表可寫,X代表可執行。若權限位被置 1,則相應物理頁幀上的權限被打開;若權限位被置 0,則相應物理頁幀上的權限被關閉。 圖2 EPT地址轉換過程 實現標記機制的目的是為了對內核空間中的主體和客體設置相應安全標簽。以頁粒度為單位,利用了 EPT頁表項中的保留位對內核空間中不同的頁面設置不同的安全標簽。因為EPT中的保留位沒有被VMM使用,改變它們的值將不會影響VMM的正常功能。目前,只使用了其中的一位,通過置1表示為高完整性標簽Lh,通過置0表示低完整性標簽Ll。該標記機制的好處是不需要額外的內存空間來存儲安全標簽,并且還能從很大程度上減少了查找安全標簽的時間開銷。 由于操作系統內核所維護的內存總是動態變化的,很難僅依賴VMM對這些動態內存設置相應安全標簽。為了克服這種語義鴻溝[11],通過修改操作系統內核讓其主動向VMM報告動態內存信息,具體包括起始地址、物理頁幀和所屬類型(包括可信和非可信2類),然后VMM會根據這些信息對相應的EPT頁面設置安全標簽。圖3給出了基本的安全標記算法。 圖3 安全標記算法 當操作系統啟動時,將內核空間中所有已分配的頁面設置成高完整性標簽Lh。當非可信內核模塊被載入時,操作系統將動態為其分配內存。如果該非可信模塊所需的內存是按頁大小對齊,操作系統將直接從空閑頁面中分配一些內存頁面供它使用。對于這樣的情況,本系統直接將這些頁面設置成低完整性標簽Ll。另一方面,如果非可信內核模塊所需的內存不是按頁大小對齊,操作系統將從現有非空閑頁面中為其分配內存空間,這樣將導致內核中的一些內存頁面內既包含可信部分(操作系統內核和可信內核模塊)又包含非可信部分(非可信內核模塊)。對于這種情況,本系統將無法為這些混合頁面設置安全標簽。 為了避免混合內存頁面的出現,本文修改了Linux操作系統中的slab內存分配器[12]。其基本思想是使目標操作系統為非可信實體分配的內存不與為可信實體分配的內存處于同一物理頁面。在Linux系統中,slab內存分配器為不同的內核對象生成不同的緩沖。某個對象的緩沖由一連串的slab構成,每個slab又由一個或多個連續的物理頁組成,包含了若干同種類型的對象。通過修改Linux內核將slab分成2類:一類為可信slab,專門為操作系統內核和可信內核模塊分配內存;另一類為非可信slab,專門為非可信內核模塊分配內存。通過截獲slab的分配函數判斷其內存分配請求是來源于可信部分還是非可信部分。對于操作系統內核或可信內核模塊的請求,使用可信slab分配內存;對于非可信內核模塊的請求,使用非可信slab分配內存。這種分離可信和非可信slab的方法極大方便了本系統的標記機制,將可信slab所在的內存頁面設置成高完整性標簽Lh,將非可信slab所在的頁面設置成低完整性標簽Ll。 為了限制非可信擴展模塊的行為,必須在內核空間對其進行訪問控制。根據MOKIP模型的保護規則,低完整性主體可以訪問低完整性客體但不能隨意訪問高完整性客體,即非可信擴展模塊能夠讀寫自身的數據,執行自身代碼;但不能寫高完整性內核數據,不能任意執行高完整性內核代碼(可信入口點代碼除外)。基本的安全訪問控制算法如圖 4所示。 圖4 安全訪問控制算法 為了使非可信擴展模塊在運行時滿足保護規則,根據不同安全標簽隔離不同完整性的主體和客體。當非可信內核模塊被執行時,利用VMM將操作系統內核數據和代碼所在的 EPT頁面設置成不可寫和不可執行。如果此時非可信模塊試圖寫內核數據或執行內核代碼,將會產生EPT頁異常而陷入到VMM中,使本系統可以通過VMM中的異常處理函數阻止其非法操作。另一方面,非可信模塊可能會執行某些合法操作,比如調用內核可信入口函數。為保證其正常運行,使用VMM重置操作系統內核及非可信擴展模塊所對應的EPT權限位,具體如圖5所示。將操作系統內核數據置成可寫,將內核代碼置成可執行,同時將非可信模塊置成不可執行。當操作系統返回或又調用非可信模塊時,再次利用VMM重置EPT權限位,保證非可信內核模塊與操作系統內核之間的隔離。 由于每次操作系統內核和非可信內核模塊的執行進行切換時都需要重置EPT頁表,這將給系統帶來較大的性能開銷。為了提升系統的性能,引入了2套EPT頁表分別對應操作系統內核和非可信模塊的執行狀態。當不同執行狀態進行切換時,本系統只需要改變EPT基指針而無需重新設置EPT頁表。為了減少2套頁表切換時所引起的TLB刷新,為每套 EPT頁表設置不同的 VPID(virtual process ID)。此外,為保證2套EPT頁表的一致性,本系統需要截獲所有對 EPT的修改操作來完成它們之間的數據同步。 圖5 系統不同執行狀態所對應不同的EPT權限位 除了限制非可信內核模塊訪問操作系統內存數據以外,還需要防止非可信內核模塊非法修改特權寄存器,比如本系統不允許非可信模塊使用LIDT指令重新加載IDT表。為此,利用Intel VT技術[10]將虛擬機控制結構(VMCS)中描述符表退出(descriptor table exiting)字段值設為1,使VMM可以直接捕獲非可信內核模塊對IDTR、GDTR等特權寄存器的修改操作。對于非法修改,通過VMM進行指令模擬以跳過這些操作,從而保證特權寄存器的安全。 本文使用了Dell PowerEdge T310作為測試環境,其配置為Intel Xeon X3430 2.4 GHz CPU,4 GB內存;Xen 64位3.4.2版本,Dom0主機為x86_64 Fedora 12(內核版本為Linux-2.6.31),客戶機操作系統為x86_64 Ubuntu 8.04(內核版本為Linux-2.6.24)。本文測試了原型系統對客戶機操作系統內核保護的有效性和性能2方面。 有效性測試的目的是檢測基于 MOKIP模型的系統能否有效地抵御惡意內核模塊對操作系統內核的攻擊。通過Linux insmod命令向操作系統內核分別載入了8種包含不同惡意行為的內核擴展模塊,具體見表1,其中前6種為真實的rootkit,后2種為自行開發的惡意內核模塊。對于新引入的 ROP rootkit,由于其沒有使用能接收低完整性數據的輸入接口(即可信內核API函數入口點)調用內核代碼,所以違反了本文的保護規則。實驗結果表明所有這8個內核模塊的惡意行為都被本系統成功檢測。 需要指出的是MOKIP模型僅適用于檢測那些破壞系統完整性的內核模塊。如果有惡意內核模塊用于破壞系統的機密性(比如讀取內核中的敏感信息),本系統將無法檢測這類內核攻擊。 本文設計了5個性能實驗,測試了MOKIP系統和原始的虛擬化平臺Xen對上層應用程序的性能影響。實驗1和實驗2是通過監控ext3文件系統測試解壓linux內核壓縮包(即linux-2.6.24.tar.gz)和編譯linux內核源代碼的時間;實驗3和實驗4是通過監控8139too網卡驅動測試Apache服務器的傳輸率和Lighttpd服務器的吞吐率(2個Web服務器都加載了同一個132 Kbit大小的html網頁);實驗5是通過監控USB驅動測試從U盤拷貝文件的傳輸率。最終結果如表2所示。 表1 有效性實驗測試結果 表2 應用程序在虛擬機中的性能對比 與原始的Xen相比,MOKIP系統先后隔離并監控了3個不同的內核擴展模塊,對相關應用程序的性能開銷都在13%以內,因此能夠滿足一般的應用需求。 為了測試MOKIP系統對內核模塊裝載的內存開銷,還測量了隔離ext3文件系統、8139too網卡驅動和USB驅動對應slab所需的內存頁面個數。表3給出了100次平均采樣的測量結果。與原始系統相比,本系統引入的內存開銷不到1%。 表3 slab所需內存頁面個數對比 美國CMU大學開發了一種輕量級虛擬機管理器 Secvisor[13],旨在保護操作系統內核代碼的完整性安全。Secvisor通過解析和檢查對 MMU和IOMMU的修改操作,確保了只有被系統管理員認證過的代碼才能在內核態執行。本文的工作MOKIP雖然借鑒了Secvisor利用虛擬機管理器管理MMU的思想,但主要不同在于:Secvisor禁止在內核空間執行非可信代碼,MOKIP能在保證操作系統內核的完整性前提下執行非可信內核代碼。NICKLE[14]和 hvmHarvard[15]系統均采用了分離指令取址和數據訪問的思想,確保內核指令僅能從可信內核代碼區域取址。這種方法雖然也能保證內核代碼的完整性,但是卻無法抵御利用現有內核代碼的攻擊[16]。UCONKI[3]將UCON模型引入到操作系統內核完整性保護中,實現了對非可信內核模塊訪問控制的連續性和可變性。然而UCONKI需要依賴很多專家知識來制定內核保護策略,因此不易在實際環境中應用。美國加州大學Davis分校的Daniela等[1]通過采用Biba模型[2]中不能上寫的思想,提出了一種能感知虛擬化的操作系統和虛擬機管理器相協作的方法以保護操作系統內核代碼和數據的安全。該方法雖然能較為全面地保護系統內核,但由于需要其基于模擬器的VMM截獲每一個條對內核代碼和數據的寫指令,其性能開銷較大,因此也不適合在實際環境中使用。LXFI[17]采用源代碼插樁技術實現了對脆弱內核模塊的隔離。KFUR[18]結合源代碼插樁和動態監控方法檢測內核模塊調用內核函數是否符合其使用規則。然而,LXFI和KFUR都需要修改內核模塊源代碼,而且不能對內核數據進行有效地訪問控制。鄭豪等[19]利用虛擬化技術對內核模塊中的故障進行了隔離。該方法能有效提高系統可靠性,但無法阻止內核模塊對內核資源的非法訪問。 為了保護操作系統內核完整性安全,本文提出了一種基于強制訪問控制的MOKIP模型,該模型根據其標記規則將內核空間中的不同主體和客體設置不同的安全標簽,然后運用保護規則限制低完整性主體訪問高完整性客體。為了提高模型的可用性,還設置了轉換規則以應對例外的情況。為實現基于MOKIP模型的系統,采用硬件輔助的虛擬化技術(比如Intel EPT和Intel VT技術)將非可信內核模塊從操作系統內核空間隔離出來,然后對其行為進行訪問控制。有效性和性能實驗證明了本系統能夠檢測惡意內核模塊破壞內核完整性的攻擊,對應用程序的性能開銷在可接受的范圍內。 [1] DANIELA A S O, WU S F. Protecting kernel code and data with a virtualization-aware collaborative operating system[A]. Proceedings of the 25th Annual Computer Security Applications Conference (ACSAC)[C]. Honolulu, Hawaii, 2009. 451-460. [2] BIBA K J. Integrity consideration for secure compuer system[R].Technical report, Mitre Corp. Report TR-3153, Bedford, Mass, 1977. [3] XU M, JIANG X X, RAVI S,et al. Towards a VMM-based usage control framework for OS kernel integrity protection[A]. Proceedings of the 12th ACM Symposium on Access Control Models and Technologies[C]. Sophia Antipolis, France, 2007. 71-80. [4] Microsoft Corporation. Windows Driver Signing[EB/OL]. http://www.microsoft.com/. [5] Windows Vista Security Blog[EB/OL] http://blogs.msdn.com/ windowsvistasecurity/archive/2007/08/16/. [6] GUTTMAN J, HERZOG A, RAMSDELL J. Information flow in operating systems: eager formal methods[A]. Workshop on Issues in the Theory of Security (WITS)[C]. 2003. [7] SANDHU R S. Lattice-based access control models[J]. IEEE Computer, 1993, 26(11):9-19. [8] SHANKAR U, JAEGER T, SAILER R. Toward automated information-flow integrity verification for security-critical applications[A].Proceedings of the 13th Network and Distributed System Security Symposium (NDSS)[C]. 2006. [9] BARHAM P, DRAGOVIC B, FRASER K,et al. Xen and the art of virtualization[A]. Proceedings of the 19th ACM Symposium on Operating System Principles (SOSP)[C]. 2003. 164-177. [10] Intel Corporation. Intel 64 and IA-32 Architectures Software Developer's Manuals[EB/OL]. http://www.intel.com/Assets/PDF/manual/253669.pdf. [11] PETER M C, BRIAN D N. When virtual is better than real[A]. Proceedings of the 2001 Workshop on Hot Topics in Operating Systems(HotOS)[C]. 2001. 0133. [12] DANIEL B, MARCO C, Understanding the Linux Kernel[M]. O'Reilly& Associates Inc, third edition, 2005. [13] SESHADRI A L M Q N. PERRIG A. SecVisor: a tiny hypervisor to provide lifetime kernel code integrity for commodity OSes[A]. Proceedings of the 24th ACM Symposium on Operating System Principles(SOSP)[C]. 2007. 335-350. [14] RYAN R, JIANG X X, XU D Y. Guest-transparent prevention of kernel rootkits with VMM-based memory shadowing[A]. Proceedings of the 11th International Symposium on Recent Advances in Intrusion Detection (RAID)[C]. 2008. 1-20. [15] MICHAEL G, WANG Z, DEEPA S,et al. Transparent protection of commodity OS kernels using hardware virtualization[A]. Proceedings of the 6th International Conference on Security and Privacy in Communication Networks (SecureComm)[C]. 2010. 162-180. [16] RALF H, THORSTEN H, FELIX C F. Return-oriented rootkits: bypassing kernel code integrity protection mechanisms[A]. Proceedings of 18th Usenix Security Symposium (Usenix Security)[C]. 2009. 383-398. [17] MAO Y D, CHEN H G, ZHOU D,et al. Software fault isolation with API integrity and multi-principal modules[A]. Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles(SOSP)[C]. 2011.115-128. [18] 馬超, 尹杰, 劉虎球, 等. KFUR:一個新型內核擴展安全模型[J]. 計算機學報, 2012, 35(10): 2091-2100.MA C, YIN J, LIU H Q,et al. KFUK: a new rernel extension security model[J]. Chinese Journal of Computers, 2012, 35(10): 2091-2100. [19] 鄭豪, 董小社, 王恩東, 等. VM內部隔離驅動程序的可靠性架構[J]. 軟件學報, 2014, (10): 2235-2250.ZHENG H, DONG X S, WANG E D,et al. Reliability architecture to isolate the driver inside the VM[J]. Journal of Software, 2014, (10):2235-2252.2.3 保護規則



2.4 轉換規則


3 模型的基本實現

3.1 硬件輔助的虛擬化技術

3.2 標記機制

3.3 訪問控制機制


4 實驗評估
4.1 有效性測試
4.2 性能測試



5 相關工作
6 結束語