Google 安全研究人員發現了 AMD CPU 微碼安全系統中的一個嚴重漏洞,該漏洞允許完全控制處理器行為。研究團隊釋出了 Zentool,這是一個使使用者能夠分析、操作和生成 AMD Zen 處理器微碼補丁的工具。
這個漏洞源於 AMD 在其微碼簽名過程中使用了 AES-CMAC RFC 文件中的標準示例金鑰。這個基本的安全錯誤使研究人員能夠繞過 AMD 的保護機制,建立處理器接受為合法的自定義簽名微碼更新。
安全漏洞
這個安全問題影響了從 Zen1 到 Zen4 的 AMD 處理器,而 Zen5 的漏洞狀態仍在調查中。根據研究人員的評論,AMD 的關鍵錯誤是將 AES-CMAC RFC 中的示例金鑰用作其實際簽名金鑰。這一疏忽基本上破壞了保護 CPU 微碼的整個安全模型。
「任何可以在價格適中的硬體上透過軟體破解的加密/簽名就是:已被破解。」
這個漏洞特別令人擔憂,因為微碼修改可以繞過基本的安全措施。透過訪問微碼,具有核心許可權的攻擊者可能直接訪問物理記憶體,繞過許可權檢查,並破壞像 AMD 安全加密虛擬化(SEV)這樣的安全功能。
關於 AMD 微程式碼漏洞的關鍵事實
- 受影響硬體:AMD Zen1 至 Zen4 處理器
- 漏洞:使用 AES-CMAC RFC 示例金鑰進行微程式碼簽名
- 釋出工具:Zentool - AMD Zen 微程式碼操作工具
- 緩解措施:AMD 釋出了一個修復方案,使用自定義安全雜湊函式配合 AMD 安全處理器更新
- 研究團隊:Google 硬體安全團隊(Josh Eads、Matteo Rizzo、Kristoffer Janke、Eduardo Vela Nava、Tavis Ormandy、Sophie Schmiege 及其他成員)
Zentool 功能
Zentool 工具提供了廣泛的微碼操作功能。使用者可以檢查微碼頭部、修改版本號、編輯匹配暫存器,甚至修補單個指令。該工具包括一個反彙編器,可以顯示構成微碼的內部 RISC 操作(quads)。
一個特別強大的功能是能夠重新簽名修改後的微碼,透過生成 CPU 接受的有效簽名來補償更改。這允許使用者將自定義微碼補丁載入到特定的 CPU 核心上。
影響和緩解措施
AMD 已釋出了一個修復程式,該程式修改了微碼驗證例程以使用自定義安全雜湊函式。這與 AMD 安全處理器更新配對,確保在 x86 核心嘗試安裝被篡改的微碼之前更新補丁驗證例程。
討論中的安全專家指出,現代韌體安全架構放大了該漏洞的影響。雖然 CPU 沒有非易失性記憶體(斷電時微碼會重置),但破壞系統快閃記憶體的能力可能導致受影響系統的永久、不可逆轉的損害。
研究人員計劃在未來幾個月提供更多關於他們如何逆向工程微碼更新過程的細節,這一過程導致了驗證演算法的識別。
倫理和法律考慮
這樣一個工具的釋出引發了關於釋出安全漏洞工具的倫理和合法性的辯論。一些評論者將其與遊戲機越獄工具進行了類比,後者經常面臨 DMCA 下架,而其他人則為此類工作的學術和安全研究價值辯護。
之前關於 AMD K8 和 K10 CPU 微碼的學術研究被提及作為先例,研究人員破解了加密(更像是擾亂),併發布了工具,但沒有受到 AMD 的法律報復。
這項工作背後的 Google 硬體安全團隊包括 Josh Eads、Matteo Rizzo、Kristoffer Janke、Eduardo Vela Nava、Tavis Ormandy、Sophie Schmiege 等人。他們的工作基於之前的研究,包括來自 Ruhr-Universitat Bochum 的 Koppe 等人撰寫的論文《逆向工程 x86 處理器微碼》。