Intel製造模式漏洞曝光,蘋果公司也無法避免此影響

Editor發表於2018-10-04

俄羅斯的安全研究人員公開了Intel 的本地利用ME漏洞(INTEL-SA-00086)。問題的根源是未記錄的Intel ME模式,特別是製造模式。


影響範圍包括其伺服器(Intel SPS)和移動(Intel TXE)版本。


Intel製造模式漏洞曝光,蘋果公司也無法避免此影響


什麼是製造模式?


Intel ME製造模式用於在製造期間配置和測試終端平臺,因此應在銷售和發貨給使用者之前禁用。但是,這種模式及其潛在風險在Intel 的公共文件中沒有任何描述。普通使用者無法禁用此模式,這是由於相關實用程式(Intel ME系統工具的一部分)無法正式使用。因此,如果因為某種原因啟用了此模式,則沒有軟體可以保護甚至通知使用者。


此模式允許配置儲存在一次性可程式設計儲存器(FUSEs)中的關鍵平臺設定。這些設定包括BootGuard的設定(ACM和UEFI模組的數字簽名金鑰的模式、策略和hash)。其中一些被稱為FPFs(Field Programmable Fuses)。


Intel製造模式漏洞曝光,蘋果公司也無法避免此影響

(FPT中-FPFs選項的輸出)


在製造模式下,硬體製造商可以指定Intel ME的設定,這些設定儲存在SPI快閃記憶體上的Intel ME內部檔案系統(MFS)中。可以通過重新程式設計SPI快閃記憶體來更改這些引數。這些引數稱為CVAR(可配置NVAR,命名變數)。


設定CVAR是名為mca_server的Intel ME模組的責任。 MCA是“製造線配置架構”(Manufacture-Line Configuration Architecture)的縮寫,它是製造過程中配置平臺過程的通用名稱。與FPFs一樣,CVARs可以通過FPT進行設定和讀取。


Intel製造模式漏洞曝光,蘋果公司也無法避免此影響
(FPT為Broxton P平臺輸出的CVAR列表)

CVAR列表取決於Intel ME的平臺和版本。對於支援Intel AMT的晶片組,其中一個CVAR是輸入MEBx(ME BIOS Extension)的密碼。


設定FPFs或幾乎任何CVAR都要求Intel ME處於製造模式。分配FPF的過程包括兩個步驟:設定FPF的值(儲存到臨時儲存器中)並將FPFs值提交給FUSEs。如果在製造模式下,製造商設定FPF值並且之前從未寫過FUSE陣列中的相應範圍,那麼第一步只能在製造模式下實現,但實際的“燒錄”(burn)會在製造模式關閉後自動發生。


因此,如果系統處於製造模式,FPFs可能從未被初始化。


已關閉製造模式的標誌儲存在MFS上的file/ home / mca / eom中。當SPI快閃記憶體被基本檔案系統的韌體覆蓋時,平臺可以再次在製造模式下執行(儘管不再可能覆蓋FUSE)。



OEM 公鑰


配置Intel平臺的過程相當複雜,包含多個步驟。硬體製造商對此過程的任何錯誤或偏離都會使平臺面臨嚴重風險。即使製造模式已經關閉,製造商也可能沒有設定FPF,這允許攻擊者通過編寫自己的值來代替用於簽署BootGuard(AСM)和UEFI模組的起始程式碼的金鑰來自行完成。在這種情況下,平臺只會載入攻擊者的惡意程式碼,並且會持續載入。這將導致不可逆轉的硬體損害,因為攻擊者的金鑰被寫入永久性記憶體,永遠不會被刪除。


在較新的系統(Apollo Lake,Gemini Lake,Cannon Point)上,FPFs不僅儲存BootGuard的金鑰,而且儲存OEM的公鑰(嚴格來說,RSA OEM公鑰的SHA256 hash),它支援多種ME安全機制。


例如,名為Signed Master Image Profile(SMIP)的SPI快閃記憶體的特殊部分儲存製造商指定的PCH Straps(PCH硬體配置)。此部分使用金鑰進行簽名,該金鑰的SHA256雜湊儲存在SPI快閃記憶體上的特殊檔案(分割槽)中。此檔名是FTPR分割槽中的oem.key(Cannon Point PCH的OEMP分割槽中的OEMP.man),包含各種OEM提供的用於簽署各種資料的公鑰。


在下圖中,可以看到製造商簽署的資料集的完整列表,每個資料集都有一個Cannon Point平臺的唯一金鑰:


Intel製造模式漏洞曝光,蘋果公司也無法避免此影響

(CNP平臺的OEM簽名資料列表)


oem.key檔案本身使用OEM根金鑰簽名,其公鑰的hash值應寫在FPFs中。


Intel製造模式漏洞曝光,蘋果公司也無法避免此影響

(OEM簽約)


因此,在破壞了OEM根金鑰後,攻擊者可能會破壞之前提到的所有資料,這比僅適用於舊平臺的Boot Guard接管要糟糕得多。



在寫入ME區域時繞過塊


直到最近(在Intel Apollo Lake之前),Intel ME位於一個獨立的SPI區域,該區域具有CPU,GBE和ME的獨立訪問許可權。因此,只要正確配置了訪問屬性,就無法從CPU(主系統)端讀取或寫入ME。但是,目前用於Intel晶片組的SPI控制器有一種稱為Master Grant的特殊機制。該機制為每個SPI主控制器分配嚴格定義的SPI快閃記憶體部分。無論SPI描述符中指示的訪問許可權如何,主控制器都控制其特定區域。每個主裝置都可以為其所在區域(但只有自己的區域!)提供對其所希望的任何其他主裝置的訪問(讀取或寫入)。


Intel製造模式漏洞曝光,蘋果公司也無法避免此影響

(摘自描述SPI Master Grant的Intle文件)


這意味著即使SPI描述符禁止主機訪問ME的SPI區域,ME仍然可以提供訪問。研究人員認為,此更改可能旨在以繞過標準流程的方式更新Intel ME。



主機ME區域快閃記憶體保護覆蓋


Intel ME實現了一個特殊的HECI命令,允許在CPU端開啟對ME SPI區域的寫訪問。該命令稱為HMR FPO(主機ME區域快閃記憶體保護覆蓋)。


收到HMR FPO命令後,Intel ME僅在重置後才會開啟對該區域的訪問許可權。Intel МЕ本身還包括安全措施:在結束髮布(EOP)之前,只有當UEFI BIOS是平臺啟動過程的所有者時,才會接受該命令。 EOP是一種不同的HECI命令,它在將控制權交給作業系統(ExitBootServices)之前將UEFI傳送給ME。有時,BIOS Setup包含在EOP之前傳送HMRFPO命令的選項。


Intel製造模式漏洞曝光,蘋果公司也無法避免此影響
(在BIOS中開啟ME區域)

收到EOP後,Intel ME忽略HMR FPO並返回相應的錯誤狀態。但這隻有在製造模式關閉後才會發生。因此,在製造模式下,無論是否存在End Of Post,Intel ME都會隨時接受HMR FPO。如果製造商未能關閉製造模式,攻擊者可以隨時更改Intel ME(當然,需要管理員許可權,但即使是OS核心最初也無法重新重新整理Intel ME)。在此階段,攻擊者可以重新重新整理ME映像,例如利用漏洞INTEL-SA-00086。


然後需要重置才能執行修改後的韌體,但幾乎在任何平臺上都沒有問題,Apple MacBook除外。Apple的計算機包含UEFI中的額外檢查,UEFI在UEFI啟動時執行,如果已使用HMRFPO開啟ME區域,則阻止系統啟動。但是,如果Intel ME處於製造模式,則可以輕鬆繞過此機制。



重置ME而不重置主CPU


今天的計算機可以通過幾種不同的方式重新啟動:記錄的版本包括全域性復位和僅重置主CPU(不重置ME)。但是,如果有一種方法可以在不重置主CPU的情況下重置ME(通過預先執行HMRFPO命令),則可以開啟對該區域的訪問,並且主系統繼續執行。


Intel製造模式漏洞曝光,蘋果公司也無法避免此影響
(重置型別)

調查了內部ME模組後,發現有一個HECI命令(“80 06 00 07 00 00 0b 00 00 00 03 00”,更多關於在[5]中傳送命令的資訊),僅用於復位(!!! )Intel ME。在製造模式下,即使在EOP之後,也可以隨時傳送此命令:


Intel製造模式漏洞曝光,蘋果公司也無法避免此影響

因此,傳送這兩個HECI命令的攻擊者開啟ME區域並可以在那裡寫入任意資料,而不必整體重置平臺。SPI描述符包含什麼並不重要,如果系統在製造模式下執行,SPI區域的正確設定保護屬性將無法保護ME免受修改。



漏洞案例:漏洞CVE-2018-4251


研究人員分析了許多製造商的平臺,包括聯想和Apple MacBook Prо 膝上型電腦。其中Yoga和ThinkPad計算機沒有任何與製造模式相關的問題。但研究人員發現Intel晶片組上的Apple膝上型電腦正在製造模式下執行。在向Apple報告此資訊後,該漏洞(CVE-2018-4251)在macOS High Sierra更新10.13.5中進行了修補。


Intel製造模式漏洞曝光,蘋果公司也無法避免此影響



INTEL-SA-00086的本地開發


通過利用CVE-2018-4251,攻擊者可以將舊版本的Intel ME(例如包含漏洞INTEL-SA-00086的版本)寫入記憶體而無需SPI程式設計器或訪問HDA_SDO bridge,換句話說,無需物理訪問到電腦。因此,可以利用本地向量來利用INTEL-SA-00086,這使得能夠在ME中執行任意程式碼。


值得注意的是,在INTEL-SA-00086安全公告的註釋中,Intel沒有提到啟用製造模式作為在沒有物理訪問的情況下進行本地利用的方法。相反,該公司錯誤地聲稱只有在SPI區域的訪問設定配置錯誤時才可能進行本地利用。為了確保使用者安全,研究者決定描述如何檢查製造模式的狀態以及如何禁用它。



使用者可以做什麼?


Intel系統工具包括MEInfo(以及分別用於移動和伺服器平臺的TXEInfo和SPSInfo),以便獲得有關ME當前狀態和整體平臺的全面診斷資訊。當使用-FWSTS標誌呼叫時,該實用程式顯示狀態HECI暫存器的詳細描述和製造模式的當前狀態(當設定FWSTS狀態暫存器的第四位時,製造模式處於活動狀態)。

Intel製造模式漏洞曝光,蘋果公司也無法避免此影響
(MEInfo輸出的示例)

研究人員還建立了一個程式,用於檢查製造模式的狀態,如果使用者因任何原因無法訪問IntelME系統工具。以下是指令碼在受影響的系統上顯示的內容:


Intel製造模式漏洞曝光,蘋果公司也無法避免此影響 
 (mmdetect指令碼)

因此,一個合乎邏輯的問題是,如果製造商未能這樣做,使用者如何自己關閉製造模式?


要禁用製造模式,FPT有一個特殊選項(-CLOSEMNF),除了其主要用途之外,還允許為描述符中的SPI快閃記憶體區域設定建議的訪問許可權。


以下是輸入-CLOSEMNF時會發生的情況:


Intel製造模式漏洞曝光,蘋果公司也無法避免此影響
(使用FPT關閉製造模式的過程)

在此示例中,研究人員使用 -CLOSEMNF 的 NO 引數來避免重置平臺,否則在關閉製造模式後會立即發生。



結論


研究表明,Intel ME存在製造模式問題,即使像蘋果這樣的巨型製造商也無法免受英特爾平臺上的配置錯誤的影響。更糟糕的是,沒有關於該主題的公開資訊,它可能導致資料被盜,持久不可移除的rootkit,硬體的“bricking”。而公眾對這些弱點一無所知:


研究人員還懷疑,由於BIOS / UEFI和ME的狀態不同步,在不重置主要的CPU情況下重置ME可能會導致更多安全問題。


參考來源:

  • ptsecurity



- End -



書籍推薦:


《加密與解密》

是一本逆向必讀書籍。本書以軟體逆向為切入點,講述了軟體安全領域相關的基礎知識和技能,可以說是安全人士必讀書籍之一了。


看雪推薦“解密”前的過渡書籍:

基普·歐文的《組合語言:基於x86處理器》

王爽的《組合語言》

Charles Petzold著的《Windows程式設計》(以VC來講解)


長按識別二維碼,即可購買以上書籍

Intel製造模式漏洞曝光,蘋果公司也無法避免此影響



更多閱讀:


1、Windows 10 十月更新 | 有望提供勒索軟體保護


2、最新!Chrome釋出擴充套件程式五大新變化


3、最後通知:Chrome 70 將不信任Symantec PKI頒發的所有證書


4、Apple MDM 工具中存在身份驗證漏洞



相關文章