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