專利名稱:用于在獨立于操作系統(os)的防病毒(av)掃描器上執行強制性安全策略的方法和裝置的制作方法
技術領域:
本公開一般地涉及計算領域。更具體地說,本發明的實施例涉及對在計算系統中運行的防病毒掃描代理強制執行強制性安全策略。
背景技術:
防病毒(AV)掃描代理應用程序一般作為操作系統(OS)進程來運行。AV掃描代理通過使用一些與惡意軟件所使用的相同的隱匿技術來保護自身不受惡意軟件/木馬攻擊。近來操作系統設計中的改變采用了強制性訪問控制(MAC)標簽,其以低、中、高完整性分類的形式來標記進程。在不同級別的進程不允許彼此進行修改/訪問。但是MAC級別的語義在OS環O (內核特權)處強制執行。環O受到損害意味著MAC強制執行機制受到損害,并因而在環3 (用戶特權)和環O中運行的AV掃描代理受到損害。虛擬內存管理器(VMM)(如果使用了)的損害也可能導致用戶OS (UOS)的MAC機制受到損害。在OS中的MAC機制的使用使得AV掃描代理更難躲避針對AV掃描代理代碼的惡意軟件。因此,除非改進OS安全性,否則AV掃描代理代碼會易受到攻擊。
通過參考附圖來提供詳細描述。在不同附圖中使用的相同附圖標記指示相似的或相同的項目。圖1是根據本發明的一些實施例的執行容器完整性模型的圖;圖2示出了根據本發明的實施例的具有客戶OS的執行容器完整性模型;圖3是根據本發明的實施例的具有客戶OS (具有AV應用)的執行容器完整性模型的圖;圖4是根據本發明的實施例的用于建立域C的流程圖;圖5是示出了根據本發明的實施例的對應于一系列資源設陷機構的級聯Biba級別的圖;圖6是示出了根據本發明的實施例的建立C子域的流程圖;圖7是示出了根據本發明的實施例的設置應用陷阱的流程圖;圖8是示出了根據本發明的另一實施例的設置應用陷阱的流程圖;圖9是示出了根本發明的實施例的執行陷阱的流程圖;圖10是根據本發明的另一實施例的具有用于虛擬機管理器(VMM)的客戶OS的執行容器完整性模型的圖;圖11是根據本發明的實施例的具有用于VMM的客戶OS的執行容器完整性模型的圖,其中虛擬機包括AV應用;以及圖12和圖13示出了計算系統的實施例的框圖,其可以用來實現在本文中討論的
一些實施例。
具體實施例方式在下面的說明書中,為了提供對各個實施例的完全理解而闡述了多個具體細節。但是,沒有所述具體細節本發明的各個實施例也可以實施。在其他的實例中,沒有詳細描述公知的方法、程序、部件和電路,以免模糊了本發明的特定實施例。此外,可以使用各種器件來執行本發明的實施例的各個方面,所述器件例如為集成半導體電路(硬件)、被組織為存儲在計算機可讀存儲介質上的一個或多個程序的計算機可讀指令(軟件),或硬件和軟件的一些組合。為了本公開的目的,對“邏輯”的引用應意味著硬件、軟件(包括例如控制處理器操作的微代碼)、固件,或其上的一些組合。在實施例中,可以在計算系統中的受保護的執行環境中執行AV掃描代理應用程序,在所述計算系統中可以向該AV掃描代理分配MAC特權,所述MAC特權支配由用戶操作系統(UOS)(或虛擬機管理器(VMM))所使用的MAC特權。AV掃描代理配置包含UOS代理的存儲頁面,使用受保護的執行環境來保護所述存儲頁面。這些存儲頁面具有有效的MAC特權,所述MAC特權高于由UOS (或VMM)授予的最高特權,因而UOS的損害不會轉化為UOS中的AV掃描代理的損害。本發明的實施例使用至少兩種技術的組合:受保護的執行環境微代碼和在硬件級別應用的、與操作系統MAC抽象分離的MAC標簽。在受保護的執行環境中的執行容器為以比最高可能的OS環O級別更高的安全級別運行的AV掃描代理運行時間提供執行隔離。這個級別由受保護的執行環境強制執行。因為受保護的執行環境遵守MAC安全模型,所以受保護的執行環境可以在防止惡意修改AV掃描代理運行時間的同時仍允許對OS文件系統對象進行讀取訪問。本發明的實施例一致地關聯了 MAC標簽,同時在客戶OS資源上設置了陷阱。實施例的方法在客戶資源和頁面上遞歸地級聯標簽分配和陷阱分配,直到AV掃描代理應用和相關的數據被保護。可以由計算系統的處理器檢測并防止嘗試修改受保護的資源的惡意軟件。從檢測到的攻擊中恢復可以由來自受保護的執行環境的以較高的完整性級別運行的處理器代理程序進行管理,而不破壞系統的完整性模型。MAC安全模型通過將安全標簽分配給系統中的主體和對象來保護信息。一個這樣的MAC安全模型是Biba模型,其公開在1977年4月,Mitre公司的Biba, K.J.“IntegrityConsiderations for Secure Computer Systems”,MTR-3153 中。Biba 完整性模型是計算機系統安全策略的正式狀態轉換系統,其描述了被設計用來確保數據完整性的一套訪問控制規則。數據和主體被分組為完整性的有序級別。設計該模型使得主體不可以損壞處于高于該主體級別等級的數據,或該主體不可以被來自低于該主體級別等級的數據損壞。一般來說,保持數據完整性的目的在于防止數據被未授權方修改、防止未授權的數據被未授權方修改,和維護內部和外部一致性(即,數據反映了真實世界)。這種安全模型是為了數據完整性,并且其特性在于短語“不向下讀,不向上寫”。Biba MAC規則可被總結為:1)給予資源(主體和對象)Biba完整性標簽,使得更高級別“支配”更低級別。支配對象或其他主體的主體能對這些資源“向下寫”。2)較低級別的資源能“向上讀”更高級別的資源。Biba模型可以被應用于受保護的執行環境,使得設備、存儲器、直接存儲器存取(DMA)緩存、中斷和配置空間都可以固定地使用Biba標簽,使得能一致地應用Biba訪問規貝U。在受保護的執行環境中運行的應用可以對應于MAC標簽約束而被分配虛擬資源,其中運行在執行容器中的OS強制執行Biba安全模型。可以信任受保護的執行環境的資源管理器部件以跨越執行容器(受保護的存儲器)和設備資源之間的硬件接口邊界來強制執行特權語義。圖1是根據本發明的某些實施例的執行容器完整性模型的圖。受保護的執行環境可以對運行在執行容器100中的應用強制執行Biba安全策略。執行容器包括在計算系統內的應用環境,所述計算系統與正常的操作系統環境相隔離。在實施例中,執行容器在其功能性方面受到約束;執行容器可能不包括全功能的操作系統。在實施例中,執行容器包括應用(App)策略管理器部件102,和一個或多個應用程序。在圖1示出的示例中,執行容器包括第一級別完整性的應用(App L1104),第二級別完整性的應用(App L2106),和第三級別完整性的應用(App L3108)。在實施例中,通過使用仲裁訪問平臺資源(中央處理單元(CPU)、存儲器、芯片組、閃存等)的硬件支持對這些資源進行分區,受保護的執行環境提供在計算系統中創建執行容器的機制。目的在于除了用于用戶操作系統(UOS)的容器以外,通常利用在為了節約能源的低活動期間UOS使得內核脫機時未使用的多核處理器中的內核上的周期,其他獨立的操作環境能夠運行。這對能源消耗和性能具有輕微的影響,但是提供了用于程序執行的環境,所述環境可被用于UOS的帶外(OOB)活動,例如安全性、可管理性、安全商務或許可。使用OOB執行環境,運行在這些容器中的應用將免受用戶篡改、惡意軟件的損害,并且能抵抗操作系統故障。為啟動這個功能,可能在處理器上添加若干新的硬件特征(例如定時器、設備過濾、調度緩存、頁表、中斷映射支持和閃存中的空間),還可能需要擴展的軟件堆棧(內核、UOS驅動、內核驅動、固件等),并且還可能需要非核心補丁支持。每個執行容器將具有獨立的存儲器(包括單獨的擴展頁表(EPT))、它們自身的狀態、控制在處理器上執行所需的時間片段的方法,和用于專門訪問硬件設備的潛在方法(通過設備過濾、局部高級可編程序中斷控制器(APIC)和中斷重映射強制執行)。受保護的執行環境的一個示例和在計算系統中用于改進功率效率的使用模型公開在Kumar等人的“Method and Apparatus for Cost andPower Efficient Scalable Os-1ndependent Services”中,其于 2007 年 12 月 26 日提交,序號為11/964,439,已轉讓給本申請的受讓人,并通過引用方式將其并入本申請。在實施例中,應用與受保護的執行環境資源管理器(RM) 110進行通信。在實施例中,RM可被實現為計算系統的處理器中的微代碼,并且RM創建在不同完整性級別運行的線程。在實施例中,RM可以作為獨立的超線程而運行,其不可被環O或環3進程訪問。RM的受保護的超線程可以在系統引導過程期間被實例化,并且可以由操作系統進行調度但不會被操作系統修改。在執行容器100中運行的應用上強制執行Biba安全策略可以通過以下實現:使RMllO以比執行容器更高的完整性級別進行操作,使得代表執行容器來修改或破壞RM的任意企圖構成對安全策略的違反。RM能夠在執行容器中建立信任,作為在執行容器中加載和驗證操作系統的一部分。在實施例中,執行容器發起控制策略來確認執行容器能力包括強制執行Biba安全規則的能力。在RM中的域策略管理器112將一系列的Biba標簽(S卩,特權)分配給應用策略管理器102。域策略管理器保持跟蹤域能在處理器中運行的標簽。執行容器根據提供的范圍來強制執行Biba規則。應用策略管理器接著將特權分配給來自所述范圍內的執行容器應用。這確保了系統范圍的Biba級別的語義一致性,即使執行容器可能不具有計算平臺資源的全局視角。RMllO提供了多個安全域。在實施例中,域是物理資源(例如存儲器、磁盤存儲設備或網絡接口設備)的分區,其中該分區根據由資源管理器使用的Biba標簽包含已標記的數據。在圖1示出的示例中,有兩個域,具有在類別Yl中的完整性級別Xl的域A114,和在類別Y2中的完整性級別X2的域B116。可以將各種計算系統部件(例如物理存儲器和設備118)分配到一個域。例如,可將設備120和122分配給域A,并且可以將設備124和126分配到域B。例如,包含在直接存儲器存取(DMA)緩存中在Biba標簽(X1:Y1)處指定的存儲頁面可被寫入到磁盤存儲設備,所述磁盤存儲設備具有根據Biba標簽方案的分區軌道,其中軌道0-η對應于標簽(X1:¥1),并且軌道(11+1)-111對應于標簽乂2:Υ2,以此類推。也可以在DMA存儲器上創建虛擬化技術的表,使得虛擬化技術的道對應于標簽(X1:Y1 ),并且第二虛擬化技術的道對應于另一標簽X2:Y2,以此類推。圖1還包括嘗試在應用之間讀和寫的流程管理的表示。如果App LI的完整性級別Xl低于或等于高級別,則在域A中具有高級別完整性的應用可以向下寫入App L1104。在域A中的應用也可以從App LI讀取。App LI可以從在域A中的應用讀取。因為App L2的完整性級別Χ2小于或等于App LI的完整性級別XI,所以App L1104可以向下寫App L2106。App LI也可以從App L2讀取。App L2可以從App LI讀取。因為App L3的完整性級別Χ3低于或等于App L2的完整性級別Χ2,所以App L2106可以向下寫App L3108o App L2也可以從App L3讀取。App L3可以從App L2讀取。因為域B中的應用的低完整性級別低于或等于App L3的完整性級別X3,所以App L3108也可以向下寫域B130中的應用。App L3也可以從在域B中的應用讀取。在域B中的應用可以從App L3讀取。圖2示出了根據本發明的實施例的具有客戶OS的執行容器完整性模型。RMllO可以將全局Biba特權分配給缺少可信Biba感知內核的客戶0S200。特權在初始化客戶OS時被關聯。RM微代碼監視隨后對硬件的訪問。因此,因為策略阻抗不匹配,所以在執行容器中運行的應用所共享的設備和存儲器資源不會造成線程增加。但是客戶OS應用(例如在這個示例中的App L3108)能繼續正常運行而不需要知道Biba安全模型對設備和系統資源的約束,除非這些訪問表示對系統完整性的威脅。在實施例中,RM包括全局客戶特權分配部件20,用于將Biba模型應用到客戶OS訪問。例如,如果由CPU超線程組成的Biba感知執行容器100具有分別分配了 B iba標簽(X1:Y1)和(X2:Υ2)的兩個應用LI 104和L2106,給定在沒有Biba感知的客戶0S200 (運行在第二 CPU超線程中)中的第三應用L3108可能需要使用由資源管理器分配的資源。作出創建用于分配給客戶OS的資源的默認映射的全局客戶特權分配,使得由資源管理器進行的Biba標簽支配計算將產生明確的結果;并且當客戶OS訪問時已經給予Biba標簽的資源會混淆沒有Biba感知的客戶OS。在包括AV掃描代理的客戶OS中保護存儲頁面的新技術可以“加固”這些頁面來對抗客戶OS中的惡意軟件的可能攻擊。通過進行這些存儲頁面保護配置和使用受保護的執行環境的運行時間軟件,在客戶OS中的受保護部件能夠以提高的安全級別操作,其安全策略相對于系統范圍的策略是一致的。圖3是根據本發明的實施例的具有客戶OS (具有AV應用)的執行容器完整性模型的圖。在實施例中,計算系統可以建立一系列的域以能夠保護AV掃描代理的完整性。在實施例中,可以為正被監視是否變化的客戶OS存儲器創建一組域。一些域可以包括在客戶0S200內的受保護的資源303。至少一個域可以包括在客戶0S200內的未受保護的資源306。在實施例中,域可以與在處理器中的微操作(uop)線程相關聯。域A114:最高完整性級別(SYS_HI)。這個域可以由計算系統建立并且具有最高完整性級別。域Al 14由計算硬件(寄存器、存儲器)、RMllO和RM受控設備,以及應用策略管理器102組成,所述應用策略管理器102能夠接受清單和存儲器區域并且驗證該存儲器區域與清單相匹配,并且基于存儲在應用策略管理器中的可信根驗證簽名的有效性。域B116:(域B〈域A)。域B包含受保護的執行環境100應用,其運行來支持AV掃描代理保護機制。可以由RMllO以及在執行容器100中運行的其他程序來驗證這些應用。部件包括運行時間/輕量級操作系統(未示出)、加載器302、錯誤處理器304、應用清單322和應用策略管理器102,所述應用策略管理器102向域C防病毒應用300提供服務,并且負責證實域C防病毒應用300且將防病毒應用安裝到執行容器100中。域C310:(域C〈域B)。這是將在其中執行防病毒應用的域。在域C中的防病毒應用具有比執行容器100應用更低的完整性級別,但因為在這個域中應用的完整性可能由域A中的數字簽名和應用策略管理器102進行驗證,所以其高于計算系統的其余部分。在實施例中,在這個域中可能有至少兩個應用,在執行容器100中運行的錯誤處理器304和在受保護頁面中運行在用戶(客戶)0S200中的防病毒應用300。該防病毒應用可以具有客戶OS專用知識,但需要被高于域D的Biba模型保護。域c-l, C-2,..., c-n:(如果 i>i,則域 C_i〈域 C_i。域 C-2〈域 C-1〈域 C)。域 C的應用(防病毒應用300和錯誤處理器304)將創建一系列低于域C的細粒度域。當將寫入陷阱放置在那些存儲器區域周圍時,它們將在客戶OS中的存儲器放入這些域中。這些域具有低于域C的完整性級別,這是因為并不知道在存儲器區域中的值沒有惡意軟件,但是知道自設置了陷阱后這些值沒有改變。這與域C相對比,在域C中所包括的軟件被顯示出從創建軟件起就沒有改變軟件的清單簽名。也與域D相對比(在下面討論,即,客戶OS環境),在域D內,在任意時間都能改變存儲器。在實施例中,可以使用一系列這樣的域,使得AV應用可以分辨在受保護項目中的不同級別的完整性。例如,因為處理器的全局描述符表寄存器(GDTR)存儲在域A硬件中所以已知在GDTR中的值具有高確信度,而與網絡存儲器映射呈線性的值可以取決于存儲在以前建立的域C-1中的值。因此,不能以與域C-1相同的完整性級別建立值并且因此所述值必須具有其自身的域C- (i+1)。域D312:(域D〈域C-n〈域-C)。在實施例中,域D可以是分配給可被客戶應用308所訪問的所有未保護的資源306的全局域。這包括客戶環O應用和內核。域D還包括所有的環3應用軟件。從物理存儲設備的一分區分配客戶OS存儲資源,其中分區320包含在具有標簽(X4:Y)的域D中的軌道tO-tn。包含在受保護的客戶OS存儲頁面303中的AV應用300具有存儲頁面陷阱,當解除引用(de-reference)所述陷阱時將致使錯誤處理器314咨詢Biba MAC策略,借此可以使用支配包括域C的默認標簽的標簽來覆蓋默認客戶OS Biba標簽。通常由318表示這些存儲頁面。從存儲池和存儲資源314和316分配由執行容器100消耗的物理資源。執行容器100對由標簽分離和通過分區來強制執行的這些資源具有排他性訪問。可以將應用清單322存儲在具有符合域A114的標簽分配的執行容器存儲314中。圖4是根據本發明的實施例的用于建立域C的流程圖400。在塊402,AV應用部件300使用處理器指令來指定錯誤處理器部件304的代碼鏡像、用于錯誤處理器的清單、AV應用的存儲器位置,和AV應用清單322。在塊404,加載器部件302使用應用策略管理器102來驗證應用清單322和錯誤處理器304代碼鏡像。如果成功地驗證了應用清單和錯誤處理器,則過程繼續。加載器創建域C310、將錯誤處理器代碼鏡像拷貝到與域C相關聯的存儲器內,并且啟動由處理器執行的錯誤處理器代碼。在塊406,加載器302請求錯誤處理器304鎖定在客戶0S200中為AV應用300保留的存儲頁面。在塊408,錯誤處理器通過在客戶OS存儲器318中的所選代碼片段上設置陷阱,來鎖定當前加載在客戶存儲器中的AV應用300的可執行代碼鏡像。最初,客戶OS受保護的頁面在域D處。在塊410,加載器測量AV應用存儲器并將其與AV應用清單322進行比較。如果在客戶OS中的攻擊者通過供應不正確的頁面地址而較早地欺騙了錯誤處理器,則完整性檢測應該會失敗。因此,加載器不依賴在域D中的頁面表來執行完整性檢查,而是基于運行在域A中的應用策略管理器102所證實的清單。在塊412,一旦加載器驗證了 AV應用鏡像的完整性,并且已建立了條件使得其他的客戶OS應用(或甚至是客戶OS內核代碼)在不觸發頁面陷阱(由錯誤處理器可檢測)情況下不能修改鏡像,加載器將AV應用推進到域C。在實施例中,現在錯誤處理器304和AV應用300在同一域中,它們能夠經由硬件實現的處理器發送消息命令進行通信。在塊414,錯誤處理器驗證從AV應用接收的每個消息都來源于上述定義和鎖定的存儲器區域內。在域C中包括代碼片段和數據片段二者。鎖定用于消息的代碼片段并將其與錯誤處理器的代碼片段一起放入到域C中,并且可以許可AV應用來訪問這些頁面。此時,已經建立了域C,包括運行在執行容器100中的錯誤處理器和運行在客戶0S200中的AV應用300。清單已驗證了這兩個部件并且存儲器陷阱保留了軟件鏡像的完整性。現在可以運行AV應用來掃描惡意軟件。圖5是示出根據本發明的實施例的對應于一系列資源設陷機構的級聯Biba安全級別的圖。設置初始內核陷阱包括建立或改變域C-l、C-2等。將資源放入到不同的域改進了系統的整體安全性。圖5示出了圖4的塊408的另外的細節。客戶0S200可以包括用于域C500的受保護的資源區域,受保護的資源區域在實施例中包括AV配置程序510。客戶OS也可以包括用于域D的未受保護的資源區域306,未受保護的資源區域306在實施例中可以包含未受保護的頁面520,客戶OS還包括用于域D的受保護的資源區域508。域C-1502具有任意C子域的最高完整性級別。因為外部機構簽名的清單沒有證實,因此其內容不能保證是沒有惡意軟件的。關于C子域將做出確認:從設置陷阱的點起,沒有未經授權的軟件修改了值(但是不保證未經授權的軟件在設置陷阱之前沒有修改信息)。在實施例中,可以首先建立域C-1502并且該域包含在受保護的寄存器512內的所有內核元件。可以接著使用域C-1的元件建立域C-2504來獲得正確的地址。域C-1將包含為未授權的改變(SYSENTER MSR、CR3等)所監視的系統的寄存器514,并且域C-2將包含地址轉換頁表(PT)和頁面錯誤處理器(ΡΠΟ 514。一旦建立了這些域,可以進一步創建域C-K例如域C-N506),所述域C-1依賴于域C-1和域C-2的完整性。進一步地,域η可以包含設備驅動器516和應用,所述應用的頁面是使用頁面錯誤陷阱(例如AV掃描器518)來保護的。圖6是示出根據本發明的實施例的建立C子域的流程圖600。在塊602,AV應用300識別要設陷的內核寄存器512以及在內核內被允許修改這些寄存器的代碼位置一例如允許改變用于客戶OS200上下文的CR3的值的調度軟件。在塊604,AV應用向錯誤處理器304發送消息來在所選的寄存器和允許對寄存器做出修改的一列代碼位置上設置陷阱。在塊606,錯誤處理器將寄存器和代碼位置放置到域C-1502中,并且在寄存器和授權的代碼設置上設置寫入陷阱。此時,對寄存器的所有未授權的訪問將在受保護的執行環境系統內生成陷阱,并且將生成從域D306寫入到域C-1502的Biba違例。在塊608,AV應用使用在域C-1中的寄存器的值來識別需要在域C-2504中受到保護的系統的頁面表514。在塊610,AV應用向錯誤處理器發送消息以在所選的頁面表條目上設置陷阱,并且包括允許對那些位置(例如頁面錯誤處理器)做出修改的一列位置。在塊612,錯誤處理器在所選的頁面表條目上、在那些被授權修改頁面表的代碼位置上設置陷阱,并且將存儲器和代碼位置放置到域C-2504中。此時,對頁面表的所有未授權的訪問將生成在受保護的執行環境系統中的陷阱,并且將生成從域D306寫入到域C-2504的Biba違例。所有授權的操作將是從域C-2504到域C-2的寫入或從域C-2到域D306的寫入。此時,已保護了核心系統(內核)寄存器和頁面表。這允許系統在這些核心元件上構建更復雜的陷阱。圖7是示出根據本發明的實施例的設置應用陷阱的流程圖700。圖7提供了圖6的塊604的實施例的進一步細節來用于建立或改變域C-1。這在無論何時AV應用確定必須保護內核或用戶存儲器的區域,或當系統狀態改變使得以前沒有訪問特定存儲器區域的代碼區域現在需要訪問那個區域時發生。在塊702,AV應用300確定在內核或應用存儲器中需要保護的位置。AV應用讀取客戶OS硬件寄存器512和頁面表514來計算陷阱的位置。這些值駐留在域C-1502或域C-2504中。在塊704,AV應用向錯誤處理器304發送消息,以在所需的存儲器位置和允許對這些存儲器位置做出修改的一列代碼位置上設置陷阱。在塊706,錯誤處理器在存儲器位置和授權修改存儲器位置的所有代碼位置上設置寫入陷阱。然后錯誤處理器將這些元件放置到域C-1中,其中i被確定為j-Ι,其中j是用于計算陷阱的地址和位置的最高域級別。來自未受保護區域的所有未授權訪問將生成Biba違例,這是因為其將是從域D306到域C-1的寫入。但是,如果在域C-1內存在多個區域,則將需要辨別在該域內的寫入(從被授權寫入到一個存儲區區域的寫入不能被允許向該域中的所有區域寫入)。圖8是示出根據本發明的另一實施例的設置應用陷阱的流程圖800。這個過程可被用作圖7的替換流程。在塊802,AV應用確定在內核或應用代碼內的位置需要訪問在域C-1內的存儲器位置。這可能是因為安裝了新的驅動器或其他軟件。在塊804,AV應用向錯誤處理器發送消息以包括在域C-1內的代碼區域。在塊806,錯誤處理器在代碼位置上設置陷阱,并將代碼位置放置到域C-1中。至此,已將AV應用表示為在受保護的執行環境系統內的單個實體,但在實施例中,AV應用可以由多個部分組成并且所述部分可以駐留在系統內的不同域中。例如,在實施例中,AV應用可以由兩個部件組成:在客戶OS對象上設置陷阱的AV配置(Config)應用510,和讀取未受保護頁面和文件來用于尋找惡意軟件感染的AV掃描器應用518。通過這個分割模型,可將AV配置部件提升到域C500中,但是AV掃描器518可以保留在較低的域中。在一個實施例中,可將AV掃描器放置在最低的C子域中(域C-n506),并且AV掃描器取決于所有更高域的完整性,但是它隔離于來自域D惡意軟件的攻擊,這是因為任何由域D惡意軟件向AV掃描器的寫入將生成Biba錯誤。當在“環”模式中使用Biba時,許可AV掃描器518讀取域D的對象同時在域C_n506操作。如果檢測到感染的對象,AV掃描器可以在域D產生子程序來刪除或隔離感染的文件。因為AV掃描器不能在域C-n運行,所以AV掃描器永遠不會受到攻擊型惡意軟件的威脅。AV掃描器可以給成功通過AV掃描的硬盤驅動器(HDD)或固態硬盤(SSD)320或存儲頁面分配新的標簽。新標簽是大于D并小于域C-n的域。通過驗證標簽改變請求來源于AV掃描器頁面,同時頁面陷阱是激活的且AV掃描器標簽在域C-n或更高的域,資源管理器(RM) 110驗證AV掃描器是可信的(例如,頁面陷阱保護是合適的)以執行在已掃描的對象上執行標簽改變。當在“低水位線”模式使用Biba時,AV掃描器自動地將標簽轉換到域D來執行掃描。如果檢測到感染的對象,掃描器可以立即移除或隔離,但是不可以改變清除對象的標簽。然而,通過確認AV掃描器符合域C-n的要求,所述要求是已在所有臨界代碼和數據區域上放置了陷阱,并且在AV掃描器在域D中操作時這些陷阱已是合適的,AV掃描器可以按如上所述將其標簽改變為域C-n。僅因為資源陷阱,AV掃描器518被保護不受域D惡意軟件的損害;在此沒有強制使用Biba限制。當在“嚴格”模式中使用Biba時,AV掃描器必須在執行對象掃描和隔離之前請求標簽改變為域D。接著,當完成改變時,AV掃描器必須請求將標簽改變回域C-n以對清除對象重新標注。在實施例中,將AV掃描器放置到域C-n可以按如下完成。AV配置應用510確定在AV掃描器應用518內需要保護的位置。AV配置應用發信號通知錯誤處理器304將陷阱放置在適當的AV掃描器應用位置上。因為域C-n取決于所有其他的C子域,所以錯誤處理器設置適當的陷阱,并且將位置放置到域C-n506中。圖9是示出根本發明的實施例的執行陷阱的流程圖900。在某一時間,在設陷的位置將發生寫入。這將生成錯誤(通過AV掃描器機制或通過從較低完整性域向較高完整性域進行寫入造成的Biba違例)。在塊902,如果客戶0S200應用或內核向設置了陷阱的存儲器進行寫入,則RMllO標記頁面訪問并且調用錯誤處理器304。在塊904,RM創建一組來自寄存器的系統狀態表。在塊906,RM調用錯誤處理器并將系統狀態表傳遞給錯誤處理器。確信正確地構造了狀態表。在塊908,錯誤處理器確定被嘗試訪問的存儲器的域和正在訪問存儲器的代碼的域。在塊910,如果嘗試的存儲器訪問來自高于或等同于存儲器的域的域,并且嘗試訪問存儲器的代碼位置列在允許改變這個存儲器位置的范圍組中,則錯誤處理器允許操作。在塊912,如果嘗試的存儲器訪問來自于低于存儲器的域的域,則錯誤處理器不允許訪問改變存儲器。圖10是根據本發明的另一實施例的具有用于虛擬機管理器(VMM) 1002的客戶OS的執行容器完整性模型的圖。所使用的VMM在虛擬化技術的技術領域中是普遍知曉的。在實施例中,VMM能夠強制執行通常理解的Biba安全策略。RMllO在高于VMM的完整性級別進行操作,使得代表VMM的任何嘗試對RM進行的修改或破壞都構成對安全策略的違例。作為VMM負載的一部分,RM能夠建立對VMM的信任,并且能夠驗證確認VMM能力的啟動控制策略包括強制執行Biba安全規則的能力。在RM中的域策略管理器112將一系列Biba標簽(即,特權)分配給在VMM內的VM策略管理器1004。VMM根據提供的范圍強制執行Biba規貝U。在VMM中的VM策略管理器接著將特權分配給來自那個范圍內的VM容器。這確保Biba級別系統范圍的語義連續性,即使VMM可能不具有對所有計算平臺資源的全局視角。例如,如果在執行容器100中的應用程序(例如,App L1104)被分配了特權域A114,并且運行在客戶VM11008中的應用(例如,App G11006)被分配了特權域A114,則這兩個應用將使用類似的特權進行操作。此外,如果App L1104將信息降級用于App L2106消耗,則App L2能夠將那個信息通知給運行在客戶0S200環境中的客戶VM21012中的AppG21010,而不違反系統范圍安全策略。類似地,App G21010能夠降級信息并且將其共享給運行在客戶VM31016中并具有域C310的App G31014,和/或App L3108,而不違反安全策略。具有通常理解的安全策略模型允許系統部件之間的靈活互動,同時仍舊可以確保保持系統的安全目的。如果確定客戶OS環境具有低于受保護的執行環境的最大級別的可信度,則RM將保留在沒有分配給VMM環境的范圍的頂層的特權級別。如果VMM被損壞并且分配的特權在其分配的范圍外,則RM能夠在存儲器和設備訪問上執行范圍檢查來檢測欺騙。如果使用安全啟動技術(例如,可信的執行技術(TXT))啟動VMM環境,則RM可以信任VMM來強制執行在VM頁面上的范圍檢查。這可能會產生有益的性能影響。受保護的執行環境的使用可以結合虛擬化,同時保持系統范圍的Biba安全策略一致性。圖11是根據本發明的實施例的具有用于VMM1002的客戶0S200的執行容器完整性模型的圖,其中虛擬機包括AV應用。可以使用受保護的執行環境來在VM11008中的更高的特權應用上強制執行域邊界。具有相同特權的VMM信任VMl (例如,域O是代表VMM行動的VM)。但是,如果VM受到損害,VM能夠破壞VMM的行為。圖11示出了用于填充在VM11008中的應用(App G11006)的執行環境1022,使用存儲器沙盒技術保護所述應用。VMM使用通常理解的由RMllO的域策略管理器112指導的策略語法和語義來對VM強制執行Biba特權。另外的頁面保護可被用于在VM11008中的AppG11006。可以將Biba策略分配給應用策略管理器102,使得分配給App G11006的Biba標簽在VMM策略管理器1004分配給VMl 1008的標簽范圍內。在VM1008中的客戶OS沒有感知Biba的情況下,VMM1002能夠注冊應用1006頁面1018來生成VMExit陷阱,使得VM清單1020包含用于構建VMExit陷阱的策略和Biba標簽分配,其覆蓋Biba感知VMM1002分配的默認標簽。在客戶OS感知Biba VM1012&1016的情況下,VM根據VM做出的標簽分配來分配
存儲器頁面。本發明的實施例通過實現由處理器的微代碼強制執行的強制完整性策略來提供受保護的執行環境。正式指定的完整性規則(例如,Biba)使得驗證和安全評估更簡單。在處理器硬件中的執行(微代碼)確保受到損害的OS不能容易地破壞安全策略。本發明的實施例可用于虛擬化環境和非虛擬化環境并用于在任意操作系統環境中。圖12示出了計算系統1200的實施例的框圖。在各個實施例中,可以用能夠執行參考本發明的一些實施例在本文中討論的一種或多種操作的各種電子設備來提供系統1200的一個或多個部件。例如,可以使用系統1200的一個或多個部件來執行參考圖1-11所討論的操作,例如根據本文中的討論的操作的處理指令、執行子程序等。還有,可以使用在本文中討論的各種存儲設備(例如,參考圖12和/或圖13)來存儲數據、操作結果等。在一個實施例中,可以將在網絡1203上接收(例如,經由網絡接口設備1230和/或1330)的數據存儲在存在于處理器1202 (和/或圖3的1302)中的高速緩存(例如,在實施例中為LI高速緩存)中。這些處理器可以接著根據本發明的各個實施例應用在本文中討論的操作。更具體地,計算系統1200可以包括經由互連網絡(或總線)1204進行通信的一個或多個中央處理單元(CPU) 1202或處理器。因此,在一些實施例中可以由處理器執行在本文中討論的各種操作。此外,處理器1202可以包括通用處理器、網絡處理器(其處理在計算機網絡1203上傳輸的數據),或其他類型的處理器(包括精簡指令集計算機(RISC)處理器或復雜指令集計算機(CISC))。此外,處理器1202可以具有單個或多個內核設計。具有多個內核設計的處理器1202可以在同一集成電路(IC)芯片上集成不同類型的處理器內核。還有,具有多個內核設計的處理器1202可以實現為對稱的或非對稱的多處理器。此外,可以由系統1200的一個或多個部件執行參考圖1-11所討論的操作。在實施例中,處理器(例如處理器11202-1)可以包括作為硬件線路邏輯(例如,電路)或微代碼的資源管理器(RM)110。芯片組1206也可以與互連網絡1204進行通信。芯片組1206可以包括圖形和存儲器控制中心(GMCH) 1208。GMCH1208可以包括與存儲器1212進行通信的存儲器控制器1210。存儲器1212可以存儲數據,包括處理器1202或計算系統1200包括的任意其他設備執行的指令序列。此外,存儲器1212可以存儲在本文中討論的一種或多種程序或算法,例如執行容器100、客戶0S200、編譯器1213、根據執行表的指令、映射等。這些數據(包括指令)的相同部分或至少一部分可以存儲在硬盤驅動器1228和/或在處理器1202內的一個或多個高速緩存中。在本發明的一個實施例中,存儲器1212可以包括一種或多種易失性存儲(或存儲器)設備,例如隨機存取存儲器(RAM)、動態RAM (DRAM)、同步DRAM (SDRAM)、靜態RAM (SRAM),或其他類型的存儲設備。還可以使用非易失性存儲器,例如硬盤。另外的設備可以經由互連網絡1204進行通信,例如多處理器和/或多系統存儲器。GMCH1208還可以包括與顯示器1216通信的圖形接口 1214。在本發明的一個實施例中,圖形接口 1214可以經由加速圖形端口(AGP)與顯示器1216進行通信。在本發明的實施例中,顯示器1216可以是通過例如信號轉換器與圖形接口 1214進行通信的平板顯示器,所述信號轉換器將存儲在存儲設備(例如,視頻存儲器或系統存儲器)中的圖像的數字表示轉換為由顯示器1216進行解釋和顯示的顯示信號。由接口 1214產生的顯示信號在被顯示器1216解釋并隨后顯示之前,可以通過各種控制設備。中心接口 1218可以允許GMCH1208和輸入/輸出(I/O)控制中心(ICH) 1220進行通信。ICH1220可以向I/O設備提供與計算系統1200進行通信的接口。ICH1220可以通過外圍橋(或控制器)1224與總線1222進行通信,所述外圍橋(或控制器)1224例如為外圍部件互連(PCI)橋、通用串行總線(USB)控制器,或其他類型的外圍橋或控制器。橋1224可以提供在處理器1202和外圍設備1224之間的數據路徑。也可以使用其他類型的技術。還有,多條總線可以通過例如多個橋或控制器與ICH1220進行通信。此外,在本發明的各個實施例中,可以包括與ICH1220進行通信的其他外圍設備:電子集成驅動器(IDE)或小型計算機系統接口(SCSI)硬盤驅動器、USB端口、鍵盤、鼠標、并行端口、串行端口、軟盤驅動器、數字輸出支持(例如,數字視頻接口( DVI)),或其他設備。總線1222可以與音頻設備1226、一個或多個磁盤驅動器1228和網絡接口設備1230進行通信,所述網絡接口設備1230可以與計算機網絡1203進行通信。在實施例中,設備1230可以是能夠有線通信或無線通信的網絡接口控制器(NIC)。其他設備可以經由總線1222進行通信。還有,在本發明的一些實施例中,各種部件(例如網絡接口設備1230)可以與GMCHl208進行通信。此外,可以結合處理器1202、GMCH1208,和/或圖形接口 1214來形成單個芯片。此外,計算系統1200可以包括易失性和/或非易失性存儲器(或存儲)。例如,非易失性存儲器可以包括以下的一種或多種設備:只讀存儲器(ROM)、可編程ROM (PR0M)、可擦除PROM (EPR0M)、電EPROM (EEPR0M)、磁盤驅動器(例如,1228)、軟盤、光盤只讀存儲器(CD-ROM)、數字多用途盤(DVD)、閃存、磁光盤,或其他類型的能夠存儲電子數據(例如,包括指令)的機器可讀介質。在實施例中,可以以例如參考圖13所討論的點對點(PtP)配置來安排系統1200的部件。例如,通過多個點對點接口可以互連處理器、存儲器和/或輸入/輸出設備。更精確地,圖13示出了根據本發明的實施例的安排為點對點(PtP)配置的計算系統1300。特別地,圖13示出了其中通過多個點對點接口進行互連的處理器、存儲器和輸入/輸出設備的系統。可以通過系統1300的一個或多個部件來執行參考圖1-12所討論的操作。如圖13所示,系統1300可以包括多個處理器,為了清楚僅示出了兩個處理器,處理器1302和1304。處理器1302和1304每一個可以包括與存儲器1310和1312相耦合的本地存儲器控制中心(MCH)1306和1308(在一些實施例中,其可以是與圖12中的GMCH1208是相同或相似的)。存儲器1310和/或1312可以存儲諸如參考圖13的存儲器1212所討論的那些各類數據。處理器1302和1304可以是例如參考圖13的處理器1302所討論的那些任何適當的處理器。處理器1302和1304可以分別使用PtP接口電路1316和1318經由點對點(PtP)接口 1314來交換數據。處理器1302和1304中的每一個可以使用點對點接口電路1326、1328、1330和1332經由個體PtP接口 1322和1324與芯片組1320進行數據交換。芯片組1320還可以使用PtP接口電路1337經由高性能圖形接口 1336與高性能圖形電路1334進行數據交換。通過使用處理器1302和1304可以提供本發明的至少一個實施例。例如,處理器1302和/或1304可以執行圖1-11的一個或多個操作。但是本發明的其他實施例可以存在于圖13的系統1300中的其他電路、邏輯單元或設備中。此外,本發明的其他實施例可以分布在圖13中示出的數個電路、邏輯單元,或設備。可以使用PtP接口電路1341來將芯片組1320耦合到總線1340。總線1340可以具有與其相耦合的一個或多個設備,例如總線橋1342和I/O設備1343。經由總線1344,總線橋1343可以與其他設備相耦合,所述其他設備例如為鍵盤/鼠標1345、參考圖12討論的網絡接口設備1330 (例如調制解調器、網絡接口卡(NIC),或類似的可以與計算機網絡1303相耦合的設備)、音頻I/O設備1347,和/或數據存儲設備1348。數據存儲設備1348可以存儲可被處理器1302和/或1304執行的代碼1349。在本發明的各個實施例中,在本文中例如參考圖1-13所討論的操作可以用硬件(例如,邏輯電路)、軟件(包括,例如,控制處理器(例如參考圖12-13所討論的處理器)操作的微代碼)、固件,或其上的組合,它們可以作為計算機程序產品來提供,例如,包括具有指令(或軟件程序)存儲在其上的有形的機器可讀或計算機可讀介質,所述指令用來為計算機(例如,處理器或計算機設備的其他邏輯)編程以執行在本文中討論的操作。機器可讀介質可以包括例如在文本中所討論的那些存儲設備。本說明書中引用“一個實施例”或“實施例”指結合該實施例所描述的特定特征、結構或特性包括在本發明的至少一個實施例中。本說明書中各處出現的短語“在一個實施例中”并不必然全都指相同實施例。在說明書和權利要求書中,可以使用術語“耦合”和“連接”以及它們的派生詞。在特定的實施例中,“連接”可被用來指示兩個或更多個元件彼此之間是直接物理接觸或電接觸的。“耦合”可以意味著兩個或更多個元件是直接物理接觸或電接觸的。然而,“耦合”還可以意味著兩個或更多的元件彼此之間不是直接接觸的,但彼此之間仍然可以協作或交互。此外,這些計算機可讀媒介可以作為計算機程序產品而被下載,其中可以經由通信鏈路(例如總線、調制解調器,或網絡連接)通過數據信號的方式將程序從遠程計算機(例如,服務器)傳送到請求計算機(例如,客戶端)。因此,雖然已經用具體到結構特征和/或方法動作的語言描述了實施例,但是可以理解,不應將聲明的主題限制到所描述的具體特征或動作。而是,作為實現聲明的主題的示例形式公開了這些具體特征和動作。
權利要求
1.一種在具有加載器和錯誤處理器的計算系統中,對在客戶操作系統中運行的獨立于操作系統(OS)的防病毒(AV)應用強制執行安全策略的方法,包括: 由所述AV應用指定錯誤處理器代碼鏡像、錯誤處理器清單、所述AV應用的存儲器位置,和AV應用清單; 由所述加載器驗證所述錯誤處理器代碼鏡像和所述錯誤處理器清單; 由所述加載器創建具有第一安全級別的第一安全域,將所述錯誤處理器代碼鏡像拷貝到與所述第一安全域相關聯的存儲器,并且啟動所述錯誤處理器的執行; 由所述加載器請求鎖定在所述客戶OS中為所述AV應用保留的存儲器頁; 通過在所述客戶OS存儲器頁中所選的代碼段上設置陷阱,所述錯誤處理器鎖定加載到客戶OS存儲器中的所述AV應用的可執行代碼鏡像; 由所述加載器測量AV 應用存儲器并將所述測量與所述AV應用清單進行比較;以及當所述測量和比較步驟成功地驗證所述AV應用時,由所述加載器將所述AV應用提升到所述第一安全域。
2.根據權利要求1所述的方法,其中,所述加載器和所述錯誤處理器在所述計算系統中的受保護的執行環境中執行。
3.根據權利要求1所述的方法,其中,在所述客戶OS中運行的其他應用位于具有第二安全級別的第二安全域中,所述第一安全級別高于所述第二安全級別。
4.根據權利要求3所述的方法,其中,在所述第二安全域中運行的應用在沒有觸發由所述錯誤處理器檢測到的陷阱的情況下不能修改在所述第一安全域中的存儲器。
5.根據權利要求3所述的方法,其中,在所述第二安全域中運行的客戶OS內核代碼在沒有觸發由所述錯誤處理器檢測到的陷阱的情況下不能修改在所述第一安全域中的存儲器。
6.根據權利要求1所述的方法,還包括執行所述AV應用來掃描在所述計算系統中的惡意軟件。
7.根據權利要求6所述的方法,還包括由所述錯誤處理器驗證來自所述AV應用的消息來源于已鎖定的客戶OS存儲器。
8.根據權利要求1所述的方法,其中,由所述計算系統的處理器的資源管理器邏輯來控制對所述安全域的訪問。
9.根據權利要求1所述的方法,其中,所述AV應用在由虛擬機管理器(VMM)所控制的虛擬機中執行。
10.一種包括一條或多條指令的計算機可讀介質,當在具有加載器和錯誤處理器的計算系統的處理器上執行所述指令時,配置所述處理器執行以下一個或多個操作: 由防病毒(AV)應用指定錯誤處理器代碼鏡像、錯誤處理器清單、所述AV應用的存儲器位置,和AV應用清單; 由所述加載器驗證所述錯誤處理器代碼鏡像和所述錯誤處理器清單; 由所述加載器創建具有第一安全級別的第一安全域,將所述錯誤處理器代碼鏡像拷貝到與所述第一安全域相關聯的存儲器,并且啟動所述錯誤處理器的執行; 由所述加載器請求鎖定在所述客戶OS中為所述AV應用保留的存儲器頁; 通過在所述客戶OS存儲器頁中所選的代碼段上設置陷阱,所述錯誤處理器鎖定加載到客戶OS存儲器中的所述AV應用的可執行代碼鏡像; 由所述加載器測量AV應用存儲器并將所述測量與所述AV應用清單進行比較;以及當所述測量和比較步驟成功地驗證所述AV應用時,由所述加載器將所述AV應用提升到所述第一安全域。
11.根據權利要求10所述的介質,其中,所述加載器和所述錯誤處理器在所述計算系統中的受保護的執行環境中執行。
12.根據權利要求10所述的介質,其中,在所述客戶OS中運行的其他應用位于具有第二安全級別的第二安全域中,所述第一安全級別高于所述第二安全級別。
13.根據權利要求12所述的介質,其中,在所述第二安全域中運行的應用在沒有觸發由所述錯誤處理器檢測到的陷阱的情況下不能修改在所述第一安全域中的存儲器。
14.根據權利要求12所述的介質,其中,在所述第二安全域中運行的客戶OS內核代碼在沒有觸發由所述錯誤處理器檢測到的陷阱的情況下不能修改在所述第一安全域中的存儲器。
15.根據權利要求10所述的介質,還包括用于執行所述AV應用來掃描在所述計算系統中的惡意軟件的指令。
16.根據權利要求15所述的介質,還包括用于由所述錯誤處理器驗證來自所述AV應用的消息來源于已鎖定的客戶OS存儲器的指令。
17.一種計算系統,包括: 用于執行指令來強制執行用于所述計算系統的安全策略的處理器,所述處理器包括控制對多個安全域的訪問的資源管理器邏輯; 包括加載器和錯誤處理器的執`行容器;以及 包括防病毒(AV)應用的客戶操作系統(OS); 其中,所述AV應用指定錯誤處理器代碼鏡像、錯誤處理器清單、所述AV應用的存儲器位置,和AV應用清單; 其中,所述加載器驗證所述錯誤處理器代碼鏡像和所述錯誤處理器清單,創建具有第一安全級別的第一安全域,將所述錯誤處理器代碼鏡像拷貝到與所述第一安全域相關聯的存儲器,由所述處理器啟動所述錯誤處理器的執行,和請求鎖定在所述客戶OS中為所述AV應用保留的存儲器頁; 其中,所述錯誤處理器通過在所述客戶OS存儲器面中所選的代碼段上設置陷阱來鎖定加載到客戶OS存儲器中的所述AV應用的可執行代碼鏡像;以及 其中,所述加載器測量AV應用存儲器,將所述測量與所述AV應用清單進行比較,并且當所述測量和比較步驟成功地驗證所述AV應用時,將所述AV應用提升到所述第一安全域。
18.根據權利要求17所述的計算系統,其中,在所述客戶OS中運行的其他應用位于具有第二安全級別的第二安全域中,所述第一安全級別高于所述第二安全級別。
19.根據權利要求18所述的計算系統,其中,在所述第二安全域中運行的應用在沒有觸發由所述錯誤處理器檢測到的陷阱的情況下不能修改在所述第一安全域中的存儲器。
20.根據權利要求18所述的計算系統,其中,在所述第二安全域中運行的客戶OS內核代碼在沒有觸發由所述錯誤處理器檢測到的陷阱的情況下不能修改在所述第一安全域中的存儲器。
21.根據權利要求17所述的計算系統,還包括執行所述AV應用來掃描在所述計算系統中的惡意軟件。
22.根據權利要求21所述的計算系統,其中,所述錯誤處理器驗證來自所述AV應用的消息來源于已鎖定的客戶OS存儲器。
23. 根據權利要求1所述的計算系統,還包括在所述客戶OS中用于實例化虛擬機的虛擬機管理器(VMM),其中,所述AV應用在所述虛擬機中執行。
24. 根據權利要求1所述的計算系統,其中`,所述執行容器包括受保護的執行環境。
全文摘要
一種防病毒(AV)應用,其指定錯誤處理器代碼鏡像、錯誤處理器清單、AV應用的存儲器位置,和AV應用清單。加載器驗證錯誤處理器代碼鏡像和錯誤處理器清單,創建具有第一安全級別的第一安全域,將錯誤處理器代碼鏡像拷貝到與第一安全域相關聯的存儲器,并且啟動錯誤處理器的執行。加載器請求鎖定在客戶操作系統中為AV應用保留的存儲頁面。通過在客戶操作系統存儲器中所選代碼片段上設置陷阱,錯誤處理器鎖定加載到客戶操作系統存儲器中的AV應用的可執行代碼鏡像。
文檔編號G06F21/53GK103119601SQ201180044799
公開日2013年5月22日 申請日期2011年7月25日 優先權日2010年8月18日
發明者N·M·史密斯, G·D·丹內爾斯, V·尚博格, S·蘇古馬爾 申請人:英特爾公司