專(zhuān)利名稱(chēng):用于將軟件組件列入白名單的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于將軟件組件列入白名單的方法和系統(tǒng)。
背景技術(shù):
根工具包(root-kit)和惡意軟件可避開(kāi)在軟件平臺(tái)上進(jìn)行操作 的安全軟件的檢測(cè)。 一旦被建立,根工具包可觀測(cè)用戶活動(dòng),屏蔽用 戶動(dòng)作,并執(zhí)行其它惡意或非期望的活動(dòng)。測(cè)量個(gè)別軟件實(shí)體可針對(duì) 那個(gè)軟件實(shí)體的完整性和存在校驗(yàn),但是不可給出該軟件實(shí)體未被屏 蔽的保證。
發(fā)明內(nèi)容
本發(fā)明提供一種方法,包括運(yùn)行在第一操作環(huán)境中加載的第一 軟件組件;收集所述第 一操作環(huán)境中與所述第 一軟件組件有關(guān)的運(yùn)行 時(shí)信息;將所收集的運(yùn)行時(shí)信息傳遞給第二操作環(huán)境中的第二軟件組 件,所述第二操作環(huán)境與所述第一操作環(huán)境分離;將所述所收集的運(yùn) 行時(shí)信息與有關(guān)所述第一軟件組件的已驗(yàn)證信息集進(jìn)行比較;以及如 果所述所收集的運(yùn)行時(shí)信息不匹配所述已驗(yàn)證信息集,則發(fā)送告警。
本發(fā)明還提供一種系統(tǒng),包括在第一操作環(huán)境中運(yùn)行的第一軟 件組件;在所述第一操作環(huán)境中運(yùn)行的第二軟件組件,收集與所述第 一軟件組件有關(guān)的運(yùn)行時(shí)信息,并傳遞所收集的運(yùn)行時(shí)信息;以及在 第二操作環(huán)境中運(yùn)行的第三軟件組件,所述第二操作環(huán)境與所述第一 操作環(huán)境分離,所述第三組件接收所述所收集的運(yùn)行時(shí)信息,并將所 述所收集的運(yùn)行時(shí)信息與有關(guān)所述第 一軟件組件的已驗(yàn)證信息集進(jìn) 行比較。
在本說(shuō)明書(shū)的結(jié)束部分特別指出作為本發(fā)明的主題并清楚地要 求其權(quán)利。但是,通過(guò)結(jié)合附圖參照以下詳細(xì)描述,可透徹地了解關(guān)
于本發(fā)明的操作的組織和方法及其目的、特征、優(yōu)點(diǎn),附圖包括 圖l是根據(jù)本發(fā)明的實(shí)施例的計(jì)算平臺(tái)的示意圖示。 圖2是根據(jù)本發(fā)明的實(shí)施例的計(jì)算平臺(tái)上的白名單架構(gòu)的代表圖示。
圖3是根據(jù)本發(fā)明的實(shí)施例、通過(guò)白名單服務(wù)所捕獲的樣本組件 映像的數(shù)據(jù)結(jié)構(gòu)的代表圖示。
圖4是根據(jù)本發(fā)明的實(shí)施例、用于將軟件組件列入白名單的方法 的流程圖。
將理解,為了說(shuō)明的簡(jiǎn)潔和清楚起見(jiàn),圖中所示的元件不一定精 確地或者按比例繪制。例如,為了清楚起見(jiàn),某些元件的尺寸可能相 對(duì)于其它元件經(jīng)過(guò)放大,或者若干物理組件包含在一個(gè)功能塊或元件 中。另外,在認(rèn)為適當(dāng)?shù)那闆r下,參考標(biāo)號(hào)可在附圖中重復(fù),以便指 明對(duì)應(yīng)或相似的元件。另外,可將附圖所示的某些塊組合成單個(gè)功能。
具體實(shí)施例方式
在以下詳細(xì)描述中,闡明大量具體細(xì)節(jié),以便提供對(duì)本發(fā)明的透 徹理解。但是,本領(lǐng)域的技術(shù)人員會(huì)理解,即使沒(méi)有這些具體細(xì)節(jié)也 可實(shí)施本發(fā)明。在其它情況下,沒(méi)有詳細(xì)描述眾所周知的方法、過(guò)程、 組件、和電路,以免影響使本發(fā)明不明確。
除非明確說(shuō)明,否則從以下論述中,大家清楚地知道,在整個(gè)說(shuō) 明中,采用諸如"處理,,、"計(jì)算"、"確定"或諸如此類(lèi)的術(shù)語(yǔ)的 論述表示計(jì)算機(jī)或計(jì)算系統(tǒng)或者類(lèi)似的電子計(jì)算設(shè)備的動(dòng)作和/或過(guò) 程,其設(shè)備操縱表示為計(jì)算系統(tǒng)的寄存器和/或存儲(chǔ)器中的例如電的 物理量的數(shù)據(jù)和/或?qū)⑵滢D(zhuǎn)換為類(lèi)似地表示為計(jì)算系統(tǒng)的存儲(chǔ)器、寄存器或者其它這種信息存儲(chǔ)設(shè)備、傳送或顯示設(shè)備中的物理量的其它 數(shù)據(jù)。另外,術(shù)語(yǔ)"多個(gè)"可在整個(gè)說(shuō)明中用來(lái)描述兩個(gè)或更多組件、 設(shè)備、元件、參數(shù)和諸如此類(lèi)。
本文所使用的術(shù)語(yǔ)"組件"可指可用于獲得預(yù)期結(jié)果的編程邏輯 及關(guān)聯(lián)數(shù)據(jù)。術(shù)語(yǔ)"組件"可與"模塊"或"代理"同義,并且可指
可通過(guò)^/f?;蚬碳?、或者通過(guò)可能具有入口和出口點(diǎn)、以例如c+十、
Intel架構(gòu)64位(IA-64)可執(zhí)行代碼等編程語(yǔ)言編寫(xiě)的軟件指令的集 合來(lái)體現(xiàn)的編程邏輯。此外,組件可以是從其它組件或者從其本身可 調(diào)用的,和/或可響應(yīng)4企測(cè)事件或中斷而被調(diào)用。例如,組件可以是 由一個(gè)或多個(gè)處理器運(yùn)行的軟件包、模塊或代理。
本發(fā)明的實(shí)施例可提供用于將操作系統(tǒng)環(huán)境中的軟件組件列入 白名單的方法和系統(tǒng)。在一個(gè)實(shí)施例中,在第一操作環(huán)境下,可收集 與第一加栽和運(yùn)行軟件組件有關(guān)的運(yùn)行時(shí)信息??蓪⑺占男畔?遞給在與第 一操作環(huán)境分離的第二操作環(huán)境中進(jìn)行操作的第二軟件 組件。所收集的運(yùn)行時(shí)信息可與有關(guān)第一軟件組件的已驗(yàn)證信息集進(jìn) 行比較。
現(xiàn)在參照?qǐng)D1的根據(jù)本發(fā)明的實(shí)施例、能夠?qū)崿F(xiàn)或運(yùn)行白名單操 作軟件組件的計(jì)算平臺(tái)IOO的示意圖示。在一些實(shí)施例中,計(jì)算平臺(tái) IOO可包括或者可以是例如個(gè)人計(jì)算機(jī)(PC)、臺(tái)式計(jì)算機(jī)、移動(dòng)計(jì)算 機(jī)、膝上型計(jì)算機(jī)、筆記本電腦、終端、工作站、服務(wù)器計(jì)算機(jī)、個(gè) 人數(shù)字助理(PDA)設(shè)備、網(wǎng)絡(luò)設(shè)備或者能夠容納運(yùn)行環(huán)境104的其它 適當(dāng)?shù)挠?jì)算設(shè)備。
雖然本發(fā)明并不局限于這個(gè)方面,但是,計(jì)算平臺(tái)IOO可包括例 如運(yùn)行環(huán)境104、管理模塊116和平臺(tái)硬件118,平臺(tái)硬件118可包 括例如處理器120、網(wǎng)絡(luò)接口控制器(NIC)124、存儲(chǔ)設(shè)備128和/或 存儲(chǔ)器132。計(jì)算平臺(tái)100還可與網(wǎng)絡(luò)140連接,以便與外部計(jì)算平 臺(tái)和其它設(shè)備進(jìn)行通信。網(wǎng)絡(luò)140可以是局域網(wǎng)(LAN)、城域網(wǎng)(MAN)、 廣域網(wǎng)(WAN)或者具有兩個(gè)或更多網(wǎng)絡(luò)節(jié)點(diǎn)之間的通信鏈路的其它相似網(wǎng)絡(luò)。
在一些實(shí)施例中,運(yùn)行環(huán)境104可容納運(yùn)行操作系統(tǒng)(0S)108。 OS 108可以是配置成運(yùn)行和控制運(yùn)行環(huán)境104中的例如軟件組件112 的其它組件的一般操作的軟件組件。在一些情況下,運(yùn)行環(huán)境104可 提供其中組件可進(jìn)行操作的虛擬運(yùn)行環(huán)境。備選地,運(yùn)行環(huán)境104可 以是非虛擬的。
在一些實(shí)施例中,軟件組件112可以是特權(quán)級(jí)組件,例如內(nèi)核組 件。內(nèi)核組件可以是或者包括例如加載器、調(diào)度器、存儲(chǔ)管理器等的 服務(wù);例如網(wǎng)卡、通用串行總線(USB)接口、磁盤(pán)驅(qū)動(dòng)器等的擴(kuò)展/ 驅(qū)動(dòng);或者例如監(jiān)測(cè)代碼運(yùn)行的入侵檢測(cè)器的服務(wù)-驅(qū)動(dòng)的混合體。
管理^t塊116可仲裁對(duì)于例如一個(gè)或多個(gè)處理器120、 NIC 124、 存儲(chǔ)設(shè)備128和/或存儲(chǔ)器132等的硬件或其它資源的一般組件訪問(wèn)。 在一些實(shí)施例中,管理模塊116的功能可按照OS 108是否虛擬化而 改變。
處理器120可以是或者包括例如中央處理器(CPU)、數(shù)字信號(hào)處 理器(DSP)、微處理器、控制器、芯片、微芯片或者任何適當(dāng)?shù)耐ㄓ?或?qū)S锰幚砥骰蚩刂破鳌T谝恍?shí)施例中,例如,處理器120可運(yùn)行 編程指令或者執(zhí)行可用于計(jì)算平臺(tái)100上的組件的操作的計(jì)算操作。
存儲(chǔ)設(shè)備128可包括集成和/或外圍存儲(chǔ)設(shè)備,例如磁盤(pán)及關(guān)聯(lián) 驅(qū)動(dòng)器、USB存儲(chǔ)設(shè)備、閃速存儲(chǔ)器、只讀存儲(chǔ)器(ROM)、非易失性 半導(dǎo)體設(shè)備或者存儲(chǔ)將用于平臺(tái)100上的組件的運(yùn)行的固有內(nèi)容的 其它適當(dāng)?shù)拇鎯?chǔ)設(shè)備。在一些實(shí)施例中,存儲(chǔ)設(shè)備128可以是物理上 作為平臺(tái)IOO的組成部分的存儲(chǔ)資源,或者可以是平臺(tái)IOO可訪問(wèn)的 但必須是平臺(tái)IOO的組成部分。例如,存儲(chǔ)設(shè)備128可由平臺(tái)100通 過(guò)網(wǎng)絡(luò)140、經(jīng)由網(wǎng)絡(luò)控制器124進(jìn)^f亍訪問(wèn)。
存儲(chǔ)器132可包括例如一個(gè)或多個(gè)存儲(chǔ)器,諸如隨機(jī)存取存儲(chǔ)器 (RAM)、 ROM、動(dòng)態(tài)RAM (DRAM)、同步DRAM (SDRAM)、閃速存儲(chǔ)器、易 失性存儲(chǔ)器、非易失性存儲(chǔ)器、緩沖存儲(chǔ)器、緩沖區(qū)、短期存儲(chǔ)器單元、長(zhǎng)期存儲(chǔ)器單元或者用于存儲(chǔ)例如OS 108和/或軟件組件112等 的數(shù)據(jù)和/或組件的其它適當(dāng)存儲(chǔ)器單元。在一些實(shí)施例中,存儲(chǔ)器 132可將其中存儲(chǔ)的內(nèi)容組織進(jìn)入多組存儲(chǔ)位置。如果OS 108經(jīng)過(guò) 虛擬化,則可以是固定和/或可變大小的這些所組織的組可有助于虛 擬存儲(chǔ)器管理。備選地,如果0S 108未虛擬化,則存儲(chǔ)器132可具 有不同的組織結(jié)構(gòu)。
現(xiàn)在參照?qǐng)D2,它示出根據(jù)本發(fā)明的實(shí)施例的計(jì)算平臺(tái)200上的 白名單架構(gòu)。本文所使用的"列入白名單"例如可表示4企驗(yàn)軟件元件 (例如一段代碼、組件、模塊、代理、腳本等)例如避開(kāi)惡意軟件或其 它破壞的安全運(yùn)行或使用的過(guò)程。在一些實(shí)施例中,計(jì)算平臺(tái)200可 與平臺(tái)100相似并且基本上是可互換的。此外,以下描述的元件可與 上述相似命名的元件類(lèi)似并且基本上是可互換的,反過(guò)來(lái)也是一樣。
計(jì)算平臺(tái)200可包括用于管理操作環(huán)境206、平臺(tái)硬件208和二 進(jìn)制映像存儲(chǔ)設(shè)備210的管理模塊204。管理模塊204或者管理模塊 204的部分可獨(dú)立于操作環(huán)境206而運(yùn)行,可獨(dú)立于操作環(huán)境206運(yùn) 行代碼,并且可與操作環(huán)境206安全地分離。在一些實(shí)施例中,管理 模塊204可向操作運(yùn)行環(huán)境206提供或者表示平臺(tái)硬件208的多個(gè)抽 象和/或視圖,例如一個(gè)或多個(gè)處理器220、 NIC 224、存儲(chǔ)設(shè)備228 和/或存儲(chǔ)器232,這是已知的。此外,在一些實(shí)施例中,管理模塊 204可包括操作運(yùn)行環(huán)境,它能運(yùn)行例如固件中的指令,并且可以是 例如管理引擎。在這些情況下,操作環(huán)境206可以是例如原始的、常 規(guī)的或遺留的、如未虛擬化的OS環(huán)境。備選地,管理模塊204可以 是虛擬機(jī)監(jiān)測(cè)器(VMM),并且操作環(huán)境206可以是例如虛擬機(jī)(VM)或 客戶OS。在這些情況下,管理模塊204可管理對(duì)硬件208的VM訪問(wèn)。 管理模塊204可在軟件(例如作為由一個(gè)或多個(gè)控制器或處理器運(yùn)行 的單機(jī)程序和/或主機(jī)操作系統(tǒng)的組件)、硬件、固件和/或它們的任 何組合中來(lái)實(shí)現(xiàn)。
管理模塊204可包括用于檢驗(yàn)在操作環(huán)境206中進(jìn)行操作的組件的完整性或者驗(yàn)證其特征的測(cè)量管理器(IMM) 212。為了枱r驗(yàn)操作組件 的完整性,I醒212可將例如組件214的加載和例如授權(quán)的預(yù)期的服 務(wù)與例如可在例如二進(jìn)制映像存儲(chǔ)設(shè)備210中的盤(pán)上(on-disk)存 儲(chǔ)的操作組件的記錄的映像進(jìn)行比較。存儲(chǔ)映像可包含與組件有關(guān)的 信息,包括例如代碼、數(shù)據(jù)段、外部符號(hào)表和重定位信息。還可包含 與組件有關(guān)的其它信息。IMM 212可從二進(jìn)制映像存儲(chǔ)設(shè)備210所存 儲(chǔ)的映像中生成或提取關(guān)于服務(wù)的完整性證明。完整性證明可以是例 如關(guān)于在運(yùn)行時(shí)(例如在運(yùn)行期間)組件的有效或合法版本應(yīng)當(dāng)如何 在存儲(chǔ)器中出現(xiàn)的概述或列表。在一些實(shí)施例中,完整性證明可在生 成期間被簽署(sign)以免任何篡改或未經(jīng)授權(quán)的修改,并且由此可 包括關(guān)于服務(wù)的已驗(yàn)證信息集,例如代碼和數(shù)據(jù)段信息、重定位信息、 符號(hào)表信息以及檢驗(yàn)證明本身的完整性的其它信息。可依靠這個(gè)完整 性證明來(lái)驗(yàn)證組件214在存儲(chǔ)器(如存儲(chǔ)器232 )中的映像。
在操作環(huán)境206被虛擬化的一些實(shí)施例中,虛擬化技術(shù)完整性服 務(wù)(VTIS)組件(未示出)還可存在于管理模塊204中。VTIS組件可保 護(hù)管理模塊204中的存儲(chǔ)器中包含作為操作環(huán)境206的如組件214的 當(dāng)前運(yùn)行組件的組成部分的完整性檢驗(yàn)代碼或數(shù)據(jù)的頁(yè)面。為了使保 護(hù)數(shù)據(jù)與操作環(huán)境206分離,VTIS組件可具有對(duì)完整性檢驗(yàn)代碼或 數(shù)據(jù)的獨(dú)占訪問(wèn)權(quán)。在一些實(shí)施例中,在操作環(huán)境206中運(yùn)行的組件 或模塊可以能夠在加載或者其它這種事件時(shí)由VTIS組件登記,例如 進(jìn)行完整性檢驗(yàn)。
在操作環(huán)境206被虛擬化的情況下,I腦212可在例如管理模塊 204的VMM中運(yùn)行。備選地,IMM212可在操作環(huán)境206中運(yùn)行。對(duì)于 其中IMM 212在操作環(huán)境206中運(yùn)行的情況,I醒212可由管理模塊 204保護(hù),以確保兩個(gè)或更多操作環(huán)境206所使用的物理地址空間沒(méi) 有重疊。此外,IMM 212還可在啟動(dòng)時(shí)向管理模塊204的VTIS組件 登記,并且可由VTIS組件進(jìn)行驗(yàn)證。
在操作環(huán)境206未虛擬化的情況下,I醒212可在作為管理引擎的組成部分的固件中來(lái)實(shí)現(xiàn)。
操作環(huán)境206可包括在操作環(huán)境206中運(yùn)行的一個(gè)或多個(gè)組件, 例如組件214、內(nèi)核目錄服務(wù)(KDS)216和白名單管理器(WLM)218。還 可包括其它組件。組件214可以是或者包括在操作環(huán)境206中運(yùn)行的 任何軟件組件,例如內(nèi)核服務(wù)、模塊或驅(qū)動(dòng)。例如根工具包等惡意軟 件可滲入操作環(huán)境206,并且例如可修改組件214,使組件214的正 確運(yùn)行轉(zhuǎn)向(例如設(shè)置鉤子程序(hook)),或者甚至嘗試作為操作 環(huán)境206的有效組件進(jìn)行操作。通過(guò)對(duì)操作環(huán)境206的已知組件驗(yàn)證、 校驗(yàn)或列入白名單,并驗(yàn)證這些組件之間以及與計(jì)算平臺(tái)206上的其 它實(shí)體之間的交互,本發(fā)明的實(shí)施例可保護(hù)如計(jì)算平臺(tái)200的計(jì)算平
KDS 216可以是或者包括組件、例如在虛擬才幾的客戶OS或0S中 運(yùn)行的代理或服務(wù),并且可以能夠列出當(dāng)前在操作環(huán)境206中運(yùn)行的 組件或服務(wù)、如組件214。在一些實(shí)施例中,KDS 216例如可作為環(huán) 路-0 (ring-0)服務(wù)來(lái)運(yùn)行。
WLM218可以是或者包括在虛擬4幾的客戶0S或0S中運(yùn)行的組件, 它能夠收集與單個(gè)OS服務(wù)或代理(如組件214 )對(duì)其它OS服務(wù)或代 理進(jìn)行的外部引用有關(guān)的所有信息。在一些實(shí)施例中,WLM218和IMM 212可組合成單個(gè)模塊,但是可使用其它功能組件。收集與單個(gè)OS 服務(wù)或代理進(jìn)行的外部引用有關(guān)的所有信息在本文中又可稱(chēng)作捕獲 組件的映像。WLM 218可通過(guò)參考二進(jìn)制映像存儲(chǔ)設(shè)備210中存儲(chǔ)的 組件214的映像的導(dǎo)入表結(jié)構(gòu),來(lái)確定要收集什么信息。導(dǎo)入表結(jié)構(gòu) 可以是或者包括例如由組件導(dǎo)出的到入口點(diǎn)的導(dǎo)入函數(shù)地址的列表。 WLM 218還可引用其它存儲(chǔ)映像數(shù)據(jù)。
為了確定哪些組件可在操作環(huán)境206中運(yùn)行,WLM 218可經(jīng)由緩 沖區(qū)或共享存儲(chǔ)器與KDS 216進(jìn)行通信。共享存儲(chǔ)器可以是管理模塊 204中的存儲(chǔ)空間。對(duì)于其中操作環(huán)境206被虛擬化(如VM)的實(shí)施 例,共享存儲(chǔ)器可由VTIS組件來(lái)緩沖和保護(hù)。對(duì)于其中操作環(huán)境沒(méi)有虛擬化的實(shí)施例,共享存儲(chǔ)器可被緩沖,并且是經(jīng)由例如主機(jī)嵌入
式控制器接口 (HECI)或者管理引擎的其它接口等硬件接口可訪問(wèn)的, 這是已知的。
現(xiàn)在參照?qǐng)D3,它示出可由WLM 218捕獲的示例組件映像的數(shù)據(jù)
結(jié)構(gòu)300的代表圖示。圖3示出可捕獲的組件312的列表310。本文
所使用的組件312可以與圖2的組件214相同或者基本上相似。對(duì)于
各組件312,列表310可包含其中包括例如組件名稱(chēng)、存儲(chǔ)器中的基
址、完整性證明名稱(chēng)、導(dǎo)入列表322和導(dǎo)出列表332 (如導(dǎo)出哈希表)
的信息。還可包含與組件312有關(guān)的其它信息。導(dǎo)入列表322可以是
或者包括例如地址、引用或者指向組件312所使用的地址的指針的列
表。還可包含其它信息。導(dǎo)出列表332可以是或者包括例如地址、引
用或者指向組件312所使用的地址的指針的列表。還可包含其它信 自
使用KDS 216提供的信息,WLM 218和IMM 212可結(jié)合操作以便 通過(guò)將組件的記錄的映像及對(duì)應(yīng)數(shù)據(jù)與從先前存儲(chǔ)的引用提取的證 明比較,來(lái)檢驗(yàn)一個(gè)或多個(gè)操作組件214的完整性。在一些實(shí)施例中, 在KDS 216和WLM 218的登記和/或檢驗(yàn)之后,抬、驗(yàn)可包括例如三個(gè) 階段。在第一階段,組件214的代碼和數(shù)據(jù)段可與完整性證明進(jìn)行比 較,并且可存儲(chǔ)導(dǎo)入和導(dǎo)出指針地址上的狀態(tài)數(shù)據(jù)。在第二階段,這 個(gè)已存儲(chǔ)狀態(tài)數(shù)據(jù)可與完整性證明中的導(dǎo)入和導(dǎo)出指針進(jìn)行比較。如 果組件通過(guò)了第二階段,則組件的中斷處理程序可與也通過(guò)了檢驗(yàn)的 第二階段的其它組件或模塊的位置進(jìn)行比較。如果檢驗(yàn)的全部三個(gè)階 段都成功,則可檢驗(yàn)組件的完整性。如果不成功,則可將告警發(fā)送給 例如遠(yuǎn)程IT控制臺(tái)。
現(xiàn)在參照?qǐng)D4,它示出根據(jù)本發(fā)明的實(shí)施例,用于對(duì)例如組件214 或者其它此類(lèi)組件或模塊的軟件組件進(jìn)行驗(yàn)證、校驗(yàn)或列入白名單的 方法的流程圖。該方法的實(shí)施例可由例如圖l的計(jì)算平臺(tái)100或者能 夠容納運(yùn)行環(huán)境104的其它適當(dāng)?shù)挠?jì)算設(shè)備來(lái)使用或者實(shí)現(xiàn)。該方法的實(shí)施例還可使用圖2的白名單架構(gòu)以及圖3的通過(guò)白名單服務(wù)所捕 獲的組件的映像的數(shù)據(jù)結(jié)構(gòu)或其它適當(dāng)數(shù)據(jù)結(jié)構(gòu)。
如操作402所示,如I函212的I固可開(kāi)始運(yùn)行。在一些實(shí)施例 中,如管理模塊204的管理模塊也可正在操作。對(duì)于其中管理模塊 204是V鹿的情況,I固212可從管理模塊204中進(jìn)行操作并由管理 模塊204進(jìn)行保護(hù)。備選地,IMM212可作為客戶OS (例如操作環(huán)境 206 )的組成部分進(jìn)行操作,并且可向管理模塊204的VTIS組件登記 以便在加載時(shí)進(jìn)行保護(hù)。對(duì)于其中管理模塊不是V醒的情況,IMM 216 可存在于芯片組的管理模塊固件中,并且可執(zhí)行屬于如KDS 216的 KDS的所有功能。
在操作404, KDS和菌(如KDS 216和WLM 218 )可向I薩212 登記。在操作406,WLM 218可建立共享存儲(chǔ)器通信信道以便與KDS 216 進(jìn)行通信。共享存儲(chǔ)器信道可取決于操作環(huán)境206是否虛擬化。對(duì)于 其中操作環(huán)境206被虛擬化的情況,共享存儲(chǔ)器可以是如管理模塊 204的V醒中的VTIS保護(hù)位置。對(duì)于其它實(shí)施例,共享存儲(chǔ)器可以 是經(jīng)由例如HECI接口可訪問(wèn)的,并且可被緩沖。也可使用被保護(hù)而 不由操作環(huán)境206中運(yùn)行的組件使用的其它共享存儲(chǔ)器信道。
KDS 216可使用共享存儲(chǔ)器信道向WLM 218傳遞運(yùn)行時(shí)信息,例 如與諸如模塊、內(nèi)核服務(wù)或代理之類(lèi)的當(dāng)前在操作環(huán)境206中運(yùn)行的
一個(gè)或多個(gè)組件有關(guān)的虛擬基址(操作408)。還可包含其它運(yùn)行時(shí)信 臺(tái)
一旦WLM 218具有所有模塊的列表,則在操作410,它可收集與 這些模塊的一個(gè)或多個(gè)有關(guān)的運(yùn)行時(shí)信息和/或記錄這些模塊的一個(gè) 或多個(gè)的映像如操作快照的映像,以便進(jìn)行檢驗(yàn)。記錄的映像可包括 代碼和數(shù)據(jù)段、外部符號(hào)表和重定位信息以及其它適當(dāng)?shù)臄?shù)據(jù)。在一 些實(shí)施例中,數(shù)據(jù)可包括例如導(dǎo)入列表322的導(dǎo)入列表以及例如導(dǎo)出 哈希表332的導(dǎo)出表。還可包含其它信息。在一些實(shí)施例中,通過(guò)從 例如二進(jìn)制映像存儲(chǔ)設(shè)備(如二進(jìn)制映像存儲(chǔ)設(shè)備210)所存儲(chǔ)的二進(jìn)制文件中加載模塊的盤(pán)上映像,WLM 218可確定應(yīng)當(dāng)記錄哪些引用。 也可使用用于盤(pán)上映像的其它存儲(chǔ)設(shè)備。例如,映像可存儲(chǔ)在通過(guò)如 網(wǎng)絡(luò)140的網(wǎng)絡(luò)與計(jì)算平臺(tái)100連接的其它存儲(chǔ)設(shè)備或者外部硬盤(pán)驅(qū) 動(dòng)器上。
在操作412, WLM 218可調(diào)用IMM 216來(lái)檢驗(yàn)?zāi)K的代碼和靜態(tài) 數(shù)據(jù)段的完整性。在一些實(shí)施例中,I醒216可使用二進(jìn)制映像存儲(chǔ) 設(shè)備210中存儲(chǔ)的模塊的盤(pán)上映像來(lái)創(chuàng)建被檢驗(yàn)?zāi)K的完整性證明。 備選地,完整性證明可存儲(chǔ)在例如網(wǎng)絡(luò)140上的另一個(gè)位置、如服務(wù) 器上。I固216可使用這個(gè)證明來(lái)與操作410中所記錄的模塊的映像 或所收集的運(yùn)行時(shí)信息進(jìn)行比較以便進(jìn)行檢驗(yàn)。作為操作412的一部 分,IMM 216還可檢驗(yàn)?zāi)K的依賴(lài)模塊(例如其它模塊)的代碼和數(shù) 據(jù)段。可存儲(chǔ)導(dǎo)入地址表(IAT)和導(dǎo)出表(ET)中的條目的測(cè)量值以便 用于其它操作。
如果所有測(cè)試段成功地通過(guò)了這個(gè)初始完整性測(cè)試(操作414), 則該方法可繼續(xù)進(jìn)行第二檢驗(yàn)操作。在操作416, I畫(huà)216可檢驗(yàn)?zāi)?塊與其依賴(lài)模塊之間的鏈接(如函數(shù)指針)是否有效。在一些實(shí)施例 中,I畫(huà)216可將操作410中所收集的ET和IAT條目值與來(lái)自證明 和其它數(shù)據(jù)的導(dǎo)入查詢表(ILT)進(jìn)行比較。通過(guò)獲得導(dǎo)入或?qū)С鰲l目 的地址,并枱、瞼所計(jì)算的運(yùn)行時(shí)地址(如基址加上相對(duì)虛擬地址 (RVA))落入械j企—瞼模塊的線性地址空間,可確定這些導(dǎo)出和導(dǎo)入值, 如偏移值??杀容^ILT中的所有條目及其對(duì)應(yīng)的ET條目。也可執(zhí)行 確定IAT中的條目是否匹配從ILT所計(jì)算的運(yùn)行時(shí)地址的校驗(yàn)。這個(gè) 檢驗(yàn)操作可幫助確保該組件未被根工具包設(shè)置鉤子程序。
如果操作416的檢驗(yàn)成功(操作418),則可執(zhí)行第三檢驗(yàn)、即操 作420。在操作420中,中斷處理程序條目(如指針)可與操作416
中所計(jì)算的代碼的檢驗(yàn)段(如檢驗(yàn)?zāi)K或組件)的存儲(chǔ)位置進(jìn)行比較, 以便檢驗(yàn)其有效性。I腦216可從中斷描述符表(IDT)中讀取條目, 中斷描述符表(IDT)可以是作為操作環(huán)境206的組成部分的數(shù)據(jù)結(jié)構(gòu),并且可由被檢驗(yàn)?zāi)K用于存儲(chǔ)運(yùn)行被檢測(cè)模塊期間可能發(fā)生中斷
或異常時(shí)所需的指針。IDT條目可指向操作環(huán)境206中可在中斷期間 被調(diào)用的一個(gè)或多個(gè)其它加載模塊或其它運(yùn)行組件。在一些實(shí)施例 中,在操作環(huán)境206中運(yùn)行的部分或全部模塊可由例如在操作420之 前操作416的操作進(jìn)行檢驗(yàn)。在這些情況下,指向已經(jīng)通過(guò)操作416 所檢驗(yàn)的模塊的IDT指針可認(rèn)為是有效指針。
如果檢驗(yàn)了所有模塊中斷處理程序(操作422),則模塊可被認(rèn)為 已經(jīng)通過(guò)了完整性檢驗(yàn)測(cè)試(操作424)。但是,如果在操作414、 418 和422的一個(gè)或多個(gè),模塊沒(méi)有分別通過(guò)操作412、 416和420的檢 驗(yàn)測(cè)試,則模塊完整性可能被損害(操作426),例如根工具包或其它 惡意軟件可能正影響操作環(huán)境206中的正確操作。在這些情況下,可 發(fā)送告警,或者可采取其它適當(dāng)?shù)捻憫?yīng)動(dòng)作。
操作406-426可對(duì)于在操作環(huán)境206中進(jìn)行操作的各組件或模塊 重復(fù)進(jìn)行,以便確保操作環(huán)境206的安全性是完整的。對(duì)于隨后可能 加載的其它組件,可在加載或其它此類(lèi)事件時(shí)對(duì)于新組件或所有組件 來(lái)運(yùn)行這些操作。此外,還可響應(yīng)例如系統(tǒng)重新引導(dǎo)、IDT的變化等 的其它觸發(fā)事件而重復(fù)進(jìn)行操作406-426。
可使用其它操作或者操作序列。此外,可使用其它數(shù)量或類(lèi)型的 完整性或檢驗(yàn)校驗(yàn)。
雖然針對(duì)有限數(shù)量的實(shí)施例描述了本發(fā)明,但是將理解,可對(duì)本 發(fā)明進(jìn)行許多改變、修改和其它應(yīng)用。本發(fā)明的實(shí)施例可包括計(jì)算機(jī) 可讀介質(zhì),例如存儲(chǔ)器、^磁盤(pán)驅(qū)動(dòng)器或USB或者其它閃速存儲(chǔ)器,其 中包含在由處理器或控制器運(yùn)行時(shí)執(zhí)行本文公開(kāi)的方法的指令。本發(fā) 明的實(shí)施例還可包括用于執(zhí)行本文的搡作的其它系統(tǒng)。這類(lèi)系統(tǒng)可集 成所述的元件,或者可包括實(shí)現(xiàn)相同目標(biāo)的備選組件。本領(lǐng)域的技術(shù) 人員會(huì)理解,所附權(quán)利要求旨在涵蓋屬于本發(fā)明的實(shí)質(zhì)的所有這類(lèi)修 改和變更。
權(quán)利要求
1. 一種方法,包括運(yùn)行在第一操作環(huán)境中加載的第一軟件組件;收集所述第一操作環(huán)境中與所述第一軟件組件有關(guān)的運(yùn)行時(shí)信息;將所收集的運(yùn)行時(shí)信息傳遞給第二操作環(huán)境中的第二軟件組件,所述第二操作環(huán)境與所述第一操作環(huán)境分離;將所述所收集的運(yùn)行時(shí)信息與有關(guān)所述第一軟件組件的已驗(yàn)證信息集進(jìn)行比較;以及如果所述所收集的運(yùn)行時(shí)信息不匹配所述已驗(yàn)證信息集,則發(fā)送告警。
2. 如權(quán)利要求1所述的方法,其中,所述所收集的信息包括以 下一個(gè)或多個(gè)代碼、數(shù)據(jù)、外部符號(hào)表和重定位信息。
3. 如權(quán)利要求2所述的方法,包括存儲(chǔ)關(guān)于所述第一軟件組件的導(dǎo)入地址表和導(dǎo)出指針的狀態(tài)數(shù) 據(jù)集;以及將所述狀態(tài)數(shù)據(jù)與有關(guān)所述第 一軟件組件的已驗(yàn)證信息集進(jìn)行 比較。
4. 如權(quán)利要求3所述的方法,包括 從存儲(chǔ)設(shè)備中讀取已驗(yàn)證中斷處理程序條目集; 檢驗(yàn)所記錄的中斷處理程序條目集指向已驗(yàn)證的導(dǎo)入和導(dǎo)出偏移。
5. 如權(quán)利要求1所述的方法,包括檢驗(yàn)所述第一軟件組件的 一個(gè)或多個(gè)依賴(lài)軟件組件。
6. 如權(quán)利要求1所述的方法,其中,所述第一操作環(huán)境被虛擬 化,并且所迷第二操作環(huán)境是虛擬機(jī)管理器。
7. 如權(quán)利要求1所述的方法,其中,所述第一操作環(huán)境是未虛擬化的操作系統(tǒng)。
8. 如權(quán)利要求1所述的方法,其中,傳遞所述所收集的運(yùn)行時(shí) 信息包括經(jīng)由所述第二操作環(huán)境中的共享存儲(chǔ)器來(lái)傳遞所述所收集 的運(yùn)行時(shí)信息。
9. 一種系統(tǒng),包括在第 一操作環(huán)境中運(yùn)行的第 一軟件組件;在所述第 一操作環(huán)境中運(yùn)行的第二軟件組件,收集與所述第 一軟 件組件有關(guān)的運(yùn)行時(shí)信息,并傳遞所收集的運(yùn)行時(shí)信息;以及在第二操作環(huán)境中運(yùn)行的第三軟件組件,所述第二操作環(huán)境與所述第一操作環(huán)境分離,所述第三組件接收所述所收集的運(yùn)行時(shí)信息,并將所述所收集的運(yùn)行時(shí)信息與有關(guān)所述第一軟件組件的已驗(yàn)證信息集進(jìn)行比較。
10. 如權(quán)利要求9所述的系統(tǒng),其中,所述所收集的信息包括以 下一個(gè)或多個(gè)代碼、數(shù)據(jù)、外部符號(hào)表和重定位信息。
11. 如權(quán)利要求10所述的系統(tǒng),其中所述第二軟件組件存儲(chǔ)關(guān)于所述第一軟件組件的導(dǎo)入地址表和 導(dǎo)出指針的狀態(tài)數(shù)據(jù)集;以及所述第三軟件組件將所述狀態(tài)數(shù)據(jù)與有關(guān)所述第一軟件組件的 已驗(yàn)證信息集進(jìn)行比較。
12. 如權(quán)利要求11所述的系統(tǒng),其中所述第三軟件組件從存儲(chǔ)設(shè)備中讀取已驗(yàn)證中斷處理程序條目 集;以及檢驗(yàn)所記錄的中斷處理程序條目集指向已驗(yàn)證的導(dǎo)入和導(dǎo)出 偏移。
13. 如權(quán)利要求9所述的系統(tǒng),其中所述第三軟件組件檢驗(yàn)所述第 一軟件組件的一個(gè)或多個(gè)依賴(lài)軟 件組件。
14. 如權(quán)利要求9所述的系統(tǒng),其中,所述第一操作環(huán)境被虛擬
15.如權(quán)利要求9所述的系統(tǒng),其中,所述第一軟件組件經(jīng)由所 述第二操作環(huán)境中的共享存儲(chǔ)器來(lái)傳遞所述所收集的運(yùn)行時(shí)信息。
全文摘要
公開(kāi)了用于將軟件組件列入白名單的方法和系統(tǒng)。在第一操作環(huán)境下,可收集與第一加載和運(yùn)行軟件組件有關(guān)的運(yùn)行時(shí)信息。可將所收集的信息傳遞給在與第一操作環(huán)境分離的第二操作環(huán)境中進(jìn)行操作的第二軟件組件。所收集的運(yùn)行時(shí)信息可與有關(guān)第一軟件組件的已驗(yàn)證信息集進(jìn)行比較。描述了其它實(shí)施例并要求其權(quán)利。
文檔編號(hào)G06F21/00GK101436237SQ200810173889
公開(kāi)日2009年5月20日 申請(qǐng)日期2008年11月13日 優(yōu)先權(quán)日2007年11月13日
發(fā)明者G·納加休香, H·M·克霍斯拉維, R·L·薩希塔, S·格羅韋 申請(qǐng)人:英特爾公司