嚴(yán)霄鳳
工業(yè)和信息化部計(jì)算機(jī)與微電子發(fā)展研究中心(中國(guó)軟件評(píng)測(cè)中心)北京 100048
計(jì)算機(jī)基本輸入/輸出系統(tǒng)(Basic Input/Output System,BIOS)是固化在計(jì)算機(jī)主板上一個(gè)ROM芯片中,計(jì)算機(jī)通電后首先執(zhí)行的一組程序,是硬件與軟件程序之間的接口。其功能包括上電自檢及初始化、硬件中斷處理、程序服務(wù)處理等。為計(jì)算機(jī)提供最底層、最直接的硬件控制,在計(jì)算機(jī)系統(tǒng)中起著非常重要的作用。
由于BIOS在計(jì)算機(jī)架構(gòu)中獨(dú)特和優(yōu)越的位置,使其成為整個(gè)計(jì)算機(jī)系統(tǒng)的關(guān)鍵和靈魂。運(yùn)行在BIOS級(jí)別上的代碼將對(duì)計(jì)算機(jī)系統(tǒng)具有很強(qiáng)的控制能力,BIOS一旦受到惡意破壞將可能直接導(dǎo)致整個(gè)硬件系統(tǒng)癱瘓。如果攻擊者作為針對(duì)企業(yè)的復(fù)雜、有針對(duì)性網(wǎng)絡(luò)攻擊的一部分,對(duì)BIOS進(jìn)行惡意修改將可能造成永久的拒絕服務(wù)攻擊(如,損壞BIOS)或使惡意軟件長(zhǎng)期存在(如,在BIOS中植入惡意軟件)。
BIOS固件有幾種不同的類(lèi)型。一些計(jì)算機(jī)使用16位的傳統(tǒng) BIOS,而許多新的系統(tǒng)使用基于統(tǒng)一可擴(kuò)展固件接口(Unified Extensible Firmware Interface,UEFI)規(guī)范的引導(dǎo)固件。
系統(tǒng) BIOS通常由原始設(shè)備制造商(OEM)和獨(dú)立 BIOS供應(yīng)商開(kāi)發(fā),并利用計(jì)算機(jī)硬件分發(fā)到最終用戶(hù)。制造商經(jīng)常通過(guò)更新系統(tǒng)固件來(lái)修復(fù)錯(cuò)誤、為漏洞打補(bǔ)丁和支持新的硬件。系統(tǒng) BIOS通常存儲(chǔ)在電可擦除可編程只讀存儲(chǔ)器(Electrically Erasable Programmable Read-Only Memory,EEPROM)或其他形式的閃存上,并可由最終用戶(hù)修改。
對(duì)于一個(gè)給定的計(jì)算機(jī)系統(tǒng),除了主板之外,BIOS還可能存在于硬盤(pán)驅(qū)動(dòng)器控制器、顯卡、網(wǎng)卡上及其他附加卡上。這類(lèi)固件通常采用擴(kuò)展ROM的形式,在引導(dǎo)過(guò)程中由系統(tǒng)固件裝載和執(zhí)行。
系統(tǒng)BIOS的主要功能是初始化硬件組件和加載操作系統(tǒng),其啟動(dòng)過(guò)程通常包括以下幾個(gè)階段:
(1)執(zhí)行可信核心根:系統(tǒng)BIOS可能包括一個(gè)小的固件核心塊——通常稱(chēng)為BIOS引導(dǎo)塊,BIOS引導(dǎo)塊被首先執(zhí)行并能夠驗(yàn)證其他固件組件的完整性。對(duì)于可信計(jì)算應(yīng)用,系統(tǒng)BIOS還可能包含度量可信核心根(CRTM)。
(2)初始化和測(cè)試底層硬件:在啟動(dòng)過(guò)程中,系統(tǒng)BIOS初始化并測(cè)試計(jì)算機(jī)系統(tǒng)硬件的關(guān)鍵件,包括主板、芯片組、內(nèi)存和CPU等。
(3)加載并執(zhí)行附加固件模塊:系統(tǒng)BIOS執(zhí)行固件附加件,擴(kuò)展系統(tǒng)BIOS的能力或初始化啟動(dòng)系統(tǒng)所需的其它硬件組件。這些附加模塊可以存儲(chǔ)在與系統(tǒng) BIOS相同的 flash memory或初始化的硬件設(shè)備(如,視頻卡、局域網(wǎng)卡)中。
(4)選擇引導(dǎo)設(shè)備:配置系統(tǒng)硬件后,系統(tǒng)BIOS搜索引導(dǎo)設(shè)備(如,硬盤(pán)驅(qū)動(dòng)器、光盤(pán)驅(qū)動(dòng)器、USB驅(qū)動(dòng)器),并執(zhí)行存儲(chǔ)在設(shè)備上的引導(dǎo)加載程序。
(5)加載操作系統(tǒng):在 BIOS仍然控制著計(jì)算機(jī)的情況下,引導(dǎo)加載程序開(kāi)始加載和初始化操作系統(tǒng)內(nèi)核。當(dāng)內(nèi)核可用時(shí),將計(jì)算機(jī)系統(tǒng)的主控制權(quán)從系統(tǒng)BIOS傳給操作系統(tǒng)。
另外,系統(tǒng)BIOS加載系統(tǒng)管理中斷(SMI)處理程序并初始化高級(jí)配置和電源接口(ACPI)表及其代碼,為運(yùn)行中的計(jì)算機(jī)系統(tǒng)提供重要的系統(tǒng)管理功能,如電源和散熱管理等。
合理更新系統(tǒng)BIOS的幾種合法機(jī)制包括:
(1)用戶(hù)啟動(dòng)更新:系統(tǒng)和主板制造商通常為用戶(hù)提供能夠更新系統(tǒng)BIOS的實(shí)用程序。今天大多數(shù)廠商提供的工具可以對(duì)用戶(hù)正常運(yùn)行的系統(tǒng)更新系統(tǒng) BIOS。根據(jù)系統(tǒng)上實(shí)現(xiàn)的安全機(jī)制,這些工具可能直接更新系統(tǒng)BIOS或在下次系統(tǒng)重啟時(shí)進(jìn)行更新。
(2)管理更新:計(jì)算機(jī)系統(tǒng)可能具有基于硬件和軟件的代理,允許系統(tǒng)管理員遠(yuǎn)程更新系統(tǒng)BIOS。
(3)回滾:在應(yīng)用BIOS前對(duì)更新進(jìn)行認(rèn)證的BIOS實(shí)現(xiàn)方法也可以在更新過(guò)程中檢查版本號(hào)。在這種情況下,系統(tǒng)BIOS可能進(jìn)行一個(gè)特殊的更新過(guò)程,將安裝的固件回滾到一個(gè)以前安裝的版本,防止攻擊者用具有已知漏洞的固件刷新閃存。
(4)人工恢復(fù):為了從被損壞或發(fā)生故障的系統(tǒng) BIOS中恢復(fù),許多計(jì)算機(jī)系統(tǒng)允許用戶(hù)在啟動(dòng)過(guò)程中,在用戶(hù)親自參與的情況下,用已知良好的版本和配置取代正在使用的系統(tǒng)BIOS。
(5)自動(dòng)恢復(fù):有些計(jì)算機(jī)系統(tǒng)能夠檢測(cè)系統(tǒng) BIOS的損壞,并從主系統(tǒng)BIOS的一個(gè)單獨(dú)存儲(chǔ)位置(如,第二個(gè)閃存芯片,或硬盤(pán)驅(qū)動(dòng)器上的一個(gè)隱藏分區(qū))的備份固件鏡像中恢復(fù)。
為了保證只有真實(shí)、合法的BIOS映像可以存儲(chǔ)在閃存中,需要確保BIOS更新機(jī)制的安全。客戶(hù)端系統(tǒng)通常只有一條更新BIOS的路徑,而服務(wù)器系統(tǒng)可能實(shí)現(xiàn)多種更新機(jī)制,使管理員能夠從不同的環(huán)境更新 BIOS。對(duì)于服務(wù)器系統(tǒng),經(jīng)認(rèn)證的BIOS更新機(jī)制包括以下三種類(lèi)型:
(1)更新機(jī)制1:隨時(shí)可進(jìn)行BIOS更新??梢圆豢紤]服務(wù)器的運(yùn)行狀態(tài)安全進(jìn)行BIOS更新。
(2)更新機(jī)制2:重啟時(shí)進(jìn)行BIOS更新。在服務(wù)器運(yùn)行時(shí)啟動(dòng)BIOS閃存處理,但直到系統(tǒng)重啟時(shí)才對(duì)BIOS閃存進(jìn)行實(shí)際更新。
(3)更新機(jī)制3:重啟時(shí)進(jìn)行BIOS驗(yàn)證。在每次引導(dǎo)程序執(zhí)行前驗(yàn)證BIOS的真實(shí)性,只有通過(guò)認(rèn)證的BIOS才被執(zhí)行。
此外,某些服務(wù)器可能不使用這三個(gè)經(jīng)認(rèn)證的更新機(jī)制,而使用安全本地更新機(jī)制更新系統(tǒng)BIOS。
基本服務(wù)器的體系架構(gòu)類(lèi)似于具有單一BIOS更新機(jī)制的客戶(hù)端PC系統(tǒng)。通常情況下,基本服務(wù)器上的更新可信根(RTU)是系統(tǒng)BIOS的一部分。硬件保護(hù)可以集成使用可信平臺(tái)模塊(TPM)和基于芯片組的鎖定機(jī)制。
RTU是硬件和固件的可信組合,執(zhí)行BIOS安全更新并保持BIOS的完整性。RTU可能具有驗(yàn)證經(jīng)數(shù)字簽名的映像、啟動(dòng)和停止寫(xiě)保護(hù)機(jī)制、將BIOS更新寫(xiě)入閃存、執(zhí)行BIOS恢復(fù)以及更新RTU本身等功能。RTU本質(zhì)上可信的基礎(chǔ)是通過(guò)一個(gè)獨(dú)立的運(yùn)行環(huán)境將破壞RTU功能的風(fēng)險(xiǎn)降到最低,從而保持RTU固有的可信性。RTU的每個(gè)功能組件可以看作特定功能的一個(gè)可信根:
(1)驗(yàn)證組件:驗(yàn)證經(jīng)數(shù)字簽名的映像,決定是否應(yīng)將控制傳給映像。因?yàn)樵摻M件是從已知良好的機(jī)器狀態(tài)進(jìn)入的,所以具有可信的執(zhí)行路徑。驗(yàn)證組件可以用于將可信執(zhí)行擴(kuò)展到缺乏完整性保護(hù)的代碼。
(2)恢復(fù)組件:負(fù)責(zé)將機(jī)器返回到一個(gè)已知的良好狀態(tài)。
(3)完整性組件:負(fù)責(zé)保持映像的完整性。
(4)更新組件:執(zhí)行RTU的安全更新,保持RTU的完整性。
系統(tǒng)BIOS的安全性問(wèn)題可以歸結(jié)為其完整性保護(hù)的問(wèn)題,系統(tǒng)BIOS完整性可能面臨各種不同的攻擊威脅。系統(tǒng)BIOS完整性遇到的第一個(gè)威脅來(lái)自系統(tǒng)通過(guò)供應(yīng)鏈從制造商到用戶(hù)的過(guò)程。在系統(tǒng)BIOS安全到達(dá)用戶(hù)的情況下,在系統(tǒng)的整個(gè)生命周期中系統(tǒng) BIOS完整性面臨的風(fēng)險(xiǎn)可能包括:
(1)用戶(hù)安裝惡意系統(tǒng)BIOS。通常用戶(hù)更新系統(tǒng)BIOS的主要方法是利用BIOS更新工具進(jìn)行BIOS更新操作。在用戶(hù)親自訪問(wèn)計(jì)算機(jī)系統(tǒng)的情況下,通常沒(méi)有什么辦法防止用戶(hù)安裝未經(jīng)批準(zhǔn)的BIOS映像。
(2)惡意軟件修改系統(tǒng)BIOS。惡意軟件利用弱BIOS安全控制或系統(tǒng)BIOS本身的漏洞對(duì)系統(tǒng)BIOS進(jìn)行刷新或修改。通常目的的惡意軟件一般不包含這樣的功能,但是一個(gè)針對(duì)企業(yè)的攻擊可能直接把目標(biāo)指向企業(yè)的系統(tǒng) BIOS。惡意的系統(tǒng)BIOS可能通過(guò)網(wǎng)絡(luò)或利用介質(zhì)傳遞到系統(tǒng)。
(3)系統(tǒng)管理工具對(duì)系統(tǒng)BIOS進(jìn)行攻擊。基于網(wǎng)絡(luò)的系統(tǒng)管理工具可以被攻擊者用來(lái)進(jìn)行企業(yè)范圍內(nèi)系統(tǒng)BIOS的攻擊。例如,假設(shè)一臺(tái)企業(yè)維護(hù)的,用于企業(yè)部署,執(zhí)行系統(tǒng)BIOS更新功能的服務(wù)器受到攻擊,被攻破的服務(wù)器可能將惡意的系統(tǒng)BIOS傳播到整個(gè)企業(yè)的計(jì)算機(jī)系統(tǒng)。
(4)將系統(tǒng)BIOS回滾到脆弱的版本。這是一種特別隱秘的攻擊,因?yàn)榇藭r(shí)的系統(tǒng)BIOS雖然是真實(shí)的(即來(lái)自于制造商的),但它存在漏洞,是很脆弱的,很容易受到攻擊。
對(duì)于服務(wù)器,同樣容易受到威脅客戶(hù)端系統(tǒng)相同形式的BIOS攻擊。另外,服務(wù)器還將面臨以下方面的風(fēng)險(xiǎn):
(1)更新機(jī)制存在漏洞。服務(wù)器具有多個(gè) BIOS更新機(jī)制,每個(gè)機(jī)制都可能存在漏洞,更新機(jī)制之間的交互還可能帶來(lái)額外的安全漏洞。
(2)管理網(wǎng)絡(luò)缺乏必要保護(hù)。服務(wù)器中的服務(wù)處理器(SP)擁有更高的權(quán)限來(lái)執(zhí)行系統(tǒng)管理,其中可能包括對(duì)BIOS的修改。雖然 SP可以通過(guò)一個(gè)獨(dú)立的通信通道控制,但對(duì)此通道未經(jīng)授權(quán)的訪問(wèn)將對(duì)服務(wù)器造成很大的風(fēng)險(xiǎn)。通常對(duì)數(shù)據(jù)網(wǎng)絡(luò)有許多專(zhuān)門(mén)的安全保護(hù),但對(duì)管理網(wǎng)絡(luò)可能缺乏必要的審查和保護(hù)。
(3)BIOS備份被惡意修改。如果安全保護(hù)不充分,攻擊者很容易對(duì)備份在服務(wù)器上的BIOS映像實(shí)施改寫(xiě)攻擊。對(duì)BIOS備份修改后,攻擊者可以采用相應(yīng)的方式使服務(wù)器重新啟動(dòng)被感染的BIOS備份映像。
BIOS安全是安全系統(tǒng)的一個(gè)重要組成部分。作為引導(dǎo)過(guò)程中第一個(gè)執(zhí)行的代碼,系統(tǒng)BIOS被系統(tǒng)中的硬件和軟件組件隱含認(rèn)為是可信的。系統(tǒng)BIOS風(fēng)險(xiǎn)緩解的主要工作是防止攻擊者對(duì)系統(tǒng)BIOS進(jìn)行未經(jīng)授權(quán)的修改,保證其完整性。客戶(hù)端系統(tǒng)的安全風(fēng)險(xiǎn)緩解措施——BIOS更新認(rèn)證、閃存區(qū)域完整性、安全本地更新和防止旁路,直接適用于服務(wù)器級(jí),其目的是減輕針對(duì)系統(tǒng)BIOS的高級(jí)持續(xù)性攻擊的風(fēng)險(xiǎn)。另外,由于服務(wù)器體系結(jié)構(gòu)的復(fù)雜性和服務(wù)器具有的BIOS多更新路徑的特點(diǎn),還應(yīng)對(duì)BIOS映像進(jìn)行授權(quán)和認(rèn)證,確保BIOS映像的完整性和來(lái)源的正確性。
通過(guò)保護(hù)BIOS更新機(jī)制的安全,確保在BIOS被配置后能夠保持其完整性。安全的BIOS更新機(jī)制應(yīng)包括:
(1)一個(gè)驗(yàn)證BIOS更新真實(shí)性和完整性的過(guò)程;
(2)一個(gè)確保不能從安全更新過(guò)程之外修改BIOS的機(jī)制。
通過(guò)認(rèn)證來(lái)驗(yàn)證BIOS更新映像是否由真實(shí)的來(lái)源產(chǎn)生且沒(méi)有被改變。
3.1.1 BIOS更新認(rèn)證
經(jīng)認(rèn)證的BIOS更新機(jī)制采用數(shù)字簽名確保BIOS更新映像的真實(shí)性。使用經(jīng)認(rèn)證的BIOS更新機(jī)制更新BIOS,應(yīng)有一個(gè)RTU,其中包含一個(gè)簽名驗(yàn)證算法和密鑰存儲(chǔ),密鑰存儲(chǔ)應(yīng)包括驗(yàn)證BIOS更新映像簽名所需的公鑰或合法的密鑰加密哈希值。密鑰存儲(chǔ)和簽名驗(yàn)證算法應(yīng)以保護(hù)方式存儲(chǔ)在計(jì)算機(jī)系統(tǒng)上,并保證只能通過(guò)經(jīng)認(rèn)證的更新機(jī)制或安全本地更新機(jī)制進(jìn)行修改。在RTU內(nèi)存儲(chǔ)空間有限的情況下,BIOS更新映像的驗(yàn)證可以分兩個(gè)階段建立:(1)驗(yàn)證所提供公鑰的加密哈希值,(2)利用所提供的公鑰驗(yàn)證BIOS更新的簽名。
經(jīng)認(rèn)證的更新機(jī)制應(yīng)確保BIOS更新映像已經(jīng)過(guò)數(shù)字簽名,并且可以在更新BIOS前使用RTU中的密鑰驗(yàn)證數(shù)字簽名?;謴?fù)機(jī)制也應(yīng)使用經(jīng)認(rèn)證的更新機(jī)制,或滿(mǎn)足安全本地更新的要求。RTU應(yīng)能防止未授權(quán)將BIOS更新到一個(gè)較早的真實(shí)版本。例如,通過(guò)驗(yàn)證確保更新BIOS映像的版本號(hào)高于當(dāng)前使用BIOS映像的版本號(hào)。
3.1.2 安全本地更新
BIOS可以選擇使用安全本地更新機(jī)制代替經(jīng)認(rèn)證的更新機(jī)制對(duì)系統(tǒng)BIOS進(jìn)行更新。安全本地更新機(jī)制,應(yīng)僅用于加載第一個(gè)BIOS映像或從不能使用經(jīng)認(rèn)證的更新機(jī)制對(duì)損壞的系統(tǒng)BIOS進(jìn)行修復(fù)的情況。安全本地更新機(jī)制應(yīng)通過(guò)要求管理員本人親自參與服務(wù)器更新操作,確保BIOS更新映像的真實(shí)性和完整性,降低遠(yuǎn)程攻擊者執(zhí)行惡意代碼將BIOS映像改寫(xiě)為一個(gè)虛假系統(tǒng)BIOS映像的風(fēng)險(xiǎn)。進(jìn)行安全本地更新,可以通過(guò)要求在允許更新系統(tǒng)BIOS前輸入管理員口令或解鎖物理鎖(如,主板上的跳線(xiàn))實(shí)現(xiàn)進(jìn)一步的安全保護(hù)。
3.1.3 固件完整性保護(hù)
為了防止執(zhí)行虛假或惡意的BIOS代碼,在啟動(dòng)過(guò)程中,應(yīng)保持系統(tǒng)BIOS驗(yàn)證和系統(tǒng)BIOS執(zhí)行之間系統(tǒng)BIOS的完整性。
為了防止在經(jīng)認(rèn)證的BIOS更新過(guò)程之外意外或惡意修改系統(tǒng)BIOS,應(yīng)采用適當(dāng)?shù)臋C(jī)制保護(hù)系統(tǒng)BIOS,確保不能從經(jīng)認(rèn)證的BIOS更新過(guò)程之外修改BIOS。確保系統(tǒng)BIOS完整性的保護(hù)機(jī)制,應(yīng)在 RTU外部的代碼執(zhí)行之前引用。BIOS完整性保護(hù)應(yīng)通過(guò)硬件機(jī)制強(qiáng)制執(zhí)行,并只能通過(guò)合法的機(jī)制(如,系統(tǒng)復(fù)位)停止。
如果可以在經(jīng)認(rèn)證的 BIOS更新機(jī)制之外修改系統(tǒng)BIOS(如,無(wú)法鎖定閃存),則應(yīng)在每個(gè)更新前使用RTU驗(yàn)證組件認(rèn)證BIOS映像的完整性。如果認(rèn)證失敗,RTU應(yīng)將其自動(dòng)恢復(fù)到受保護(hù)的真實(shí) BIOS。自動(dòng)恢復(fù)機(jī)制可降低拒絕服務(wù)攻擊(如,攻擊者可能加載一個(gè)不真實(shí)的BIOS,將系統(tǒng)置于無(wú)法開(kāi)機(jī)的狀態(tài))的風(fēng)險(xiǎn)。
應(yīng)保護(hù)每個(gè) RTU避免來(lái)自經(jīng)認(rèn)證的更新機(jī)制外部的修改。確保RTU完整性的保護(hù)機(jī)制應(yīng)在RTU外部的代碼執(zhí)行前引入。RTU完整性保護(hù)應(yīng)通過(guò)硬件機(jī)制強(qiáng)制執(zhí)行,并只能通過(guò)合法的機(jī)制(如,系統(tǒng)復(fù)位)停止。
3.1.4 防止旁路
除了通過(guò)用戶(hù)親自參與的安全本地更新機(jī)制外,經(jīng)認(rèn)證的BIOS更新機(jī)制應(yīng)是對(duì)系統(tǒng)BIOS進(jìn)行修改的唯一機(jī)制。系統(tǒng)及相應(yīng)的系統(tǒng)組件和固件的設(shè)計(jì)應(yīng)確保,除了用戶(hù)親自參與的安全本地更新機(jī)制外,不存在繞過(guò)經(jīng)認(rèn)證的更新機(jī)制安裝和執(zhí)行未經(jīng)認(rèn)證的BIOS代碼的方法。任何能夠繞過(guò)經(jīng)認(rèn)證的更新機(jī)制的方法都可能形成漏洞,允許惡意軟件修改系統(tǒng)BIOS或用非法BIOS映像覆蓋系統(tǒng)閃存。
經(jīng)認(rèn)證的更新機(jī)制應(yīng)是對(duì)RTU進(jìn)行修改的唯一機(jī)制。除了用戶(hù)親自參與的安全本地更新機(jī)制外,不應(yīng)存在繞過(guò)經(jīng)認(rèn)證的更新機(jī)制修改RTU的方法。
為了獲得對(duì)性能和管理的改進(jìn),計(jì)算機(jī)平臺(tái)實(shí)現(xiàn)的功能可以讓系統(tǒng)部件能夠直接訪問(wèn) RTU或系統(tǒng) BIOS,具有對(duì)BIOS閃存的讀訪問(wèn)權(quán)限,但應(yīng)防止系統(tǒng)組件直接修改系統(tǒng)BIOS。
一個(gè)服務(wù)器可以實(shí)現(xiàn)三個(gè)典型安全BIOS更新機(jī)制中的一個(gè)或多個(gè),實(shí)施的方法取決于平臺(tái)上的硬件支持。這些方法的區(qū)別在于,什么時(shí)候可以建立一個(gè)RTU,并且閃存安全鎖定機(jī)制可用,以防止意外或惡意修改BIOS閃存中存儲(chǔ)的代碼和數(shù)據(jù)。所有的機(jī)制都依賴(lài)于一個(gè)數(shù)字簽名的BIOS更新映像,以及使用公鑰驗(yàn)證該映像簽名的RTU驗(yàn)證組件的能力。
3.2.1 更新機(jī)制1:隨時(shí)可進(jìn)行BIOS更新
更新機(jī)制 1可以在系統(tǒng)運(yùn)行時(shí)使用 SMI處理程序、SP或其他安全方法更新BIOS閃存,而不要求重啟系統(tǒng)。新的BIOS在系統(tǒng)重啟時(shí)執(zhí)行。執(zhí)行此BIOS更新機(jī)制要求:
(1)按照BIOS更新認(rèn)證要求對(duì)BIOS更新映像進(jìn)行數(shù)字簽名。
(2)運(yùn)行時(shí)可用一個(gè)RTU更新BIOS閃存。
(3)存在一個(gè)鎖定機(jī)制,使得只有RTU可以寫(xiě)入BIOS閃存。
(4)將數(shù)字簽名的BIOS更新映像傳給一個(gè)RTU,RTU有能力將BIOS更新映像存儲(chǔ)在不允許對(duì)BIOS更新映像進(jìn)行未授權(quán)寫(xiě)訪問(wèn)的位置。
實(shí)施此機(jī)制的一般步驟是:
(1)將數(shù)字簽名的BIOS更新映像傳送給RTU。
(2)RTU將BIOS更新映像存儲(chǔ)在只能被RTU寫(xiě)入的位置。
(3)RTU驗(yàn)證BIOS更新映像的真實(shí)性。
(4)RTU將通過(guò)認(rèn)證的BIOS更新映像寫(xiě)入BIOS閃存。
(5)RTU依據(jù)固件完整性保護(hù)要求,確保在將控制傳給RTU外部的代碼(如,擴(kuò)展ROM)之前鎖定BIOS閃存。
此安全更新機(jī)制能夠防止將虛假的代碼寫(xiě)入 BIOS閃存,所以在啟動(dòng)過(guò)程中沒(méi)有必要驗(yàn)證BIOS。
3.2.2 更新機(jī)制2:重啟時(shí)進(jìn)行BIOS更新
更新機(jī)制2在服務(wù)器運(yùn)行時(shí)啟動(dòng)BIOS閃存處理,但是,直到服務(wù)器重新啟動(dòng)時(shí)才進(jìn)行實(shí)際的 BIOS閃存更新。此BIOS更新機(jī)制能夠防止將虛假的代碼被寫(xiě)入BIOS閃存。執(zhí)行此BIOS更新機(jī)制要求:
(1)按照BIOS更新認(rèn)證要求對(duì)BIOS更新映像進(jìn)行數(shù)字簽名。
(2)存在一個(gè)鎖定機(jī)制,使得運(yùn)行時(shí)只有RTU可以寫(xiě)入BIOS閃存。
(3)RTU在系統(tǒng)啟動(dòng)期間可用于更新BIOS閃存。系統(tǒng)重啟時(shí)在更新BIOS閃存之前執(zhí)行RTU,RTU在閃存發(fā)生任何變化前驗(yàn)證BIOS更新映像的數(shù)字簽名。
(4)存在一個(gè)內(nèi)容受保護(hù)的存儲(chǔ)位置,運(yùn)行時(shí)可以緩存簽名的BIOS更新映像,系統(tǒng)重啟時(shí),在更新BIOS閃存前,RTU可以訪問(wèn)它來(lái)驗(yàn)證BIOS更新映像的數(shù)字簽名。
實(shí)施此機(jī)制的一般步驟是:
(1)將數(shù)字簽名的 BIOS更新映像緩存在服務(wù)器重啟時(shí)內(nèi)容受保護(hù)的存儲(chǔ)位置。
(2)服務(wù)器重啟時(shí)將執(zhí)行權(quán)傳給RTU。
(3)RTU驗(yàn)證BIOS更新映像的真實(shí)性并將通過(guò)認(rèn)證的更新寫(xiě)入BIOS閃存。
(4)在執(zhí)行不可信代碼前,啟用BIOS閃存鎖定機(jī)制。
3.2.3 更新機(jī)制3:?jiǎn)?dòng)時(shí)進(jìn)行BIOS驗(yàn)證
更新機(jī)制3不存在運(yùn)行時(shí)保護(hù)BIOS閃存的鎖定機(jī)制或因其局限性,不能防止RTU以外的實(shí)體寫(xiě)入BIOS閃存,可能發(fā)生對(duì) BIOS閃存的惡意更新。在每次啟動(dòng)時(shí)執(zhí)行 BIOS前應(yīng)對(duì)BIOS閃存內(nèi)容進(jìn)行認(rèn)證,如果認(rèn)證確定BIOS閃存是不真實(shí)的,啟動(dòng)自動(dòng)恢復(fù)過(guò)程,且不執(zhí)行不真實(shí)的 BIOS更新。執(zhí)行此BIOS更新機(jī)制要求:
(1)按照BIOS更新認(rèn)證要求對(duì)BIOS更新映像進(jìn)行數(shù)字簽名。
(2)在BIOS更新映像寫(xiě)入閃存之前驗(yàn)證其數(shù)字簽名。
(3)按固件完整性保護(hù)要求,RTU能夠在執(zhí)行之前對(duì)系統(tǒng)BIOS進(jìn)行驗(yàn)證。RTU驗(yàn)證組件在啟動(dòng)時(shí)執(zhí)行并在BIOS更新代碼執(zhí)行之前進(jìn)行驗(yàn)證。
(4)如果確定系統(tǒng)BIOS不真實(shí),RTU啟動(dòng)自動(dòng)恢復(fù)過(guò)程將其恢復(fù)到受保護(hù)并且是真實(shí)的系統(tǒng)BIOS。
實(shí)施此機(jī)制的一般步驟是:
(1)驗(yàn)證數(shù)字簽名的BIOS映像,并將其寫(xiě)入BIOS閃存。
(2)開(kāi)機(jī)時(shí)將執(zhí)行權(quán)傳給RTU,RTU驗(yàn)證BIOS的真實(shí)性。
(3)如果BIOS閃存是真實(shí)的,將執(zhí)行權(quán)傳給BIOS。
(4)如果BIOS閃存是虛假的,RTU啟動(dòng)一個(gè)恢復(fù)過(guò)程,將其恢復(fù)到受保護(hù)并且是真實(shí)的BIOS版本。
服務(wù)器與客戶(hù)機(jī)之間的主要區(qū)別是在服務(wù)器系統(tǒng)中包括一個(gè)服務(wù)處理器(SP)。SP在管理和監(jiān)視服務(wù)器的過(guò)程中起著關(guān)鍵的作用,并承擔(dān)者更新系統(tǒng)BIOS的角色。
SP作為可信根:服務(wù)器中的SP可能具有直接更新BIOS閃存以及本身的閃存或其它存儲(chǔ)介質(zhì)的能力,某些或全部SP環(huán)境可用作系統(tǒng)BIOS的RTU。為了保持服務(wù)器固件的完整性,必須保護(hù)SP的執(zhí)行環(huán)境,防止惡意代碼更新 BIOS或SP閃存。根據(jù)BIOS安全原則,SP器應(yīng)滿(mǎn)足下列要求:
(1)通過(guò)經(jīng)認(rèn)證的更新機(jī)制更新SP代碼、加密密鑰和存儲(chǔ)在SP閃存中的靜態(tài)數(shù)據(jù)。
(2)控制SP環(huán)境,保證只有經(jīng)過(guò)認(rèn)證的代碼可以在SP上執(zhí)行。
(3)對(duì)與SP交互的用戶(hù)進(jìn)行授權(quán)。
SP不作為可信根:一些具有 SP的服務(wù)器可能不把 SP用作RTU 進(jìn)行BIOS更新。為了確保SP環(huán)境無(wú)法繞過(guò)BIOS保護(hù),系統(tǒng)中的SP不應(yīng)直接對(duì)BIOS閃存進(jìn)行寫(xiě)訪問(wèn)。此外,SP不應(yīng)在主機(jī)操作系統(tǒng)控制范圍之外直接并且無(wú)限制地訪問(wèn)服務(wù)器上的系統(tǒng)內(nèi)存,防止SP干擾合法的更新過(guò)程。
[1]王斌等.BIOS級(jí)身份認(rèn)證系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn)[J].北京:計(jì)算機(jī)工程與設(shè)計(jì).2010.
[2]王越峰等.一種基于主板 BIOS的身份認(rèn)證方案及實(shí)現(xiàn)[J].北京:中國(guó)教育信息化.2009.
[3]楊培等.BIOS安全防護(hù)技術(shù)研究[J].北京:計(jì)算機(jī)工程與設(shè)計(jì).2008.
[4]李晨光.揭秘 TPM 安全芯片技術(shù)及加密應(yīng)用[OL].IT168.2012.
[5]TCG Specification Architecture Overview Revision 1.4 2nd[S].August 2007.
[6]NIST SP 800-147,B IOS Protection Guidelines[S].April 2011.
[7]NIST SP 800-147B(Draft).BIOS Protection Guidelines for Servers(Draft)[S].July 2012.
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2013年3期