VaultBoot:Intel ME(管理引擎)風險評估
VaultBoot支線任務之暗影之環:Intel ME(管理引擎)風險評估
背景
2021年5月12日,美國政府發布了關于改善國家網絡安全的行政命令 (EO 14028),以應對多個重要議題,SBOM(軟件物料清單)就是其中之一,它試圖通過要求供應商提供更多有關其產品/解決方案組件的信息來改善軟件供應鏈的安全性。幾周后,網絡安全和基礎設施安全局 (CISA)為了回應EO 14028,在 RSA 2021會議正式公布VBOS計劃 , 即 "操作系統更底層的漏洞", 以促進 SBOM 擴展到固件級別,請記住固件也是一種軟件,只是比較特殊的軟件。雖然過去的20年中,主流信息安全社區都嘗試忽略掉操作系統以下層級的安全風險,但隨著隱蔽戰爭對抗的升級讓行業無法回避這個安全領域的“硬骨頭”。

Intel ME安全簡介
”復雜性“的概念本身就過于復雜難以簡單的解釋,而安全領域的從業者則每天都在和"復雜性"打交道,有些威脅和風險相對容易理解和找出已知風險的應對之策,雖然這通常會很耗時,但有些風險并不是那么容易理解,要制定防護措施的難度更甚,Intel ME屬于這一類 。早在2008年,Intel就將ME(管理引擎)引入芯片組,它比操作系統具有更高的特權,這意味著操作系統級別的安全檢測方案對ME幾乎是無效的,更重要的是,絕大部分用戶都不知道他們的計算機中有一個獨立的“小電腦”存在(請翻閱HardenedVault白皮書中圖靈完備性的章節)。安全研究方面,2009 年 Alexander Tereshkin和 Rafal Wojtczuk證明了植入Ring -3 rootkit的可能性(注:在此上下文下“Ring”的概念為,應用:Ring 3,Linux 內核:Ring 0,虛擬化:Ring -1,BIOS/UEFI/SMM:Ring -2,Intel ME: Ring -3)。

另外一項有趣的研究Patrick Stewin于2014年發布的DAGGER,遺憾的是,大多數人在過去10多年中都不知道ME的存在之廣泛直到Google決定在部分機器上干掉ME。Intel在KabyLake這一代處理和芯片組發布時給ME有了新的命名:CSME (Converged Security and Management Engine) ,這或許是因為同代芯片組把TXT和BootGuard這兩個安全特性綁定在一起的原因。ME/CSME通常是指x86桌面平臺的PCH中的一個獨立IP,運行過程中也會使用到其他PCH中的IP:

TXE和SPS(Server Platform Service)分別是嵌入式和服務器平臺的實現。ME/CSME的發展中其硬件和軟件都經過了不斷的變化和更新:
MEMEMEMEME版本1.x – 5.x6.x – 10.x11.x12.x15.x硬件核心ARCTangent-A4ARCompactQuarkQuarkQuark(?)指令集ARC (32-bit)ARCompact(32/16)x86(32-bit)(32-bit) x86x86 (32-bit)防御特性N/AN/ANXSMEPCET/CFI操作系統??ThreadXMINIXMINIXMINIX對應SPS版本SPSv1.xSPSv2.x – v3.xSPSv4.xSPSv5.xSPSv6.x
威脅模型和攻擊面
從攻擊面的角度,按照賽博堡壘白皮書中所提及的常規TC(漏洞)和 Maclious TC(后門)的上下文,大體有兩種極端的攻擊路徑:
1)從主機(Host)CPU運行的系統上構建打擊鏈深入到Intel CSME并且植入持久化,這是一個很長的攻擊鏈條:
* Ring 3的漏洞利用(webshell或者應用程序的遠程利用)獲得普通執行權限
* 利用Ring 0內核漏洞進行提權,這里值得注意的是雖然操作系統內核早已經不是2007年”Attacking the CORE”上下文的那個”CORE“但依舊非常重要,因為內核是通向更底層的入口,這也是賽博堡壘花費大力氣打造VED(Vault Exploit Defense)以及基于PaX/GRsecurity完成場景化加固的原因。
* 從目前攻擊樣本來看不需要過多關注Ring -1虛擬化層。
* 通過繞過芯片組防護機制或者物理攻擊攻陷Ring -2的固件,比如coreboot/UEFI/SMM,以達到獲得寫SPI flash的能力。
* 觸發Ring -3(CSME)早期啟動階段(RBE,kernel等在>=CSMEv11版本中無法關閉的模塊)或者CSME代碼模塊的0day或者已知漏洞(比如SA-00086)以獲得CSME完整控制權,攻擊者可以使用CSME作為跳板開啟VISA訪問PCH的內部接口。
2)從CSME攻擊主機(Host)系統,攻擊場景如下:
* 攻擊者具備1)的能力前提下,可以直接替換廠商固件并在IOMMU開啟前具備執行RS1 DMA操作的能力,這等同于給了CSME上帝模式可以任意讀寫主機側操作系統(Linux,Windows,OSX等)內存。
* OEM廠商在固件中有意或者無意的錯誤配置PSF(Primary Scalable Fabric)以輔助CSME擁有上帝模式。
* CSME使用IMRs直接繞過IOMMU/VT-d進入上帝模式。
值得企業用戶注意的是,以上不論哪種攻擊場景發生后會給取證工作帶來巨大的麻煩,這也是從一開始就需要關注固件安全的原因。
警告:安全研究者們,小心調試和測試你的PoC,任何CSME相關的測試和微調都可能導致PCH燒毀。
ME制造模式
ME制造模式(Manufacturing mode)是CSME一種給OEM廠商維護的運行模式,這種模式下操作系統運行時可以讀寫CSME區段,值得所有CSO和安全工程師重視的是有一些廠商的服務器主板上有ME制造模式的跳線,即使對于已經有多信任基(比如VaultBoot方案)依然具有一定程度的風險,賽博堡壘在開發和生產Vault 111加固服務器的時候曾經遇到過此類情況,當時聯系了其中一家廠商:

我們預期是找到固件層面的解決方案而不是重新設計PCB:


遺憾的是,硬件和固件廠商對于這個領域對整體安全的重要程度的理解過于欠缺,以上對話只是這個行業的冰山一角,這個領域需要更多人的關注。
應該關掉CSME嗎?
這個問題的答案不可能直接說Yes or No,你是否信任Intel?或者說Intel和OEM廠商誰植入后門的概率更高?有一些用戶非常重視隱私和數字自由的權利,他們愿意承受比普通用戶更高的成本去干掉CSME,而大多數用戶對Intel依然持有”信仰的飛躍“,這里我們不討論后門的議題。從CSO和安全工程師的角度,漏洞的問題是每天都會遇到的,那有兩個因素你就得考慮了:
* CSME的自身防護能力
從賽博堡壘的角度,第一個因素相對容易量化:
版本防御機制風險<=CSMEv11/SPSv3NX高<=CSMEv14/SPSv5NX/SMEP中>=CSMEv15/SPS6NX/SMEP/CET低
NX(不可執行的棧)最早出現于2000年的PaX中,SMEP是讓攻擊者在漏洞利用過程中沒辦法直接在內核中執行用戶空間的代碼,CET是一種TigerLake開始引入的硬件CFI(代碼流完整性),Intel在v15/SPSv6的硬件平臺中也加入了支持。
* 有多少CSME提供的安全特性是企業整體方案必須的,CBnT可以用于構建信任根,SGX可以提供飛地計算方案,如果關掉了CSME那你會失去這些安全特性。當然,可以通過其他信任基和加強數據中心重要機型的物理防護管理來進行彌補。
可以關掉CSME嗎?
這個問題同樣沒有標準答案,有一些存在的選項:
類型結果時間代碼刪除Core 2之后x86平臺移除所有模塊會導致每30分鐘重啟一次2010中和最小化刪除代碼模塊2016關閉設置altmedisable/HAP位,CSME硬件初始化完成后自動關閉2017關閉通過HECI/HMRFPO指令運行時關閉2018
值得注意的是以上方法對于關閉SPSv5是無效的,SPSv5由于增加了VFS(虛擬文件系統)導致所有的開源實現的解析器都失效了,賽博堡壘可以提供一種在1U服務器的SPSv5系統中關閉CSME和ME制造模式的方案,但代價同樣是失去CSME提供的安全特性:


AMD平臺有類似問題嗎?
有,AMD有一個類似CSME的實現叫PSP(Platform Security Processor)。
飛地方案SGX/SEV會受到CSME風險困擾嗎?
這里羅列三個已知風險:
* 飛地計算本身并非安全,即使沒有CSME,側信道攻擊(Meltdown/Spectre及其變種)依然威脅現代x86處理器,比如L1TF。
* 飛地計算的基石MEE可被CSME訪問
* AMD SEV相比SGX和CSME的關系,更加依賴PSP固件,所以SEV的威脅模型和SGX不同。
有CSME的開源實現替代嗎?
沒有,Intel CSME是一個無法被全面審計的黑盒,黑客和安全研究者一直通過對部分代碼模塊的逆向找到一些有趣的發現,比如架構綜述,NSA的隱藏開關,IDLM模塊等。開源帶來的透明度并不等同于安全,沒有源代碼的情況下依然可以進行更為耗時的二進制審計。另一方面,閉源也并不代表安全,通常閉源軟件的質量差于開源軟件,但CSME則是一個例外,CSMEv15引入了更多防護機制的同時也把模糊測試加入了開發流程,不論開源還是閉源軟件都會受益于這些技術。
工具
工具ME類型用途me_cleanerME/TXE/SPS刪除代碼模塊以及開啟altmedisable/HAP位intelmetoolME獲取ME以及BootGuard信息me-disableMEHECI指令運行時關閉MEspsInfoSPS獲取SPS信息mei-amt-checkMEmmdetectME/SPS檢測ME制造模式狀態ifdtoolME綜合型工具
結論
固件領域的防護沒有任何銀彈可言,幾乎都是近身肉搏,和其他安全領域一樣,“知己知彼”依然是第一優先級,只有理解了整體架構和攻擊方法才能制定出相應的防護方案。從攻擊的角度,如果攻擊者有能力攻擊一個高價值目標,不論你是否有感知都會遭受攻擊,這是一場長期的對抗,從企業安全的角度,未來如何取決于今天的安全工程師和CSO的智慧。
賽博堡壘花費了大量的時間處理CSME帶來的硬幣兩面的問題,CSME是VaultBoot方案的一小部分,但卻是不可回避的部分,這個層面出現的任何問題都可能讓整個縱深防御體系輕易的瓦解,羅馬不是一天建成的,但剛鐸卻可能一天就被毀滅。更重要的是,這么重要的計算機組件并未引起足夠的重視,最可怕的不是敵人的強大,而是你并沒有認知到敵人的存在。