GRUB2 中的兩個漏洞可讓您繞過 UEFI 安全啟動保護

已揭露有關 GRUB2 引導程式中兩個漏洞的信息,這些漏洞可能導致在使用特殊設計的字體和處理某些 Unicode 序列時執行程式碼。 此漏洞可用於繞過 UEFI 安全啟動驗證啟動機制。

已發現的漏洞:

  • CVE-2022-2601 - 處理 pf2 格式的特殊設計字體時,grub_font_construct_glyph() 函數中存在緩衝區溢出,這是由於 max_glyph_size 參數的計算不正確以及分配的內存區域明顯小於所需的內存區域而導致的。容納字形。
  • CVE-2022-3775 以特殊樣式的字型呈現某些 Unicode 序列時,會發生越界寫入。 問題出在字體處理程式碼中,是由於缺乏適當的檢查來確保字形的寬度和高度與可用點陣圖的大小相符而引起的。 攻擊者可以以某種方式建構輸入,從而導致資料尾部寫入分配的緩衝區的外部。 值得注意的是,儘管利用該漏洞很複雜,但不排除將問題引入程式碼執行的可能性。

該修復已作為補丁發布。 可以在以下頁面評估消除發行版中的漏洞的狀態:Ubuntu、SUSE、RHEL、Fedora、Debian。 要修復 GRUB2 中的問題,僅更新軟體包是不夠的;您還需要產生新的內部數位簽章並更新安裝程式、引導程式、核心軟體包、fwupd 韌體和 shim 層。

大多數 Linux 發行版使用 Microsoft 數位簽章的小型填滿​​層來驗證 UEFI 安全啟動模式下的啟動。 該層使用自己的憑證驗證 GRUB2,這使得發行版開發人員不必讓每個核心和 GRUB 更新都經過 Microsoft 認證。 GRUB2 中的漏洞可讓您在成功驗證 shim 後、載入作業系統之前的階段執行程式碼,在安全啟動模式處於活動狀態時嵌入信任鏈並獲得對進一步啟動過程的完全控制,包括載入另一個作業系統、修改作業系統組件系統並繞過鎖定保護。

為了在不撤銷數位簽章的情況下阻止漏洞,發行版可以使用 SBAT(UEFI 安全啟動高級目標)機制,大多數流行的 Linux 發行版中的 GRUB2、shim 和 fwupd 都支援該機制。 SBAT 是與 Microsoft 共同開發的,涉及向 UEFI 元件的可執行檔添加額外的元數據,其中包括有關製造商、產品、元件和版本的資訊。 指定的元資料經過數位簽章認證,並且可以單獨包含在 UEFI 安全啟動允許或禁止的元件清單中。

SBAT 可讓您阻止對各個元件版本號使用數位簽名,而無需撤銷安全啟動金鑰。 透過 SBAT 阻止漏洞不需要使用 UEFI 憑證撤銷清單 (dbx),而是在取代內部金鑰的層級執行以產生簽章並更新 GRUB2、shim 和發行版提供的其他開機工件。 在引入SBAT 之前,更新憑證撤銷清單(dbx,UEFI 撤銷清單)是完全阻止該漏洞的先決條件,因為無論使用何種作業系統,攻擊者都可以使用帶有舊的易受攻擊版本的GRUB2 的可啟動媒體,通過數位簽章認證,以破壞 UEFI 安全啟動。

來源: opennet.ru

添加評論