計(jì)算系統(tǒng)可以包括諸如執(zhí)行計(jì)算設(shè)備的各種啟動功能的基本輸入/輸出系統(tǒng)(BIOS)之類的代碼。BIOS代碼可以初始化并測試計(jì)算設(shè)備的硬件,照此BIOS代碼可以從計(jì)算設(shè)備的存儲器加載引導(dǎo)代碼和/或操作系統(tǒng)。
附圖說明
在附圖中,相似編號指示相似部件或塊。以下具體實(shí)施方式參考附圖,其中:
圖1是示例性系統(tǒng)的框圖,該系統(tǒng)包括運(yùn)行來自存儲器的SMM BIOS代碼的處理器、以及在運(yùn)行SMM BIOS代碼時監(jiān)視預(yù)期功能以檢測指示SMM BIOS代碼已經(jīng)被破壞的SMM BIOS代碼改變的控制器;
圖2是示例性系統(tǒng)的框圖,該系統(tǒng)包括在運(yùn)行SMM BIOS代碼時控制器監(jiān)視系統(tǒng)的預(yù)期功能之前完成引導(dǎo)數(shù)據(jù)的運(yùn)行的處理器;
圖3是可由控制器運(yùn)行的示例性方法的流程圖,該控制器在SMM BIOS代碼的運(yùn)行期間監(jiān)視計(jì)算系統(tǒng)的預(yù)期功能以檢測SMM BIOS代碼的改變,該改變指示SMM BIOS代碼被破壞;
圖4是可由控制器運(yùn)行的示例性方法的流程圖,該控制器確定引導(dǎo)信息的運(yùn)行是否完成,并且如果是,該控制器在運(yùn)行SMM BIOS代碼時監(jiān)視預(yù)期功能,該控制器通過監(jiān)視預(yù)期功能來檢測SMM BIOS代碼的改變;
圖5是可由控制器運(yùn)行的示例性方法的流程圖,該控制器在運(yùn)行SMM BIOS代碼時監(jiān)視至少一個預(yù)期功能,該控制器檢測SMM BIOS代碼的改變以檢測是否可能存在預(yù)期功能的偏差;以及
圖6是具有處理器的示例性計(jì)算設(shè)備的框圖,該處理器運(yùn)行機(jī)器可讀存儲介質(zhì)中的指令,以用于在SMM BIOS代碼的運(yùn)行期間監(jiān)視預(yù)期功能并檢測SMM BIOS代碼是否已改變。
具體實(shí)施方式
BIOS代碼可被運(yùn)行以配置和測試計(jì)算設(shè)備中的硬件。照此,BIOS代碼可以包括系統(tǒng)管理模式(SMM)BIOS代碼。SMM BIOS代碼以最高權(quán)限等級運(yùn)行,所以一旦SMM BIOS代碼被破壞,就可能不能檢測SMM BIOS代碼的漏洞。因此,這可能導(dǎo)致計(jì)算設(shè)備運(yùn)行被破壞的SMM BIOS代碼,從而可能進(jìn)一步導(dǎo)致BIOS代碼的不合規(guī)操作。當(dāng)BIOS代碼從低上電狀態(tài)恢復(fù)而開始運(yùn)行時,諸如在BIOS代碼的預(yù)運(yùn)行期間,其他機(jī)制提供保護(hù);但是這些機(jī)制可能在運(yùn)行期間不提供保護(hù)以防攻擊,該攻擊將SMM BIOS代碼的修改作為目標(biāo)。進(jìn)一步,這些機(jī)制在計(jì)算設(shè)備處于低上電狀態(tài)時進(jìn)行保護(hù)以防攻擊,而在計(jì)算設(shè)備保持在持續(xù)開機(jī)狀態(tài)一延長時段時可能不提供保護(hù)。
為了解決這些問題,本文公開的示例提供一種在通過處理器運(yùn)行SMM BIOS代碼時監(jiān)視預(yù)期功能的控制器。預(yù)期功能是由于SMM BIOS代碼的運(yùn)行而可能發(fā)生的計(jì)算設(shè)備內(nèi)的行為或功能。以這種方式,預(yù)期功能是可以在運(yùn)行SMM BIOS代碼時預(yù)測的那些行為和/或功能。例如,開發(fā)人員可以包括此功能或行為以作為SMM BIOS代碼的一部分,因而創(chuàng)建SMM BIOS代碼的運(yùn)行的透明度。進(jìn)一步,監(jiān)視此預(yù)期功能使得控制器能夠監(jiān)視可在運(yùn)行SMM BIOS代碼時產(chǎn)生的功能。
此外,在運(yùn)行期間監(jiān)視SMM BIOS代碼的預(yù)期功能使得控制器能夠檢測SMM BIOS代碼是否已發(fā)生改變。檢測SMM BIOS代碼的改變使能夠識別SMM BIOS代碼是否已被破壞。識別SMM BIOS代碼是否已被破壞指示SMM BIOS代碼可能被損毀和/或可能包括SMM BIOS代碼的未授權(quán)修改。運(yùn)行被破壞的SMM BIOS代碼可能出現(xiàn)額外的易損性和/或?qū)е翨IOS代碼的不合規(guī)操作。此外,檢測SMM BIOS代碼是否被破壞可用于針對安全性更重要的功能(諸如監(jiān)視管理程序并提供其他更重要的服務(wù))增強(qiáng)SMM BIOS代碼。
在本文討論的另一示例中,控制器通過檢測與預(yù)期功能的偏差來檢測SMM BIOS代碼的改變。該偏差是根據(jù)SMM BIOS代碼的運(yùn)行無法預(yù)期的功能。照此,該偏差可包括基于SMM BIOS代碼的運(yùn)行而預(yù)測的那些功能的缺失和/或改變。例如,假設(shè)預(yù)期功能包括向寄存器中的一個寫入指定值,因此控制器進(jìn)行檢查以驗(yàn)證在那個寄存器中是否存在該指定值。如果不存在指定值或者如果值為指定值之外的一些值,則這指示預(yù)期功能的偏差。根據(jù)SMM BIOS代碼的運(yùn)行檢測功能和/或行為的偏差使得控制器能夠檢測SMM BIOS是否被破壞。
因此,本文公開的示例提供一種通過在SMM BIOS代碼的運(yùn)行期間監(jiān)視預(yù)期功能來檢測SMM BIOS代碼是否已經(jīng)被破壞的機(jī)制。
現(xiàn)在參照附圖,圖1是示例性計(jì)算設(shè)備的框圖,該計(jì)算設(shè)備包括可以訪問存儲器106以在模塊104處運(yùn)行SMM BIOS代碼的處理器102。當(dāng)在模塊104處運(yùn)行SMM BIOS代碼108時,控制器110監(jiān)視根據(jù)SMM BIOS代碼108的運(yùn)行而發(fā)生的預(yù)期功能??刂破?10在模塊112處監(jiān)視預(yù)期功能以在模塊114處檢測SMM BIOS代碼108的改變。存儲器106保存包括用于由處理器102運(yùn)行的SMM BIOS代碼108的BIOS代碼116。在模塊114處通過檢測SMM BIOS代碼108的改變,控制器110檢測SMM BIOS代碼108是否已經(jīng)被破壞。SMM BIOS代碼108的改變指示SMM BIOS代碼108已經(jīng)被破壞,這表示SMM BIOS代碼108可能被損毀和/或可能包括SMM BIOS代碼108的未授權(quán)修改。因此,由處理器102運(yùn)行被破壞的SMM BIOS代碼可能導(dǎo)致BIOS代碼116的不合規(guī)操作并且可能出現(xiàn)計(jì)算設(shè)備的額外的易損性。
圖1將處理器102、控制器110和存儲器106例示為計(jì)算設(shè)備內(nèi)部的部件。計(jì)算設(shè)備是可以被編程以實(shí)施一系列操作和/或功能的電子設(shè)備。照此,計(jì)算設(shè)備的實(shí)施方式包括目標(biāo)設(shè)備、移動設(shè)備、個人計(jì)算機(jī)、臺式計(jì)算器、膝上型電腦、平板電腦、便攜式設(shè)備、智能手機(jī)、可穿戴計(jì)算設(shè)備、游戲設(shè)備、智能電視、零售銷售點(diǎn)設(shè)備、或者包括處理器102、控制器110和存儲器106的其他類型的電子設(shè)備。
處理器102是計(jì)算設(shè)備內(nèi)部的在模塊104處運(yùn)行SMM BIOS代碼的硬件部件。盡管圖1將處理器102例示為在模塊104處運(yùn)行SMM BIOS代碼,但實(shí)施方式不應(yīng)被限制,因?yàn)檫@是為例示目的而做出的。例如,處理器102可以在SMM BIOS代碼108的運(yùn)行之前從存儲器106取回BIOS代碼116并運(yùn)行BIOS代碼116的引導(dǎo)信息。在此示例中,引導(dǎo)信息包括處理器102從低上電狀態(tài)進(jìn)行上電的預(yù)運(yùn)行信息。因此,當(dāng)從運(yùn)行引導(dǎo)信息過渡到在模塊104處運(yùn)行SMM BIOS代碼108時,處理器102處于上電狀態(tài)。以示例的方式,處理器102的實(shí)施方式可以包括能夠從存儲器106取回SMM BIOS代碼108并且在模塊104處運(yùn)行SMM BIOS代碼的處理單元、主機(jī)處理器、微處理器、半導(dǎo)體、集成電路、或其他類型的電子設(shè)備。
在模塊104處,處理器102運(yùn)行來自存儲器106的SMM BIOS代碼108。相應(yīng)地,模塊104包括處理器102從存儲器106取回SMM BIOS代碼108以供運(yùn)行。當(dāng)在模塊104處運(yùn)行SMM BIOS代碼時,處理器102可以向控制器110傳送信號。該信號向控制器110指示監(jiān)視由SMM BIOS代碼108的運(yùn)行所產(chǎn)生的預(yù)期功能。因此,如果處理器102還未開始運(yùn)行SMM BIOS代碼108,則控制器將不能監(jiān)視在模塊104處產(chǎn)生的預(yù)期功能。模塊104可以包括可由處理器102運(yùn)行以運(yùn)行SMM BIOS代碼108的指令、指令集、過程、操作、邏輯、技術(shù)、功能、固件、和/或軟件。
存儲器106是計(jì)算設(shè)備內(nèi)的保存BIOS代碼116并且照此可被處理器102訪問的存儲區(qū)域。在另一實(shí)施方式中,存儲器106可被處理器102訪問,但不能被控制器110訪問。處理器102訪問存儲器106來取回包括SMM BIOS代碼108的BIOS代碼116以供運(yùn)行。盡管圖1將存儲器106例示為從處理器102分離的部件,但這是為了例示目的而做出的,因?yàn)榇鎯ζ?06可作為處理器102的部分而被包括。以示例的方式,存儲器106的實(shí)施方式包括只讀存儲器、閃存、鐵電存儲器、鐵電RAM、磁性貯存存儲器、納米驅(qū)動、貯存驅(qū)動、存儲器部件、或用于保存BIOS代碼116和SMM BIOS代碼108的此類存儲器部件的組合。
BIOS代碼116是作為操作系統(tǒng)(未示出)的一致性機(jī)制用于初始化并測試硬件部件的接口,以與鍵盤、顯示器、以及與計(jì)算設(shè)備相關(guān)聯(lián)的其他設(shè)備接合。BIOS代碼116被保存在存儲器106中,并且在運(yùn)行時可以從存儲器106加載操作系統(tǒng)(未示出)。盡管圖1將BIOS代碼116例示為包括SMM BIOS代碼108,但實(shí)施方式不應(yīng)當(dāng)被限制,因?yàn)锽IOS代碼116可以進(jìn)一步包括引導(dǎo)信息和其他預(yù)運(yùn)行代碼。
SMM BIOS代碼108是指定實(shí)施的固件中的由處理器102以高權(quán)限模式運(yùn)行的操作模式。SMM BIOS代碼108處理諸如電力管理、系統(tǒng)硬件控制、或?qū)S性荚O(shè)備制造商設(shè)計(jì)的代碼之類的全系統(tǒng)功能。例如,SMM BIOS代碼108的使用包括如存儲器錯誤、芯片集錯誤的系統(tǒng)事件,管理包括處理器102的掉電的系統(tǒng)安全功能,控制電力管理操作等。SMM BIOS代碼108可以通過系統(tǒng)中斷向處理器102觸發(fā),以指示來運(yùn)行SMM BIOS代碼108。這可以在BIOS代碼116的引導(dǎo)信息的運(yùn)行完成時發(fā)生。在后面的圖中詳細(xì)討論此實(shí)施方式。
控制器110是能夠在處理器102于模塊104處運(yùn)行SMM BIOS代碼108時監(jiān)視預(yù)期功能的硬件部件。在監(jiān)視預(yù)期功能時,控制器110檢測SMM BIOS代碼108是否可能已經(jīng)歷可破壞SMM BIOS代碼108的改變。以示例的方式,控制器110的實(shí)施方式可以包括能夠監(jiān)視由SMM BIOS代碼108的運(yùn)行產(chǎn)生的預(yù)期功能以檢測SMM BIOS代碼108的改變的嵌入式控制器、微控制器、半導(dǎo)體、電子設(shè)備、微芯片、芯片集、或其他類型的硬件部件。
在模塊112至114處,控制器110在通過處理器102運(yùn)行SMM BIOS代碼108時監(jiān)視預(yù)期功能。當(dāng)在處理器102運(yùn)行SMM BIOS代碼時監(jiān)視預(yù)期功能時,控制器110檢測SMM BIOS代碼是否已經(jīng)歷改變。檢測到SMM BIOS代碼108的改變表明SMM BIOS代碼108可能被破壞,這表示SMM BIOS代碼108可能被損毀和/或可能包括未授權(quán)的修改。在一實(shí)施方式中,檢測SMM BIOS代碼108的改變可以包括檢測預(yù)期功能的偏差。該偏差是在處理器102運(yùn)行SMM BIOS代碼108時發(fā)生的非預(yù)期功能。例如,開發(fā)人員以如下這種方式生成SMM BIOS代碼108:當(dāng)處理器102運(yùn)行此代碼108時,在運(yùn)行SMM BIOS代碼108時發(fā)生特定行為。偏差可包括那些特定行為的缺失和/或改變。這創(chuàng)建了SMM BIOS代碼108的運(yùn)行的透明度。檢測到偏差指示SMM BIOS代碼108的改變,因此進(jìn)一步指示被破壞的SMM BIOS代碼108。在后面的圖中詳細(xì)討論此實(shí)施方式。模塊112至114可以包括可由控制器110運(yùn)行的用于在處理器102運(yùn)行SMM BIOS代碼108時監(jiān)視預(yù)期功能的指令、指令集、過程、操作、邏輯、技術(shù)、功能、固件和/或軟件。
圖2是示例性計(jì)算設(shè)備的框圖,該計(jì)算設(shè)備包括在模塊104處運(yùn)行SMM BIOS代碼108之前在模塊220處完成對來自存儲器106的引導(dǎo)數(shù)據(jù)218的運(yùn)行的處理器102。處理器102向控制器110傳送表示在模塊220處完成引導(dǎo)信息的信號。來自處理器102的信號向控制器110指示處理器102正進(jìn)入SMM BIOS模式,以在模塊104處運(yùn)行SMM BIOS代碼108。計(jì)算設(shè)備包括控制器110,控制器110在模塊112處監(jiān)視SMM BIOS代碼108的預(yù)期功能。當(dāng)處理器102在模塊104處運(yùn)行SMM BIOS代碼108時,控制器110在模塊112處監(jiān)視預(yù)期功能。在模塊112處監(jiān)視預(yù)期功能使得控制器110能夠在模塊114處檢測SMM BIOS代碼108的改變,預(yù)期功能由在模塊104處運(yùn)行SMM BIOS代碼108產(chǎn)生。檢測到這種改變指示SMM BIOS代碼108可能被破壞,這表示SMM BIOS代碼108可能被損毀和/或可能包括未授權(quán)的修改。運(yùn)行被破壞的BIOS代碼可能導(dǎo)致BIOS代碼116的不合規(guī)操作并且可能出現(xiàn)計(jì)算設(shè)備的額外的易損性。
引導(dǎo)數(shù)據(jù)218被認(rèn)為是從存儲器106獲取的BIOS代碼116的部分。在運(yùn)行引導(dǎo)數(shù)據(jù)218時,處理器102從諸如休眠或睡眠等的低上電狀態(tài)過渡到諸如開機(jī)狀態(tài)的較高上電狀態(tài)。在此過渡期間,處理器102可以蘇醒并過渡到操作狀態(tài)。引導(dǎo)數(shù)據(jù)218包括處理器102從低上電狀態(tài)恢復(fù)時運(yùn)行的預(yù)運(yùn)行信息。因此,引導(dǎo)數(shù)據(jù)218初始化計(jì)算設(shè)備的引導(dǎo)序列,并且以示例的方式,該引導(dǎo)序列可以包括用于執(zhí)行自測試、加載配置設(shè)置、加載軟件和/或固件等的處理數(shù)據(jù)。當(dāng)從執(zhí)行引導(dǎo)數(shù)據(jù)218過渡到運(yùn)行SMM BIOS代碼108時,處理器102保持在持續(xù)的上電狀態(tài)。這指示處理器102已經(jīng)開機(jī)了一持續(xù)的時間段。如果控制器110確定處理器102還未在模塊220處完成引導(dǎo)數(shù)據(jù)218的運(yùn)行,則這表示處理器102還未進(jìn)入SMM BIOS模式來運(yùn)行SMM BIOS代碼108。因此,控制器110將不能夠在模塊112處監(jiān)視預(yù)期功能。
在模塊220處,處理器102完成了引導(dǎo)數(shù)據(jù)218的運(yùn)行,因此使得處理器102能夠繼續(xù)進(jìn)行以運(yùn)行來自存儲器106的SMM BIOS代碼108。當(dāng)在模塊220處完成引導(dǎo)數(shù)據(jù)的運(yùn)行時,處理器102可以發(fā)送信號中斷,因此向控制器110指示在模塊112處監(jiān)視預(yù)期功能。模塊220可以包括可由控制器110運(yùn)行以完成引導(dǎo)數(shù)據(jù)218的運(yùn)行的指令、指令集、過程、操作、邏輯、技術(shù)、功能、固件和/或軟件。
圖3是可由控制器運(yùn)行的用于在處理器運(yùn)行SMM BIOS代碼時監(jiān)視預(yù)期功能的示例性方法的流程圖。控制器監(jiān)視可以由SMM BIOS代碼的運(yùn)行產(chǎn)生的預(yù)期功能,以檢測SMM BIOS代碼的改變。該改變指示SMM BIOS代碼可能已經(jīng)被破壞,并且照此可能已經(jīng)經(jīng)歷指示SMM BIOS代碼可能已遭受攻擊和/或損毀的未授權(quán)修改。在討論圖3時可以參考圖1至圖2中的部件以提供承接上下文的示例。例如,圖1至圖2中的處理器102運(yùn)行SMM BIOS代碼以產(chǎn)生預(yù)期功能。在另一示例中,圖1至圖2中的控制器110運(yùn)行操作302至304,來在運(yùn)行SMM BIOS代碼時監(jiān)視預(yù)期功能,以用于檢測是否存在SMM BIOS代碼的改變。進(jìn)一步,盡管圖3被描述為由控制器實(shí)施,但其可以在其他合適的部件上運(yùn)行。例如,圖3可以以在如圖6中的機(jī)器可讀存儲介質(zhì)604上的可運(yùn)行指令的形式實(shí)施。
在操作302處,控制器在處理器運(yùn)行SMM BIOS代碼時監(jiān)視預(yù)期功能。在操作302處,處理器向控制器發(fā)送信號,以指示處理器何時進(jìn)入SMM BIOS模式并且因此運(yùn)行SMM BIOS代碼。響應(yīng)于接收到此信號,控制器在SMM BIOS代碼的運(yùn)行期間監(jiān)視預(yù)期功能。預(yù)期功能是由運(yùn)行SMM BIOS代碼的結(jié)果而發(fā)生的行為。照此,該行為可以在逐行遍歷SMM BIOS代碼時或在完成SMM BIOS代碼時來觀測。例如,開發(fā)人員可以將此特定行為創(chuàng)建為SMM BIOS代碼的部分,因此創(chuàng)建SMM BIOS代碼的運(yùn)行的可觀測性或透明度。監(jiān)視此特定行為使得控制器能夠監(jiān)視在運(yùn)行SMM BIOS代碼時產(chǎn)生的功能。在一個實(shí)施方式中,控制器在SMM BIOS代碼運(yùn)行時監(jiān)視預(yù)期功能之前確定處理器是否已完成引導(dǎo)信息的運(yùn)行。在另一實(shí)施方式中,控制器監(jiān)視以下中的至少一個:跟蹤處理器多久運(yùn)行SMM BIOS代碼;處理器運(yùn)行SMM BIOS代碼所花費(fèi)的時間量;監(jiān)視特定寄存器的設(shè)置;以及跟蹤由SMM BIOS代碼的運(yùn)行所生成的I/O循環(huán)的數(shù)量。在后面的圖中詳細(xì)討論這些示例。在SMM BIOS代碼的運(yùn)行期間監(jiān)視預(yù)期功能,控制器檢測SMM BIOS代碼的改變,如在操作304處。
在操作304處,控制器通過在SMM BIOS代碼的運(yùn)行期間觀測預(yù)期功能來檢測SMM BIOS代碼的改變。該SMM BIOS代碼的改變指示SMM BIOS代碼已經(jīng)被破壞,這意味著SMM BIOS代碼可能被損毀和/或可能包括SMM BIOS代碼的未授權(quán)修改。運(yùn)行被破壞的代碼可能導(dǎo)致BIOS代碼的不合規(guī)操作??刂破髟赟MM BIOS代碼的間接監(jiān)視期間檢測SMM BIOS代碼的改變。在間接監(jiān)視中,開發(fā)人員將特定功能編程在BIOS代碼中。由于這些功能是根據(jù)SMM BIOS代碼的運(yùn)行預(yù)測的,所以這些特定功能是預(yù)期功能??刂破魍ㄟ^跟蹤預(yù)期功能來預(yù)測這些預(yù)期功能。如果存在偏差或非預(yù)期功能,則這指示SMM BIOS代碼的改變并且因此指示被破壞的SMM BIOS代碼。在接下來的圖中詳細(xì)討論此實(shí)施方式。
圖4是可由控制器運(yùn)行的用于確定處理器運(yùn)行引導(dǎo)信息是否完成的示例性方法的流程圖。如果引導(dǎo)信息的運(yùn)行完成,則處理器繼續(xù)進(jìn)行以運(yùn)行SMM BIOS代碼,同時其向控制器發(fā)信號以監(jiān)視預(yù)期功能。控制器監(jiān)視預(yù)期功能以檢測SMM BIOS代碼的改變??刂破魍ㄟ^監(jiān)視是否可能存在預(yù)期功能的偏差來檢測SMM BIOS代碼的改變。如果控制器檢測到偏差,則控制器可以繼續(xù)進(jìn)行以傳送偏差的警告。偏差指示SMM BIOS代碼的改變,SMM BIOS代碼的改變進(jìn)一步指示SMM BIOS代碼已經(jīng)被破壞。針對偏差監(jiān)視預(yù)期功能是對SMM代碼的行為分析,使得功能可被觀測,以確認(rèn)功能完整性并且檢測功能(并且因此SMM BIOS代碼)是否發(fā)生改變。在討論圖4時,可以參考圖1至圖2中的部件以提供承接上下文的示例。例如,圖1至圖2中的處理器102運(yùn)行引導(dǎo)信息和SMM BIOS代碼。在另一示例中,圖1至圖2中的控制器110運(yùn)行操作402至414,以檢測是否存在SMM BIOS代碼的改變。另外,盡管圖4被描述為由控制器實(shí)施,但其可以在其他合適的部件上運(yùn)行。例如,圖4可以以在如圖6中的機(jī)器可讀存儲介質(zhì)604上的可運(yùn)行指令的形式來實(shí)施。
在操作402處,控制器確定處理器是否已完成引導(dǎo)信息的運(yùn)行。引導(dǎo)信息包括處理器從低上電狀態(tài)恢復(fù)時運(yùn)行的預(yù)運(yùn)行信息。因此,引導(dǎo)信息初始化計(jì)算設(shè)備的引導(dǎo)序列,并且照此,引導(dǎo)序列指的是一旦處理器上電就向存儲器中加載BIOS代碼以供處理器運(yùn)行的過程。以示例的方式,引導(dǎo)信息包括用于執(zhí)行自測試、加載配置設(shè)置、加載軟件和/或固件等的處理數(shù)據(jù)。以此方式,計(jì)算設(shè)備通過它的引導(dǎo)拉起自身。具體地,引導(dǎo)信息還被稱為引導(dǎo)操作,該引導(dǎo)操作指的是向計(jì)算設(shè)備的存儲器中加載BIOS代碼以供處理器運(yùn)行的過程。確定引導(dǎo)信息的運(yùn)行是否完成表示:從運(yùn)行引導(dǎo)信息到繼續(xù)運(yùn)行SMM BIOS代碼,處理器處于持續(xù)的開機(jī)狀態(tài)。如果控制器確定處理器還未完成引導(dǎo)信息的運(yùn)行,則如在操作404處那樣,控制器不繼續(xù)監(jiān)視由SMM BIOSD代碼的運(yùn)行引起的預(yù)期功能。如果控制器確定處理器已經(jīng)完成引導(dǎo)信息的運(yùn)行,則這指示處理器已經(jīng)開機(jī)一持續(xù)的時間段,并且控制器可以繼續(xù)進(jìn)行至操作406。
在操作404處,當(dāng)在操作402處確定處理器還未完成BIOS代碼的引導(dǎo)信息的運(yùn)行時,控制器不在操作406處在SMM BIOS代碼運(yùn)行期間監(jiān)視預(yù)期功能。SMM BIOS代碼是以高權(quán)限模式運(yùn)行分離軟件的操作模式。在此模式期間,處理器保持開機(jī)以運(yùn)行SMM BIOS代碼。如果控制器確定處理器正在運(yùn)行引導(dǎo)信息,則這指示計(jì)算設(shè)備處于預(yù)運(yùn)行模式,這表示處理器還未進(jìn)入運(yùn)行SMM BIOS的模式,因此使控制器不能監(jiān)視作為運(yùn)行SMM BIOS代碼的結(jié)果的預(yù)期功能。
在操作406處,當(dāng)確定處理器完成了引導(dǎo)信息的運(yùn)行時,控制器在通過處理器運(yùn)行SMM BIOS代碼時監(jiān)視預(yù)期功能。在引導(dǎo)信息的運(yùn)行完成時,處理器向控制器發(fā)送完成信號。這向控制器發(fā)送了處理器正在繼續(xù)運(yùn)行SMM BIOS代碼的信號。這轉(zhuǎn)而又指示控制器開始監(jiān)視預(yù)期功能。在執(zhí)行SMM BIOS代碼時監(jiān)視預(yù)期功能表示:從運(yùn)行引導(dǎo)信息到繼續(xù)運(yùn)行SMM BIOS代碼,處理器保持上電。操作406涉及使用跟蹤SMM BIOS代碼的預(yù)期行為的機(jī)制。預(yù)期行為可由開發(fā)人員安置,以使得在運(yùn)行SMM BIOS代碼時發(fā)生特定功能。包括特定功能使得能夠提供作為運(yùn)行SMM BIOS代碼的結(jié)果的行為,因此使特定功能可由控制器觀測。因此,預(yù)期功能是在運(yùn)行SMM BIOS代碼時預(yù)測的行為和/或功能。照此,由于該功能被認(rèn)為是根據(jù)由開發(fā)人員安置到SMM BIOS代碼中的編程而預(yù)期或預(yù)測的。因此控制器監(jiān)視此預(yù)期功能,以在操作410處檢測是否可能存在此預(yù)期功能的偏差。以示例的方式,控制器監(jiān)視此類預(yù)期功能包括但不限于:處理器多久運(yùn)行SMM BIOS代碼;處理器運(yùn)行SMM BIOS代碼所花費(fèi)的時間量;監(jiān)視特定寄存器的設(shè)置;以及跟蹤由SMM BIOS代碼的運(yùn)行生成的I/O循環(huán)的數(shù)量。在接下來的圖中詳細(xì)描述此示例。操作406可以與圖3中的操作302在功能上類似。
在操作408處,控制器響應(yīng)于如在操作406處的監(jiān)視預(yù)期功能而檢測SMM BIOS代碼的改變。在此實(shí)施方式中,控制器通過間接監(jiān)視SMM BIOS代碼來檢測SMM BIOS代碼的改變。間接檢測SMM BIOS代碼包括監(jiān)視作為運(yùn)行SMM BIOS代碼的結(jié)果的預(yù)期功能、以及諸如在操作410處的檢測是否可能存在此預(yù)期功能的偏差。操作408可以與圖3中的操作304在功能上類似。
在操作410處,控制器確定是否存在預(yù)期功能的偏差。該偏差是控制器通過監(jiān)視來自SMM BIOS代碼的運(yùn)行的預(yù)期功能而檢測到的非預(yù)期功能。例如,假設(shè)預(yù)期功能包括向寄存器中的一個寫入指定值,因此控制器進(jìn)行檢查以驗(yàn)證在那個寄存器中是否存在該指定值。如果不存在指定值或者如果該值是指定值之外的某些值,則這指示預(yù)期功能的偏差。如果控制器確定不存在預(yù)期功能的偏差,則控制器繼續(xù)進(jìn)行至操作414并且不傳送警告或通知。如果控制器確定存在預(yù)期功能的偏差,則這指示存在產(chǎn)生該偏差的SMM BIOS代碼的未授權(quán)改變。照此,控制器繼續(xù)進(jìn)行至416以傳送偏差警告。
在操作412處,在檢測不到預(yù)期功能的偏差時,控制器不傳送警告。檢測不到預(yù)期功能的偏差表示控制器未檢測到SMM BIOS代碼的改變,這表示SMM BIOS代碼可能沒被破壞。
在操作414處,控制器傳送預(yù)期功能的偏差的警告。預(yù)期功能的偏差指示SMM BIOS代碼的改變,因此進(jìn)一步指示SMM BIOS代碼已經(jīng)被破壞。SMM BIOS代碼的被破壞的情況表示SMM BIOS代碼可能被損毀和/或可能包括SMM BIOS代碼的未授權(quán)修改。
圖5是可由控制器運(yùn)行的用于在運(yùn)行SMM BIOS代碼期間監(jiān)視預(yù)期功能的示例性方法的流程圖。控制器通過監(jiān)視以下功能中的至少一個來監(jiān)視預(yù)期功能,該功能包括:監(jiān)視計(jì)算設(shè)備的寄存器設(shè)置;跟蹤處理器進(jìn)入SMM BIOS模式以進(jìn)行運(yùn)行的次數(shù);跟蹤處理器運(yùn)行SMM BIOS代碼所花費(fèi)的時間量;以及跟蹤可在運(yùn)行SMM BIOS代碼時生成的I/O循環(huán)的數(shù)量。此外,盡管圖5描述了以上提到的功能,但實(shí)施方式不應(yīng)被限制,因?yàn)檫@是為了例示目的而做出的。例如,控制器還可以監(jiān)視處理器處的指定時鐘信號或者監(jiān)視其他類型的可觀測行為。
控制器監(jiān)視這些功能中的至少一個以檢測指示SMM BIOS代碼已經(jīng)被破壞的SMM BIOS代碼的改變??刂破魍ㄟ^檢測預(yù)期功能的偏差來檢測SMM BIOS代碼的改變。預(yù)期功能是在運(yùn)行SMM BIOS代碼時發(fā)生的預(yù)期行為。偏差是非預(yù)期的行為,在某種意義上,偏差是被認(rèn)為是異常的并且指示計(jì)算設(shè)備的功能完整性可能存在風(fēng)險的行為。照此,使控制器能夠監(jiān)視預(yù)期功能為控制器提供了這樣的機(jī)制:對行為進(jìn)行跟蹤以觀測可能作為運(yùn)行SMM BIOS的結(jié)果而產(chǎn)生的異常性。在討論圖5時,可以參考圖1至圖2中的部件以提供承接上下文的示例。例如,圖1至圖2中的處理器102運(yùn)行SMM BIOS代碼,以使控制器在操作502處在SMM BIOS代碼運(yùn)行期間監(jiān)視預(yù)期功能。在另一示例中,圖1至圖2中的控制器110運(yùn)行操作502至516,以檢測是否存在SMM BIOS代碼的改變。另外,盡管圖5被描述為由控制器實(shí)施,但其還可以在其他合適的部件上運(yùn)行。例如,圖5可以以在如圖6中的機(jī)器可讀存儲介質(zhì)604上的可運(yùn)行指令的形式來實(shí)施。
在操作502處,控制器在處理器運(yùn)行SMM BIOS代碼時監(jiān)視計(jì)算設(shè)備的預(yù)期功能。處理器向控制器傳送指示處理器在進(jìn)入SMM BIOS模式的過程中的信號。此信號指示控制器在運(yùn)行SMM BIOS代碼的過程期間監(jiān)視預(yù)期功能??刂破骺梢允褂弥甘咎幚砥骱螘r運(yùn)行SMM BIOS代碼的指南被編程,控制器通過監(jiān)視預(yù)期功能作出反應(yīng)。預(yù)期功能是在運(yùn)行SMM BIOS代碼期間發(fā)生的行為。照此,開發(fā)人員可以創(chuàng)建可由控制器觀測的行為。監(jiān)視此特定行為使得控制器能夠作為觀看者來操作以監(jiān)視預(yù)期功能。在操作502處,控制器可以操作以觀測在操作504至510處的功能中的至少一個。在此實(shí)施方式中,可以使這些功能中的至少一個可由開發(fā)人員進(jìn)行觀測。以此方式,這些功能可以由控制器觀測,使得控制器能夠從這些功能中預(yù)期特定行為。操作502可以與圖3和圖4中的操作302和406在功能上類似。
在操作504處,控制器可以監(jiān)視計(jì)算設(shè)備內(nèi)部的寄存器中的一個寄存器的設(shè)置。該寄存器可以包括運(yùn)行SMM BIOS代碼的處理器的寄存器或其他類型的硬件寄存器。這些寄存器提供值的占位符,其可以包括存儲關(guān)于處理器的特定條件的信息或者存儲其他信息??刂破骺梢愿櫾诩拇嫫魈幍闹担栽谶\(yùn)行SMM BIOS代碼的特定部分時確定那個值是否應(yīng)該是預(yù)期值。如果該值不是預(yù)期值,則這可以指示預(yù)期功能的偏差。例如,假設(shè)在運(yùn)行SMM BIOS代碼時預(yù)期處理器寄存器存儲位“0”,但處理器寄存器存儲位“1”。這指示預(yù)期功能的偏差,該偏差指示SMM BIOS代碼的改變。
在操作506處,控制器跟蹤處理器進(jìn)入SMM BIOS模式以運(yùn)行SMM BIOS代碼的次數(shù)。照此,控制器確定處理器是否已經(jīng)達(dá)到運(yùn)行SMM BIOS代碼的閾值次數(shù)。在此實(shí)施方式中,如果處理器達(dá)到此進(jìn)入SMM BIOS模式的閾值次數(shù)或超出該閾值次數(shù),則這向控制器傳送偏差信號。
在操作508處,控制器跟蹤處理器運(yùn)行SMM BIOS代碼的時間量??刂破魇褂弥付ǖ臅r間量作為閾值,以指示處理器運(yùn)行SMM BIOS代碼所花費(fèi)的時間量是否異常。如果處理器花費(fèi)至少指定的時間量或更多時間量,則這向控制器指示異常性或預(yù)期功能的偏差。相應(yīng)地,此偏差指示SMM BIOS代碼的改變。
在操作510處,控制器跟蹤由運(yùn)行SMM BIOS代碼的處理器生成的I/O循環(huán)的數(shù)量。I/O循環(huán)的數(shù)量可以包括在運(yùn)行SMM BIOS代碼時發(fā)生的至控制器的消息的數(shù)量。因此,向控制器發(fā)消息使得控制器能夠跟蹤在運(yùn)行SMM BIOS代碼時生成的I/O循環(huán)的數(shù)量。因此,控制器可以跟蹤每次處理器運(yùn)行SMM BIOS代碼時應(yīng)當(dāng)生成的I/O循環(huán)的數(shù)量。因此,如果未達(dá)到或超過此數(shù)量,則這指示運(yùn)行SMM BIOS代碼的功能的偏差或異常性。
在操作512處,控制器根據(jù)如在操作502處的在運(yùn)行SMM BIOS代碼期間監(jiān)視預(yù)期功能來檢測SMM BIOS代碼的改變。在一個實(shí)施方式中,檢測SMM BIOS代碼的改變包括間接監(jiān)視SMM BIOS代碼。在此實(shí)施方式中,控制器在操作514處檢測預(yù)期功能的偏差。間接監(jiān)視包括監(jiān)視預(yù)期功能以確定SMM BIOS代碼是否已經(jīng)保存計(jì)算設(shè)備的功能完整性。操作512可以與圖4中的操作408在功能上類似。
在操作514處,如果控制器檢測到預(yù)期功能的偏差,則此偏差指示存在SMM BIOS代碼的改變。該偏差是在處理器運(yùn)行SMM BIOS代碼時發(fā)生的非預(yù)期功能。開發(fā)人員以這樣的方式開發(fā)SMM BIOS代碼中的代碼:當(dāng)處理器運(yùn)行此代碼時,存在在運(yùn)行SMM BIOS代碼時發(fā)生的特定行為。偏差可包括那些特定行為的缺失和/或改變。通過檢測預(yù)期功能的偏差來檢測改變指示SMM BIOS代碼可能被破壞。相應(yīng)地,在操作516處,控制器可以傳送此改變的通知或警告。操作514可以與圖4中的操作410在功能上類似。
在操作516處,當(dāng)在操作512處檢測到SMM BIOS代碼的改變時,控制器可以繼續(xù)進(jìn)行至傳送SMM BIOS代碼的改變的警告。操作516可以與圖4中的操作414在功能上類似。
圖6是計(jì)算設(shè)備600的框圖,計(jì)算設(shè)備600具有用于運(yùn)行機(jī)器可讀存儲介質(zhì)604中的指令606至614的控制器602。具體地,具有控制器602的計(jì)算設(shè)備600用于運(yùn)行指令606至614,以在SMM BIOS代碼的運(yùn)行期間監(jiān)視計(jì)算設(shè)備600的預(yù)期功能。控制器602用于在SMM BIOS代碼的運(yùn)行期間監(jiān)視預(yù)期功能,以檢測SMM BIOS代碼的改變。如果控制器602檢測到SMM BIOS代碼的改變,則由于該改變指示SMM BIOS代碼已經(jīng)被破壞,所以控制器602還可以運(yùn)行指令606至614以傳送警告。
盡管計(jì)算設(shè)備600包括控制器602和機(jī)器可讀存儲介質(zhì)604,但其還可以包括對于本領(lǐng)域技術(shù)人員而言合適的其他部件。例如,計(jì)算設(shè)備600可以包括如圖1中的用于運(yùn)行SMM BIOS代碼的處理器102。計(jì)算設(shè)備600是具有能夠運(yùn)行指令606至614的控制器602的電子設(shè)備,并且照此,計(jì)算設(shè)備600的這種實(shí)施例包括能夠運(yùn)行指令606至614的計(jì)算設(shè)備、移動設(shè)備、客戶端設(shè)備、個人計(jì)算機(jī)、臺式計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板、視頻游戲操控臺、或其他類型的電子設(shè)備。指令606至614可被實(shí)施為方法、功能、操作、和被實(shí)施為存儲在存儲介質(zhì)604上的機(jī)器可讀指令的其他過程,該存儲介質(zhì)604可以是非暫時性的,諸如硬件存儲設(shè)備(例如,隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、可擦除可編程ROM、電可擦除ROM、硬盤和閃存)。
控制器602可以提取、解碼和運(yùn)行指令606至614,以通過在運(yùn)行SMM BIOS代碼時監(jiān)視預(yù)期功能來檢測SMM BIOS代碼是否已經(jīng)被破壞。在一個實(shí)施方式中,控制器602運(yùn)行指令606至608,以通過監(jiān)視預(yù)期功能來檢測SMM BIOS代碼的改變,并且檢測是否存在此預(yù)期功能的偏差。在另一實(shí)施方式中,在運(yùn)行指令606至612時,控制器602運(yùn)行指令614,以通過在運(yùn)行SMM BIOS代碼期間監(jiān)視預(yù)期功能并檢測預(yù)期功能的偏差來檢測SMM BIOS代碼的改變。具體地,控制器602運(yùn)行指令606至608以進(jìn)行以下操作:在運(yùn)行SMM BIOS時監(jiān)視計(jì)算設(shè)備600的預(yù)期功能;以及通過監(jiān)視預(yù)期功能來檢測SMM BIOS代碼的改變??刂破?02繼續(xù)進(jìn)行至通過運(yùn)行指令610至612來檢測SMM BIOS的改變,以進(jìn)行以下操作:檢測預(yù)期功能的偏差;以及在完成SMM BIOS代碼的運(yùn)行之前檢測改變。控制器602繼續(xù)進(jìn)行至在檢測到改變時,傳送SMM BIOS代碼已經(jīng)被破壞的警告,處理器602運(yùn)行指令614以進(jìn)行以下操作:傳送指示SMM BIOS代碼已經(jīng)被破壞的SMM BIOS代碼的改變的警告。
機(jī)器可讀存儲介質(zhì)604包括供控制器602提取、解碼和運(yùn)行的指令606至614。在另一實(shí)施例中,機(jī)器可讀存儲介質(zhì)604可以是包含或存儲可運(yùn)行指令的電子設(shè)備、磁性設(shè)備、光學(xué)設(shè)備、存儲器設(shè)備、貯存設(shè)備、快閃驅(qū)動設(shè)備、或其他實(shí)體設(shè)備。因此,機(jī)器可讀存儲介質(zhì)604可以包括例如隨機(jī)存取存儲器(RAM)、電可擦除可編程只讀存儲器(EEPROM)、貯存驅(qū)動、存儲器高速緩存、網(wǎng)絡(luò)貯存器、壓縮盤只讀存儲器(CDROM)等。照此,機(jī)器可讀存儲介質(zhì)604可包括可獨(dú)立使用和/或結(jié)合控制器602使用以提取、解碼、和/或運(yùn)行機(jī)器可讀存儲介質(zhì)604的指令的應(yīng)用和/或固件。應(yīng)用和/或固件可存儲在機(jī)器可讀存儲介質(zhì)604上,和/或存儲在計(jì)算設(shè)備600的另一位置上。
因此,本文公開的示例提供一種通過在SMM BIOS代碼的運(yùn)行期間監(jiān)視預(yù)期功能來檢測SMM BIOS代碼是否已經(jīng)被破壞的機(jī)制。