特定可執(zhí)行文件(即,可執(zhí)行的計算機(jī)程序代碼)在加載到內(nèi)存108中時被分配到哪兒。對于例如基于位置無關(guān)代碼(PIC)、共享的可重新安置的庫或地址空間布局隨機(jī)化(ASLR)的操作系統(tǒng),特定可執(zhí)行文件的位置可能難以確定或可能不可預(yù)知。在這樣的情況下,內(nèi)存完整性檢查裝置102可以在活躍的媒介控制器120和/或媒介控制器122處使用與可執(zhí)行代碼的位置有關(guān)的來自O(shè)S 124的提示。因此,OS 124可以向活躍的媒介控制器120和/或媒介控制器122提供可執(zhí)行的計算機(jī)程序代碼被加載在哪兒的地址范圍?;钴S的媒介控制器120和/或媒介控制器122因此可以限制對已知包含可執(zhí)行的計算機(jī)程序代碼(S卩,無數(shù)據(jù))的范圍的掃描??蛇x地,媒介控制器120和/或媒介控制器122可以例行地掃描(例如,在后臺)內(nèi)存108,以定位未授權(quán)的簽名。由于可以在后臺實施掃描,所以該掃描可以與其它掃描功能結(jié)合。例如,該掃描可以與非易失性存儲器(NVM)情況中的磨損平衡(wear-leveling)結(jié)合,或與錯誤檢查結(jié)合。
[0031]對于內(nèi)存完整性檢查裝置102的動態(tài)內(nèi)核完整性保護(hù),可以從基線授權(quán)的(例如,好的)內(nèi)核中發(fā)展出特定內(nèi)核函數(shù)指針的列表。例如,該特定內(nèi)核函數(shù)指針的列表可以包括文件系統(tǒng)打開、讀和寫調(diào)用。內(nèi)存完整性檢查裝置102的動態(tài)內(nèi)核完整性保護(hù)還可以包括生成內(nèi)核函數(shù)指針可以合理指向(例如,指向內(nèi)核函數(shù)指針的ext3實現(xiàn))的值(例如,內(nèi)存中的地址)的授權(quán)的列表。由于內(nèi)核惡意軟件一般可能通過將內(nèi)核函數(shù)指針重定向至惡意代碼而不是合理目標(biāo)來操作,所以與內(nèi)存108中的已知的授權(quán)的內(nèi)核函數(shù)指針對應(yīng)的指針地址和授權(quán)的值136的列表可以由媒介控制器120和/或媒介控制器122接收。內(nèi)存完整性檢查裝置102可以使用媒介控制器120和/或媒介控制器122來異步地檢查:這些指針的內(nèi)存地址的內(nèi)容包含該特定指針地址的與指針地址和授權(quán)的值136的列表中的一個匹配的值。因此,OS124可以向活躍的媒介控制器120和/或媒介控制器122提供與已知的授權(quán)的安全例程對應(yīng)的函數(shù)指針的列表和物理地址值的批準(zhǔn)的列表(即,指針地址和授權(quán)的值136的列表)。內(nèi)核函數(shù)指針可以被轉(zhuǎn)換成物理地址?;钴S的媒介控制器120和/或媒介控制器122可以檢查函數(shù)指針的內(nèi)存內(nèi)容,并且可以進(jìn)一步避免在函數(shù)指針指已知的授權(quán)的函數(shù)時掃描目標(biāo)范圍。
[0032]圖2和圖3分別圖示用于實現(xiàn)內(nèi)存完整性檢查裝置102的方法200和方法300的流程圖,上面詳細(xì)描述了內(nèi)存完整性檢查裝置102的構(gòu)造。方法200和方法300可以通過示例而非通過限制在圖1的內(nèi)存完整性檢查裝置102上實現(xiàn)。方法200和方法300可以在其它裝置中實施。
[0033]參照圖2,對于方法200,在框202處,該方法可以包括:接收計算機(jī)程序代碼。例如,參照圖1,該方法可以包括接收計算機(jī)程序代碼128。
[0034]在框204處,該方法可以包括:使用加載器將計算機(jī)程序代碼加載到內(nèi)存中。例如,參照圖1,0S 124可以包括負(fù)責(zé)將計算機(jī)程序代碼128加載到內(nèi)存108中的加載器126。
[0035]在框206處,該方法可以包括:通過選擇性地實現(xiàn)同步驗證和/或異步驗證,驗證計算機(jī)程序代碼的完整性。同步驗證可以基于與計算機(jī)程序代碼的加載關(guān)聯(lián)的加載器安全特征。此外,異步驗證可以基于與包含計算機(jī)程序代碼的內(nèi)存關(guān)聯(lián)的媒介控制器。例如,參照圖1,對于同步驗證,內(nèi)存完整性檢查裝置102可以在加載器126中實現(xiàn)安全特征130,以評估計算機(jī)程序代碼128的完整性。對于異步驗證,內(nèi)存完整性檢查裝置102可以使用媒介控制器120和/或媒介控制器122來評估計算機(jī)程序代碼128的完整性。
[0036]根據(jù)示例,實現(xiàn)同步驗證可以進(jìn)一步包括:評估與計算機(jī)程序代碼128關(guān)聯(lián)的簽名。根據(jù)示例,實現(xiàn)同步驗證可以進(jìn)一步包括:計算與計算機(jī)程序代碼128關(guān)聯(lián)的哈希,以及將該哈希與授權(quán)的簽名列表132作比較。根據(jù)示例,實現(xiàn)同步驗證可以進(jìn)一步包括:計算與計算機(jī)程序代碼128關(guān)聯(lián)的哈希,以及使用所計算的哈希來更新與計算機(jī)程序代碼128關(guān)聯(lián)并且加載到內(nèi)存108中的內(nèi)存頁面的哈希。根據(jù)示例,實現(xiàn)同步驗證可以進(jìn)一步包括:向內(nèi)存控制器110發(fā)送包括所計算的哈希和內(nèi)存頁面的關(guān)聯(lián)范圍的對(S卩,{哈希,范圍}),以及指示內(nèi)存控制器110檢測與內(nèi)存頁面的關(guān)聯(lián)范圍有關(guān)的所計算的哈希的改變。根據(jù)示例,實現(xiàn)同步驗證可以進(jìn)一步包括:確定OS 124已在什么時間替換了與計算機(jī)程序代碼128關(guān)聯(lián)的安全內(nèi)存頁面,并且響應(yīng)于確定OS 124已替換了與計算機(jī)程序代碼128關(guān)聯(lián)的安全內(nèi)存頁面,指示媒介控制器(例如,媒介控制器120和/或媒介控制器122)停止檢查與已替換的安全內(nèi)存頁面關(guān)聯(lián)的內(nèi)存頁面范圍,并且去除之前的與已替換的安全內(nèi)存頁面關(guān)聯(lián)的哈希。
[0037]根據(jù)示例,媒介控制器可以包括與多個活躍的內(nèi)存控制器(例如,內(nèi)存控制器112和/或內(nèi)存控制器114)關(guān)聯(lián)的多個活躍的媒介控制器(例如,媒介控制器120和/或媒介控制器 122)。
[0038]根據(jù)示例,實現(xiàn)異步驗證可以進(jìn)一步包括:使用與內(nèi)存108關(guān)聯(lián)的媒介控制器(例如,媒介控制器120和/或媒介控制器122)來識別與計算機(jī)程序代碼128關(guān)聯(lián)的未授權(quán)的簽名。根據(jù)示例,使用與內(nèi)存108關(guān)聯(lián)的媒介控制器(例如,媒介控制器120和/或媒介控制器122)來識別與計算機(jī)程序代碼128關(guān)聯(lián)的未授權(quán)的簽名可以進(jìn)一步包括:將與計算機(jī)程序代碼128關(guān)聯(lián)的簽名與未授權(quán)的簽名列表134作比較。根據(jù)示例,使用與內(nèi)存108關(guān)聯(lián)的媒介控制器(例如,媒介控制器120和/或媒介控制器122)來識別與計算機(jī)程序代碼128關(guān)聯(lián)的未授權(quán)的簽名可以進(jìn)一步包括:解釋多個交錯的內(nèi)存芯片以及與計算機(jī)程序代碼128關(guān)聯(lián)的不連續(xù)的內(nèi)存頁面。根據(jù)示例,解釋多個交錯的內(nèi)存芯片以及與計算機(jī)程序代碼128關(guān)聯(lián)的不連續(xù)的內(nèi)存頁面可以進(jìn)一步包括:使用關(guān)聯(lián)哈希運(yùn)算(例如,等式(I)和等式(2))來計算與計算機(jī)程序代碼128關(guān)聯(lián)的不連續(xù)的內(nèi)存頁面的獨(dú)立哈希。根據(jù)示例,實現(xiàn)異步驗證可以進(jìn)一步包括:在媒介控制器(例如,媒介控制器120和/或媒介控制器122)處從OS 124接收信息,該信息相關(guān)于與內(nèi)存108中的計算機(jī)程序代碼128有關(guān)的地址范圍的位置。根據(jù)示例,實現(xiàn)異步驗證可以進(jìn)一步包括通過以下步驟將異步驗證用于內(nèi)核完整性保護(hù):確定多個授權(quán)的內(nèi)核函數(shù)指針來、使用授權(quán)的內(nèi)核函數(shù)指針來生成授權(quán)的內(nèi)核函數(shù)指針指向的值的授權(quán)的列表(例如,指針地址和授權(quán)的值136的列表)、向媒介控制器(例如,媒介控制器120和/或媒介控制器122)發(fā)送該值的授權(quán)的列表、以及使用媒介控制器來確定內(nèi)核的指針的內(nèi)存地址的內(nèi)容包含與該值的授權(quán)的列表匹配的值。
[0039]參照圖3,對于方法300,在框302處,該方法可以包括:接收計算機(jī)程序代碼。例如,參照圖1,該方法可以包括:接收計算機(jī)程序代碼128。
[0040]在框304處,該方法可以包括:使用加載器將計算機(jī)程序代碼加載到內(nèi)存中。例如,參照圖1,0S 124可以包括負(fù)責(zé)將計算機(jī)程序代碼128加載到內(nèi)存108中的加載器126。
[0041 ] 在框306處,該方法可以包括:通過選擇性地實現(xiàn)同步驗證和/或異步驗證,驗證計算機(jī)程序代碼的完整性。同步驗證可以基于與加載器關(guān)聯(lián)的加載器安全特征,并且異步驗證可以基于與內(nèi)存關(guān)聯(lián)的媒介控制器。例如,參照圖1,對于同步驗證,內(nèi)存完整性檢查裝置102可以在加載器126中實現(xiàn)安全特征130,以評估計算機(jī)程序代碼128的完整性。對于異步驗證,內(nèi)存完整性檢查裝置102可以使用媒介控制器120和/或媒介控制器122來評估計算機(jī)程序代碼128的完整性。
[0042]在框308處,該方法可以包括:實施異步驗證作為與加載器和OS的操作相比的分離的操作。例如,參照圖1,該方法可以包括:實施異步驗證作為與加載器126和O