愛伊米

Intel CSME引擎IOMMU硬體級漏洞的分析(CVE-2019-0090)

0x01  漏洞背景

平臺控制器集線器(PC H)/SoC由一組由內部結構連線的硬體塊組成,如下圖所示。CSME是這些硬體塊的組成部分之一, 需要注意的是,下圖並不能確切反映PCH和SoC產品的硬體框圖。

Intel CSME引擎IOMMU硬體級漏洞的分析(CVE-2019-0090)

CSME在PCH/SOC中的主要作用之一是認證和載入英特爾和系統製造商韌體(F W)到相關IP,如電源管理控制器(PMC)和整合感測器集線器(IS H)。

這需要CSME與其他IP進行通訊,這種通訊是用root空間1(RS1)的事務型別進行的;每個IP的事務都由具有IP識別符號的硬體標記。

在輸入輸出記憶體管理單元(IOM MU)中,CSME有一個專用的訪問控制邏輯,該邏輯控制哪些IP可以將DMA事務傳送到CSME SRAM中的特定區域。這種訪問控制基於IPSA I,完全由CSME 0環韌體元件控制:

ROM,RBE(ROM引導擴充套件-第一韌體元件執行ROM)和核心。 下面的CSME硬體框圖描述了 CSME 內部的IOMMU及其在主要安全作用。

Intel CSME引擎IOMMU硬體級漏洞的分析(CVE-2019-0090)

0x02  CVE-2019-0090

預設情況下,當CSME退出重置時,IOMMU會被禁用,允許RS1DMA事務在CSME ROM開啟IOMMU保護之前到達CSMESRAM。此視窗可由具有RS1DMA能力的IP在CSMEROM執行期間讀取和寫入CSME SRAM,可能透過 ROP 等其他技術損害CSME SRAM的加密能力或CSME ROM的完整性。

為了發起成功的攻擊,攻擊者需要做以下步驟:

1。 具有RS1DMA能力的IP的韌體,Cannon Point(CNP)PCH上的整合感測器集線器。

2。 旁路的信任根(RoT)保護,在一個IP具有RS1DMA能力的 系統上安裝和執行攻擊者自己的韌體,可以由系統製造商定製的韌體由CSME韌體使用製造商的公鑰雜湊進行身份驗證,該雜湊儲存在SPI快閃記憶體中。當EOM被系統製造商成功應用時,快閃記憶體中的熔斷器模擬被禁用,而在PCH/SOC中的可程式設計熔斷器(FPF)將被CSME韌體用於認證和載入定製的系統製造商的韌體IP。

3。 實現直接訪問RS1DMA能力,成功的攻擊還需要攻擊者的IP韌體在CSME退出重置時執行,例如,在系統啟動期間或從CSME低功耗模式(也稱為電源門控)恢復時,需要得到韌體SKU或CSME重置的支援。

有安全研究團隊使用了一個基於CannonPoint(CNP)PCH的平臺,這個平臺沒有EOM應用。在這個平臺上,他們載入了自己的ISH韌體,將公鑰的雜湊儲存在SPI快閃記憶體中的熔斷器模擬中。然後,它們要麼使用CSME製造命令觸發CSME重置,要麼等待CSME從低功耗狀態恢復。根據這些有限的條件,能夠觸發一個RS1DMA事務,其中 CSME IOMMU尚未啟用CSME ROM。

0x03  緩解措施

英特爾在較新的系統中透過使在CSME硬體中預設啟用IOMMU來緩解CVE-2019-0090 ,因此當CSMEROM開始執行時,RS1DMA事務會被阻塞,直到CSME韌體允許訪問特定的SRAM區域才會不阻塞。

以下系統已經做了硬體修復:

1。 Icelake (ICP-LP and ICP-N PCH)

2。 Cometlake (CMP-LP, CMP-H and CMP-V PCH)

3。 Tigerlake (TGP-LP and TGP-H PCH)

4。 Lakefield (LKF SoC)

5。 Whitley (LBG-R PCH)

6。 Idaville (CDF PCH)

7。 Jacobsville (CDF PCH)

8。 Eagle Stream (EBG PCH)

9。 Tatlow (TGP-H PCH)

在其他系統中,CSMEROM是PCH/SoC硬體的一部分,並且沒有修復漏洞,IOMMU可能還存在漏洞風險。在這些情況下,CSME韌體更新已經發布,防止RS1DMA事務到達CSME SRAM,IOMMU會被禁用。

對於基於CNP的系統,CSME韌體更新在CSME進入低功耗模式或啟動CSME重置之前,會將RS1DMA事務阻塞到PCH結構的CSME中。一旦從電源門控或CSME重置恢復完成,啟用了IOMMU,CSME韌體將重新配置PCH結構以解RS1DMA事務。請注意, 此更改依賴於PMC韌體對PCH/SoC中電源管理流的控制,以及重置CSME的單個IP的能力。

對於其他系統,最新的CSME韌體版本可以防止已知的攻擊向量(除了物理回滾到以前易受 Intel-SA-00086 攻擊的CSME韌體版本)。

0x04 基於硬體的反回滾攻擊(ARB)

為了適當地減輕物理攻擊向量,基於CSME硬體的抗回滾能力(ARB)必須得到PCH/SoC的支援, 並由系統製造商啟用。

這種能力將防止CSME韌體在快閃記憶體中的物理回滾,並保證系統仍然受到保護,以防止已知的漏洞,這些漏洞在最近CSME韌體版本中已經減輕。

該表總結了PCH/SoC以及在哪些條件下支援基於硬體的ARB。

Intel CSME引擎IOMMU硬體級漏洞的分析(CVE-2019-0090)

0x05  CVE-2019-0090漏洞影響

CVE-2019-0090允許攻擊者對CSME ROM執行控制,並獲得對CSME晶片組和認證金鑰的訪問:英特爾增強隱私ID(EPID)私鑰和英特爾平臺信任技術(PT T)背書金鑰(E K)。,這些金鑰是給定系統特有的。請參閱後面的部分,以瞭解晶片組金鑰和EPID私鑰在CSME中所起的作用。此外,CVE-2019-0090允許攻擊者載入自己的CSME韌體,並損害系統上的CSME用例。

下表列出了CSME支援的不同用例以及它們如何受到潛在影響。

Intel CSME引擎IOMMU硬體級漏洞的分析(CVE-2019-0090)

最新的CSME韌體包括減輕CSME IOMMU硬體問題,以防止已知的攻擊。當基於硬體的ARB能力由系統製造商(包括BIOS支援)支援和啟用時,CSME將只接受最新的CSME韌體,以減輕物理FW回滾攻擊。

此外,EOM應由系統製造商應用,如英特爾指南中規定的。

EOM規定如下:

1。 包含不同區域(即BIOS、CSME)上的訪問控制列表的SPI描述符被鎖定,不能由軟體更改,然後由SPI控制器執行訪問控制。

2。 基於SPI Flash的熔斷器模擬被禁用,並使用PCH或SOC中的現場可程式設計熔斷器代替。

3。 禁用CSME製造API。

必須指出,以下基於英特爾CPU的安全技術不受以下因素的影響:

1。 英特爾信任執行技術(TXT),使用離散TPM不使用英特爾PTT;

2。 除了CSMEDAL在客戶端平臺上提供的安全時間和單調計數器外,也會提供IntelS GX;

3。 英特爾虛擬化技術的指導I/O(VT-d)-適當的配置英特爾VT-d防止DMA訪問系統記憶體的CSME。

0x06  SOC/PCH使用案例

下表列出了支援哪個用例的SOC/PCH:

IntelNode Manager功能只提供遙測,不提供系統電源管理;用例只支援執行CSME韌體的英特爾工作站系統。用例只支援在執行英特爾伺服器平臺服務(SPS)韌體的伺服器上。在工作站或客戶端 (CSME韌體)上,不支援用例。

客戶端和伺服器之間的“IP韌體身份驗證”用例也可能不同。例如,即使ISH硬體存在於伺服器平臺上使用的CNP-HCH中,SPS韌體也不支援ISH韌體的載入。

0x07 晶片組金鑰和引信加密硬體金鑰

CSME晶片組金鑰是CSME ROM和CSME韌體在執行時生成的金鑰。所有晶片組金鑰都是由英特爾的PCH和SOC產品的金鑰生成器設施(K GF)隨機生成的,用PCH/SOC家族硬體金鑰(Fuse加密硬體金鑰)加密,並在運往系統製造商之前將PCH/SOC製造熔斷器中的其他安全金鑰傳送到英特爾組裝鏈進行程式設計。

Intel CSME引擎IOMMU硬體級漏洞的分析(CVE-2019-0090)

下表列出了在英特爾製造過程中編入程式的安全引信:

目前僅啟動CNP PCH。

熔斷器加密硬體金鑰用於防止CSME安全金鑰暴露。注意,引信加密硬體金鑰不是為了保護晶片組金鑰和EPID私鑰免受CSMEROM的影響,關於這一點的更多解釋將在後面的章節中提供。

0x08  CSME ROM晶片組金鑰和引信加密硬體金鑰的使用

當CSME ROM開始執行時,它將執行以下步驟:

1。 來自加密硬體加速器的ROM請求生成引信加密硬體金鑰。

2。 在將引信加密硬體金鑰載入到SKS硬體之前,ROM設定安全金鑰儲存(S KS)槽屬性(特權級別、安全模式和鎖定)。

3。 ROM將安全鍵從熔斷器拉到CSME SRAM,一旦完成,安全鑰匙熔斷器就會被鎖定。此後,在下一次CSME重置之前無法檢索安全金鑰,從而保證只有CSMEROM才能檢索安全金鑰。

4。 ROM將用硬體金鑰加密的晶片組金鑰從CSME SRAM解密為SKS。

5。 ROM可以使用晶片組金鑰匯出額外的金鑰,使用HMAC-SHA256作為金鑰派生功能和硬編碼字串(每個金鑰不同)和CSME韌體安全版本號後,CSME韌體清單由CSME ROM驗證。

Intel CSME引擎IOMMU硬體級漏洞的分析(CVE-2019-0090)

幾個鍵是由ROM使用晶片組鍵建立的:

1。 包裝金鑰-此金鑰用於在SRAM中包裝金鑰,並確保金鑰在使用之前被解壓到SKS中。一旦金鑰被包裝,它就繫結到CSME硬體,不能在CSME之外使用。

2。 記憶體保護金鑰-此金鑰用於在SRAM中包裝和展開金鑰。此金鑰通常用於保護無法儲存在SKS中的EPID或EK等認證金鑰,後者僅支援AES或HMAC金鑰型別。

3。 掛起金鑰-此金鑰用於生成一次性金鑰,允許儲存和恢復CSME韌體上下文,而CSME進入電源門控或當平臺只進入客戶端系統待機時。此鍵對於保證CSME在恢復時的執行完整性至關重要。

4。 英特爾root鍵-這個鍵是CSME韌體的主鍵。例如,它用於生成儲存金鑰,以保護NVM中的CSME資料。

5。 B根金鑰-此金鑰用於保護NVM中的完整性保護金鑰(IP K)和CSME韌體模組的ICV(使用 IPK和Crypto硬體加速器AES-Paging引擎計算的完整性檢查值)。該ICV允許更快地啟動CSME韌體,並安全地在CSME程式碼和資料中頁出和頁從CSMESRAM到SPI快閃記憶體/DRAM。當CSME韌體更新或ICV完整性故障時,IPK和ICV會失效。此鍵對於保證CSME在啟動和執行時的執行完整性至關重要。

6。 提供金鑰-當需要TCB恢復時,CSME韌體使用此金鑰從英特爾伺服器檢索新的EPID私鑰,因為CSMEEPID認證金鑰已被破壞。提供金鑰是基於CSME韌體SVN的。只有當SVN 大於1時,此鍵的使用才相關。

7。 PTTE K根金鑰-此金鑰將由CSME ROM匯出,用記憶體保護金鑰加密,並由IntelPTT使用 PTTEK計數器生成其背書金鑰,也由CSME ROM匯出到IntelPTT。一旦CSMEROM生成所有金鑰,它將在執行CSME韌體之前對晶片組金鑰和引信加密硬體金鑰進行清零和鎖定。這樣做是為了確保這兩個鍵不能在CSME韌體之外使用。

如上圖所示,CSME的執行完整性和資料安全性依賴於由CSMEROM建立的晶片組金鑰和金鑰。

0x09  EPID私鑰

KGF負責生成所有CSMEEPID私鑰、組公鑰和相關證書。在PCH或SOC的英特爾製造過程中, CSME提供了其獨特的EPID私鑰,該金鑰用家庭引信加密金鑰和EPID組ID加密。

在CSME引導下,EPID私鑰由CSME ROM解密並匯出到CSME韌體,其中金鑰由SIGMA模組管理。然後,PAVP、DAL和PTT可以利用SIGMA協議向伺服器(即內容提供程式)證明它們在真正的CSME韌體中執行。使用EPID私鑰生成EPID簽名,以向驗證器(即內容提供程式伺服器) 證明EPID組中的成員資格。驗證器透過檢查成員的簽名和組證書來驗證成員(CSME韌體)。如果EPID私鑰被洩露,那麼CSME韌體可能會被模擬,驗證者保證他們與真正的CSME韌體通訊的能力也會受到損害。在這種情況下,可以發出新的EPID私鑰,並可以由Intel撤銷 EPID私鑰或其關聯的EPID組。這一程式被稱為TCB恢復,同時緩解了破壞CSME韌體TCB或暴露EPID私鑰本身的特定漏洞。例子包括Intel-SA-00086(CVE-2017-5705、CVE-2017-5706和 CVE-2017-5707)中記錄的漏洞。

下圖顯示了成功完成TCB恢復所需的步驟。

Intel CSME引擎IOMMU硬體級漏洞的分析(CVE-2019-0090)

KGF必須生成新的EPID私鑰並將其傳送到Intel伺服器。英特爾伺服器將交付新的EPID私鑰, 只有新的CSME韌體與更高的SVN。這是實現的透過使用ROM生成的提供金鑰,使用CSME韌體SVN,如前一節所解釋的。重要的是要注意,如果CSMEROM也受到損害,那麼TCB恢復就不能再安全地進行了。

安全金鑰儲存硬體的使用CSME ROM還使用SKS硬體保護金鑰免受CSME SRAM的潛在洩漏,而CSME韌體執行,並確保 CSME韌體可以在不知道其實際明文值的情況下使用金鑰。由於以下原因,CSME ROM 不能使用為引信加密金鑰和晶片組金鑰設定安全模式的SKS插槽:

1。 儲存在熔斷器中的EPID私鑰不是AES或HMAC金鑰,因此不能在SKS中載入。因此,金鑰需要使用CSME SRAM中的Fuse加密硬體金鑰解密,其中它在匯出到CSME韌體之前被 CSME ROM用記憶體保護金鑰包裹。

2。 晶片組金鑰還用於生成EPID隨機值,CSME韌體將使用該EPID私鑰生成最終的EPID私鑰。在將EPID隨機值匯出到CSME韌體之前,還將其用儲存器保護鍵包裹。

Intel CSME引擎IOMMU硬體級漏洞的分析(CVE-2019-0090)

0x10  漏洞對客戶/伺服器系統的影響

該表列出了CSME和英特爾聚合安全引擎(CSE)的客戶端系統:

下表列出了SPS韌體和英特爾高階驅動程式輔助系統(ADAS)管理引擎韌體的伺服器系統:

Intel CSME引擎IOMMU硬體級漏洞的分析(CVE-2019-0090)

Intel CSME引擎IOMMU硬體級漏洞的分析(CVE-2019-0090)

參考及來源:https://www。intel。com/content/dam/www/public/us/en/security-advisory/documents/cve-2019-0090-whitepaper。pdf