獵殺暗影:固件安全戰(zhàn)爭與 Intel ME 的隱秘帝國
2017年,一群黑客在俄羅斯實驗室里發(fā)現(xiàn)了一個驚人的秘密——Intel處理器內(nèi)部藏著一個完整的操作系統(tǒng),它運行在比Windows、Linux更深的層級,甚至能在電腦關(guān)機時繼續(xù)工作。
這不是科幻小說,而是Intel ME(管理引擎)——一個被設(shè)計成“不可關(guān)閉”的硬件級后門。從2009年開始,全球黑客、安全研究員和開源社區(qū)發(fā)起了一場長達十年的“硬件解放戰(zhàn)爭”,他們逆向工程、破解固件、甚至找到NSA留下的神秘開關(guān)……
這場戰(zhàn)斗,關(guān)乎每一臺電腦的終極控制權(quán)。
一、Intel ME的技術(shù)威脅與特權(quán)層級
Intel Management Engine(ME)是x86芯片組中獨立運行的子系統(tǒng),自2006年引入后逐漸成為安全領(lǐng)域的焦點。
ME運行在比操作系統(tǒng)內(nèi)核(Ring 0)更底層的“Ring -3”特權(quán)層級,擁有完全獨立的硬件和軟件堆棧,可執(zhí)行遠(yuǎn)程管理、加密等敏感操作。更危險的是,它的代碼完全閉源,行為像一個"黑箱"。
1. 特權(quán)層級定義
特權(quán)層級模型由ITL(Invisible Things Lab)提出,目的是為了更好的讓社區(qū)理解特權(quán)等級權(quán)限的高低。
ITL 把操作系統(tǒng)內(nèi)核稱為Ring 0,Hypervisor是Ring -1(VM層的持久化可以和Ring 0的完全對應(yīng)),UEFI/SMM是Ring -2(在通常情況下,標(biāo)準(zhǔn)的Ring 0(e.g:頁表隔離)和Ring -1(影子頁表,EPT,芯片組IOMMU/Vt-d)的防護機制對于Ring -2幾乎沒用),而Intel ME則被看作Ring -3。
ITL(Invisible Things Lab)提出的特權(quán)層級模型。
二、Intel ME早期漏洞披露
2009年的Blackhat會議上ITL的Rafal Wojtczuk和Alexander Tereshkin公開展示了通過向特定DMA內(nèi)存注入的AMT/ME漏洞,這是第一次揭露Ring -3 rootkit的可能。當(dāng)時Intel還在大力推廣TPM安全芯片,這一漏洞直接暴露了ME的巨大風(fēng)險。
后續(xù)也不斷有研究人員從各個技術(shù)層面對Intel ME的一些代碼模塊特別是AMT進行分析,陸續(xù)爆出一些漏洞和潛在的安全風(fēng)險,但并未引起行業(yè)的高度重視,在很長時間里只是少數(shù)的自由固件社區(qū)的黑客一直在關(guān)注,但對于詳細(xì)的技術(shù)評估和防御策略還是非常缺乏。
直到2014年P(guān)atrick Stewin的論文描述了一個名為DAGGER的rootkit如何作為外設(shè)去做鍵盤記錄,為了測試方便,DAGGER是使用了2009年ITL的那個漏洞去實現(xiàn)的,這也引發(fā)了自由固件社區(qū)對 ME 安全性的關(guān)注。
DAGGER也是h4rdenedzer0在Hardening the COREs方案中固件安全的起點。
三、自由固件社區(qū)的“獵殺暗影”行動
自由固件社區(qū)(如Coreboot、h4rdenedzer0)通過逆向工程和工具開發(fā)對抗ME:
1. me_cleaner工具
直到2016年,自由固件社區(qū)主流方案是直接刪除所有ME代碼模塊和數(shù)據(jù),經(jīng)過研究并配合自由固件社區(qū)的測試后發(fā)現(xiàn),Core 2 時期的芯片組中的ME可被完全清除,但在所有Nehalem/Westmere及更新的芯片組上去掉ME代碼模塊后均以30分鐘機器關(guān)機而告終。
這困擾了社區(qū)很長的時間,直到2016年9月,Trammell Hudson發(fā)現(xiàn)了刪除前4kb的ME region并沒有導(dǎo)致關(guān)機,幾天后Tramell又發(fā)現(xiàn)了只保留FTPR分區(qū)而其他代碼模塊全部刪除也可以讓x230不關(guān)機。
2016年11月,Nicola Corna和Federico Amedeo Izzo寫了一個小工具刪除了大部分代碼模塊并且創(chuàng)建了一個帶FPTR分區(qū)的FPT,這也成為了me_cleaner的前生,h4rdenedzer0幾乎參與了每一輪測試,在當(dāng)月團隊成員參加俄羅斯的一些研討會時發(fā)現(xiàn)Intel ME承載的一些應(yīng)用已經(jīng)嚴(yán)重威脅到了自由固件社區(qū)以及企業(yè)現(xiàn)有的生產(chǎn)環(huán)境,至此h4rdenedzer0決定一定要盡力讓更多的安全人員以及自由軟件社區(qū)參與到對抗Intel ME,在測試了Nicola和Federico的小工具在多臺x86設(shè)備上運行無誤后聯(lián)系了作者并且建議把代碼上傳至github并且要求更多的個人和企業(yè)來參與測試,之后這個工具被正式命名為me_cleaner。
在此期間h4rdenedzer0對更多的機型進行了測試并且公開了測試結(jié)果,為了更好的讓更多的社區(qū)成員參與測試,我們隨后公開了標(biāo)準(zhǔn)化操作文檔并于當(dāng)月受到了IT媒體的關(guān)注和報道,一個月后(2016年12月)在漢堡舉行的歐洲最大的黑客會議33C3上自由固件社區(qū)coreboot組織的workshop讓上百人成功的測試了各自帶來的機型,這一系列的事件是引爆2017年Intel ME事件的導(dǎo)火索。
2. HAP位的發(fā)現(xiàn)
由于自由軟件社區(qū)越來越多的人開始關(guān)注Intel ME,這也引起了逆向一流的俄羅斯安全研究人員的注意,在經(jīng)歷長達數(shù)月的努力,Dmitry Sklyarov于2017年3月公開了逆向Intel ME的一些細(xì)節(jié),這使得我們可以進一步的了解最新版本的Intel ME的構(gòu)造,在此之前我們研究過2015年的x86處理器Skylake中最大的特性之一是SGX,SGX是基于ME的多個特性實現(xiàn)的,除了ARC/Sparc性能問題,這可能是MEv11使用了x86 CPU的主要原因,在Dmitry這次的逆向中發(fā)現(xiàn)MEv11所運行的OS并非之前ARC架構(gòu)的ThreadX,而是基于微內(nèi)核MINIX定制的系統(tǒng)。
當(dāng)時me_cleaner并沒有在Skylake以及更新的處理器上做太多測試,更多的代碼模塊處理的細(xì)節(jié)需要me_cleaner做調(diào)整,h4rdenedzer0成員捐贈了2600歐元給me_cleaner的維護者用于購買測試設(shè)備,在經(jīng)過了幾個月的bug fix和大量測試me_cleaner最終也實現(xiàn)了在MEv11和MEv12( Skylake/Kabylake/Cannonlake)的清除工作,Skylake以上的平臺大部分的ME實現(xiàn)僅保留RBE, KERNEL, SYSLIB和BUP這幾個模塊。
2017年8月,Mark Ermolov和Maxim Goryachy通過逆向找到了NSA作為防御使用的ME隱藏開關(guān),指出ME其實是可以被完全關(guān)閉的,一個被稱為HAP的位(在基于ARC的ME上有等效的AltMeDisable,以及更古老的、用于Core 2芯片組無ME運行的ICH_MeDisable、MCH_MeDisable和MCH_AltMeDisable)被隱藏于描述符的PCHSTRP0字段(老版本中等效位的位置不同,詳見 me_cleaner 的源代碼)中,這個位并沒有官方文檔記錄,戲劇性的是HAP的全稱為High Assurance Platform,是NSA發(fā)起的構(gòu)建下一代安全防御體系的項目,如果NSA的機器都是開啟了HAP位(ME在完成必要初始化工作BringUP后即處于關(guān)閉狀態(tài)),而這個世界上絕大部分的x86機器則是默認(rèn)運行ME的,從這個層面上講ME作為后門或者“后門幫兇”對于核心基礎(chǔ)設(shè)施的風(fēng)險極高。
對于高安全性需求的業(yè)務(wù),因主CPU運行的操作系統(tǒng)內(nèi)核不安全從而把核心業(yè)務(wù)轉(zhuǎn)嫁到外設(shè)CPU運行的操作系統(tǒng)上并不能解決本質(zhì)的問題并且引入了新的風(fēng)險,而且還帶來了不可審計的麻煩,Linux內(nèi)核雖然不安全但依然是開源的,不存在開放審計的問題,但ME上的軟硬件對于大部分人都是閉源的,可審計的問題在x86上一直沒有得到解決。
2017年11月,Google的工程師在德國召開的歐洲自由固件coreboot會議上宣稱對于重要業(yè)務(wù)的機器要干掉Intel ME和不開源的UEFI固件實現(xiàn),因為Google也對于Intel ME的風(fēng)險評估結(jié)果感到害怕。
2017年12月,俄羅斯的安全研究者在Blackhat EU上展示了Intel ME在BringUP(BUP)階段的“不作為”讓某種特定的攻擊鏈條成為可能,這是否是Intel故意而為之目前并沒有非常確切的證據(jù),這個漏洞即使HAP開啟也無法防御,只能從內(nèi)核和固件層做防御方案,針對服務(wù)器可以配合SA-00075(AMT漏洞)遠(yuǎn)程打擊目標(biāo),影響2015年至2017年的所有機器,這個漏洞是自從2009年ITL的固件安全先知們開啟一個時代以后的2.0序章,標(biāo)志著Ring -3層級的攻防已經(jīng)進入廉價化時代。
2018年6月,俄羅斯的安全研究者也在對IDLM代碼模塊分析發(fā)現(xiàn)了一些奇怪的現(xiàn)象,Intel對于一些ME的代碼模塊的安全性非常高,但對于IDLM這種高風(fēng)險的代碼模塊卻“不作為”,俄羅斯的安全研究人員認(rèn)為不排除是Intel故意而為之,在ME相關(guān)的代碼模塊上都有不少。
四、行業(yè)應(yīng)對與長期解決方案
對于高安全環(huán)境需求的場景中應(yīng)該避免使用ME系統(tǒng),包括運行于其上的一切應(yīng)用。對于金融,電信等重要行業(yè),短期內(nèi)完全替換x86幾乎不可能,但可以評估業(yè)務(wù)的重要性和優(yōu)先級來決定是否對ME模塊進行清除。
長期來看,一方面是x86平臺的微碼和ME是固件不可審計的主要障礙,而這個障礙Intel幫忙解決的可能性很小,另一方面,整個芯片行業(yè)進入3.0的新時代,隨著RISC-V這樣的開放指令級的CPU架構(gòu)的興起,芯片和固件的可審計性問題會得到逐步的解決,只有當(dāng)硬件和固件變得可以被開放的審計,這才是硬件自由和固件自由的基礎(chǔ)。
1. ME實現(xiàn)進化歷程
(1) 2006– 2014:
- 筆記本和臺式機使用標(biāo)準(zhǔn)ME實現(xiàn),運行在Arc*處理器上,OS是ThreadX。
- 從Nehalem/Westmere系列開始,ME無法被完全去除。
- 嵌入式設(shè)備使用TXE,運行于Sparc處理器,OS是未知的RTOS。
- 服務(wù)器使用SPS,運行在Arc*處理器上,OS是ThreadX。
(2) 2015 – 2018:
使用Minix 3定制的OS,運行于x86處理器。
五、結(jié)語
在數(shù)字世界的深淵中,一場無聲的戰(zhàn)爭已持續(xù)十余年。自由固件社區(qū)的“暗影獵手”們,正與一個隱匿于芯片深處的惡魔——Intel ME(Management Engine)展開殊死較量。它潛伏在每一臺x86設(shè)備的“Ring -3”層級,擁有至高無上的權(quán)限,卻閉源、不可審計,甚至被懷疑為國家級后門的溫床。從2009年先知般的漏洞揭露,到2017年NSA隱藏開關(guān)的意外曝光,這場戰(zhàn)爭不僅關(guān)乎技術(shù),更關(guān)乎對硬件自由的終極捍衛(wèi)?!拔覀儗沟牟皇茄庵|,而是黑暗世界的掌權(quán)者?!?——這場戰(zhàn)役的真相,遠(yuǎn)比想象中更黑暗。