摘 要: 針對(duì)BIOS面臨的日益嚴(yán)重的安全威脅,提出對(duì)BIOS進(jìn)行安全更新和完整性檢測的方案。通過對(duì)Flash寫信號(hào)的檢測以及對(duì)BIOS的非旁路簽名驗(yàn)簽機(jī)制,實(shí)現(xiàn)對(duì)其的安全更新;通過受物理保護(hù)的BootBlock對(duì)MainBlock的驗(yàn)簽機(jī)制,實(shí)現(xiàn)對(duì)MainBlock的完整性檢測和恢復(fù)。該安全更新及保護(hù)系統(tǒng)能夠有效地阻止及檢測到惡意軟件對(duì)BIOS的修改;可以對(duì)BIOS進(jìn)行更新或恢復(fù),保證系統(tǒng)的正常運(yùn)行,達(dá)到對(duì)BIOS進(jìn)行保護(hù)的目
關(guān)鍵詞: BIOS安全更新;非旁路;簽名驗(yàn)簽;完整性檢測;BIOS保護(hù)
0 引言
信息安全關(guān)系到國家安全和社會(huì)穩(wěn)定[1]。傳統(tǒng)信息安全機(jī)制多建立在操作系統(tǒng)軟件層之上,已不能滿足信息系統(tǒng)發(fā)展需求,計(jì)算機(jī)系統(tǒng)安全需要進(jìn)一步延伸到固件層甚至硬件層。BIOS(Basic Input/Output System)固件是計(jì)算機(jī)系統(tǒng)中基礎(chǔ)的底層軟件,是實(shí)現(xiàn)自主、可信、可控的信息安全的關(guān)鍵一環(huán),其安全可信直接影響整個(gè)計(jì)算機(jī)系統(tǒng)的安全度。
計(jì)算技術(shù)的發(fā)展和應(yīng)用需求導(dǎo)致目前存儲(chǔ)BIOS系統(tǒng)的芯片普遍采用Flash芯片。Flash芯片的使用為BIOS系統(tǒng)帶來兩個(gè)突出變化:(1)存儲(chǔ)BIOS的芯片容量增加;(2)在操作系統(tǒng)環(huán)境下能夠以純軟件方式讀寫B(tài)IOS。BIOS的實(shí)現(xiàn)技術(shù)也由傳統(tǒng)方式發(fā)展到UEFI方式。這些變化導(dǎo)致攻擊BIOS系統(tǒng)的技術(shù)逐步成熟,使第三方惡意者向BIOS中植入惡意代碼、病毒、木馬等成為可能[2]。
從1998年開始,針對(duì)BIOS系統(tǒng)的公開性的安全事件和威脅時(shí)有發(fā)生。1998年7月開始爆發(fā)的CIH病毒實(shí)施了對(duì)BIOS的攻擊,造成全球大量PC不能使用。2006年全球Black Hat會(huì)議上,英國Next-Generation公司的首席安全顧問John Heasman闡述了一種在BIOS中隱藏rootkit惡意代碼,并使之在OS運(yùn)行過程中生效的技術(shù)。2011年的Mebromi是一個(gè)新的針對(duì)BIOS的rootkit,它感染計(jì)算機(jī)主板的BIOS芯片和硬盤MBR(主引導(dǎo)區(qū)),再控制Windows系統(tǒng)文件加載惡意代碼,使受害用戶無論重裝系統(tǒng)、格式化硬盤,甚至換掉硬盤都無法將其徹底清除[3]。
由以上分析可知,BIOS系統(tǒng)遭受到威脅攻擊時(shí),會(huì)造成計(jì)算機(jī)系統(tǒng)的徹底崩潰,或?qū)е掠?jì)算機(jī)系統(tǒng)被惡意者從底層控制。針對(duì)越來越嚴(yán)重的BIOS安全威脅,國內(nèi)出現(xiàn)了一些對(duì)BIOS進(jìn)行保護(hù)的研究[4-5]。而美國將其上升到國家安全角度,出臺(tái)了一系列的規(guī)范文件,要求加強(qiáng)計(jì)算機(jī)BIOS固件的安全性。2011年,美國的NIST(National Institute of Standards and Technology U.S.Department of Commerce)發(fā)布了800-147文件和800-155文件,提出對(duì)BIOS保護(hù)和完整性檢測的要求。美國的DOD(Department of Defense)CIO(Chief Information Officer)備忘錄(適用于DOD信息系統(tǒng))要求:2012年1月1日之后發(fā)布征集的PC客戶端系統(tǒng)需要符合NIST 800-147規(guī)范;符合800-147的3.1和3.2的要求已經(jīng)包含在修改過的DOD Instruction 8500.2的“Information Assurance(IA)Implementation”中。美國的DHS(Department of Human Service)備忘錄(適用于聯(lián)邦政府部門和代理)推薦2012年10月1日之后的PC終端系統(tǒng)的新的采購符合800-147的要求[6-7]。
參考文獻(xiàn)[4]僅僅通過設(shè)置標(biāo)志位來區(qū)分惡意軟件與合法的BIOS,此種手段很容易被偽造,安全性低;參考文獻(xiàn)[5]設(shè)計(jì)了一種全新的可信計(jì)算模塊,并通過改變計(jì)算機(jī)上電啟動(dòng)順序?qū)崿F(xiàn)對(duì)BIOS可信度量的保護(hù),但并沒有提出安全更新BIOS的方法。本文采用硬件、固件和OS上層軟件三方相結(jié)合的方法,設(shè)計(jì)了一種BIOS安全更新及保護(hù)系統(tǒng),做到以下幾個(gè)方面:(1)采取有效措施使BIOS在方便更新的前提下,保證其不被非授權(quán)地修改;(2)當(dāng)BIOS被惡意修改時(shí),可以通過驗(yàn)簽機(jī)制檢測到;(3)當(dāng)BIOS被惡意修改或者崩潰時(shí),可以進(jìn)行恢復(fù),保證系統(tǒng)的正常運(yùn)行。
1 系統(tǒng)總體設(shè)計(jì)
本BIOS安全保護(hù)系統(tǒng)由硬件、BIOS固件及OS上層的軟件工具組成。
(1)硬件平臺(tái)提供對(duì)Flash芯片部分存儲(chǔ)區(qū)域的硬件保護(hù)機(jī)制,該保護(hù)還可通過硬件主板上的跳線選擇使能/禁止,并由受保護(hù)的程序模塊實(shí)現(xiàn)對(duì)BIOS的完整性檢測和可信恢復(fù)。硬件平臺(tái)還提供將Flash寫信號(hào)與特權(quán)中斷信號(hào)源連接的機(jī)制,當(dāng)CPU檢測到Flash寫信號(hào)時(shí),即產(chǎn)生特權(quán)模式下的中斷信號(hào),執(zhí)行特定的中斷處理程序,保證BIOS寫過程通過本文設(shè)計(jì)的更新機(jī)制實(shí)現(xiàn),而不被繞過。
?。?)固件層的BIOS除了實(shí)現(xiàn)初始化硬件平臺(tái)及引導(dǎo)OS的基礎(chǔ)功能外,還通過中斷處理程序?qū)崿F(xiàn)BIOS的安全更新功能。它通過簽名驗(yàn)簽機(jī)制檢測待更新的數(shù)據(jù),如果合法則執(zhí)行更新過程,如果不合法則停止更新。
(3)OS上層的BIOS生成工具,用于生成可更新的具有簽名的合法的BIOS鏡像包;BIOS更新工具,與固件層BIOS中的中斷處理程序配合實(shí)現(xiàn)對(duì)BIOS的安全更新。
支持BIOS安全更新及保護(hù)系統(tǒng)的計(jì)算機(jī)正常工作流程如圖1所示。
2 BIOS安全更新保護(hù)方法
要實(shí)現(xiàn)安全更新保證BIOS不被非授權(quán)地修改,首先需要保證本文設(shè)計(jì)的安全更新機(jī)制不會(huì)被惡意軟件繞過。本文從硬件上將Flash寫信號(hào)與特權(quán)中斷的信號(hào)源相連接,同時(shí)通過在BIOS中的配置保證Flash寫信號(hào)必定會(huì)產(chǎn)生中斷,同時(shí)這種特權(quán)模式中斷不能被關(guān)閉。
2.1 進(jìn)行硬件配置保證非旁路性
硬件配置BIOS保護(hù)的流程描述如下:
?。?)開機(jī),進(jìn)行硬件初始化;
?。?)初始化特權(quán)中斷處理程序;
?。?)對(duì)計(jì)算機(jī)系統(tǒng)芯片組的Flash寫使能、特權(quán)中斷等配置項(xiàng)執(zhí)行相關(guān)設(shè)定,使Flash被寫入時(shí),該芯片組硬件能產(chǎn)生一個(gè)特權(quán)中斷信號(hào);
?。?)使能Flash的寫保護(hù);
?。?)配置特權(quán)中斷相關(guān)位,禁止惡意軟件獲取特權(quán)中斷產(chǎn)生及執(zhí)行的特權(quán);
?。?)完成配置,啟動(dòng)OS。
2.2 對(duì)BIOS的安全更新及保護(hù)
由于Flash寫信號(hào)與特權(quán)中斷源相連接,當(dāng)通過OS上的BIOS更新工具或其他惡意軟件產(chǎn)生寫Flash動(dòng)作時(shí),便會(huì)產(chǎn)生中斷,所有的特權(quán)中斷處理程序都位于BIOS中。通過BIOS中的安全更新功能模塊中的中斷處理程序檢測是否對(duì)BIOS所在的Flash有寫入請(qǐng)求,如果有則用簽名驗(yàn)簽機(jī)制檢測待寫入的數(shù)據(jù)是否為合法數(shù)據(jù)。根據(jù)檢測結(jié)果執(zhí)行不同的程序分支。
在對(duì)BIOS鏡像更新之前,需要用BIOS生成工具對(duì)其進(jìn)行簽名。帶有簽名的BIOS鏡像生成流程如圖2所示。
生成的BIOS鏡像包由原有BIOS鏡像和簽名相關(guān)信息兩部分組成。用戶使用裝有本BIOS安全更新及保護(hù)系統(tǒng)的計(jì)算機(jī)上的BIOS更新工具與固件層BIOS中的安全更新功能模塊實(shí)現(xiàn)對(duì)BIOS鏡像包的安全更新,該計(jì)算機(jī)就可以正常使用了。
當(dāng)惡意軟件試圖非法修改BIOS時(shí),固件層的BIOS安全更新功能模塊檢測出其非法操作,則不進(jìn)行Flash寫入并報(bào)警提示。
BIOS安全更新及保護(hù)執(zhí)行流程如圖3所示。
3 BIOS完整性檢測與恢復(fù)方法
計(jì)算機(jī)開機(jī)上電,首先由受硬件物理保護(hù)的程序模塊對(duì)BIOS進(jìn)行完整性檢測(使用公鑰對(duì)BIOS鏡像進(jìn)行驗(yàn)簽),一旦BIOS被惡意修改,則其完整性檢測不通過,本BIOS安全更新及保護(hù)系統(tǒng)便會(huì)自動(dòng)執(zhí)行BIOS恢復(fù)。進(jìn)行完整性檢測與恢復(fù)的流程如圖4所示。
4 BIOS安全更新及保護(hù)系統(tǒng)的實(shí)現(xiàn)
BIOS安全更新及防護(hù)系統(tǒng)的硬件實(shí)現(xiàn)有多種方式,本文采用的方式為:將BIOS分成兩部分,BootBlock和MainBlock。采用硬件跳線方式物理保護(hù)BootBlock程序所在的Flash芯片部分區(qū)域。開機(jī)上電后,BootBlock先執(zhí)行,初始化最基本的平臺(tái)硬件,并對(duì)MainBlock進(jìn)行完整性檢測。當(dāng)對(duì)MainBlock完整性檢測通過時(shí),系統(tǒng)繼續(xù)啟動(dòng)并引導(dǎo)OS,當(dāng)完整性檢測失敗時(shí),由BootBlock實(shí)現(xiàn)對(duì)MainBlock的可信恢復(fù)。平時(shí)機(jī)器使用時(shí),BootBlock不能用軟件的方式寫入,而MainBlock部分可隨時(shí)使用本文設(shè)計(jì)的安全更新及保護(hù)系統(tǒng)進(jìn)行升級(jí)和保護(hù)。當(dāng)BootBlock部分需要更新升級(jí)時(shí),需要由管理員在現(xiàn)場改變物理跳線的連接方式,使得BootBlock可以通過軟件的方式進(jìn)行更新升級(jí)。
對(duì)已有計(jì)算機(jī)主板硬件改動(dòng)最小的硬件連接架構(gòu)設(shè)計(jì)如圖5所示。
圖5中的BIOS備份設(shè)備可以是光盤或U盤等通用存儲(chǔ)設(shè)備。與普通的計(jì)算機(jī)電路相比,其硬件實(shí)現(xiàn)方式只增加了一個(gè)轉(zhuǎn)換電路。該轉(zhuǎn)換電路的功能是實(shí)現(xiàn)Flash與系統(tǒng)特權(quán)中斷信號(hào)(例如X86的SMI)源的連接,以及通過外接跳線實(shí)現(xiàn)對(duì)Flash芯片全部或部分塊的物理保護(hù)的使能/禁止。
5 結(jié)論
隨著Flash芯片技術(shù)和UEFI技術(shù)的發(fā)展,BIOS所受的安全威脅問題日趨嚴(yán)重。本文采用硬件、固件和OS上層軟件三方相結(jié)合的方法,設(shè)計(jì)了一種BIOS安全更新及保護(hù)系統(tǒng)。通過對(duì)Flash寫信號(hào)的檢測以及對(duì)BIOS的非旁路簽名驗(yàn)簽機(jī)制,實(shí)現(xiàn)其安全更新;通過受物理保護(hù)的BootBlock對(duì)MainBlock的驗(yàn)簽機(jī)制,實(shí)現(xiàn)對(duì)MainBlock的完整性檢測和恢復(fù)。該系統(tǒng)能夠做到:對(duì)BIOS進(jìn)行有授權(quán)的更新,有效阻止惡意軟件對(duì)BIOS的修改,并采用硬件保護(hù)該機(jī)制不被惡意軟件繞過;對(duì)BIOS進(jìn)行完整性檢測,保證BIOS自身代碼和數(shù)據(jù)的完整性,保證BIOS系統(tǒng)的執(zhí)行代碼只來自可信任的BIOS廠商;由于不可預(yù)知的故障或攻擊導(dǎo)致BIOS系統(tǒng)部分完整性遭到破壞時(shí),能夠提供安全有效的檢測機(jī)制和失敗自恢復(fù)機(jī)制。
參考文獻(xiàn)
[1] 沈昌祥,張煥國,馮登國,等.信息安全綜述[J].中國科學(xué)E輯:信息科學(xué),2007,37(2):129-150(Ch).
[2] 周振柳.計(jì)算機(jī)固件安全技術(shù)[M].北京:清華大學(xué)出版社,2012.
[3] 楊培,吳灝,金然.BIOS安全防護(hù)技術(shù)研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(15):3840-3842,3914.
[4] 李永富.保護(hù)BIOS免于被病毒破壞的方法[P].中國:00103400.6,2003-09-10.
[5] 張興,毛軍捷,馬朝斌,等.一種對(duì)BIOS進(jìn)行保護(hù)的可信計(jì)算系統(tǒng)及其應(yīng)用方法[P].中國:200810111682.8,2010-06-23.
[6] NIST. BIOS Protection Guidelines, 800-147[Z]. 2011.
[7] NIST. BIOS Integrity Measurement Guidelines, 800-155[Z]. 2011.