GRUB2 中可繞過 UEFI 安全啟動的漏洞

GRUB2開機載入程式中已修正了7個漏洞,這些漏洞可讓您繞過UEFI安全開機機制並執行未經驗證的程式碼,例如引入在開機載入程式或核心層級執行的惡意軟體。 此外,shim 層中存在一個漏洞,該漏洞也允許您繞過 UEFI 安全啟動。 這組漏洞的代號為 Boothole 3,與先前在開機載入程式中發現的類似問題類似。

為了解決 GRUB2 和 shim 中的問題,發行版將能夠使用 GRUB2、shim 和 fwupd 支援的 SBAT(UEFI 安全開機進階目標)機制。 SBAT 是與 Microsoft 共同開發的,涉及向 UEFI 元件的可執行檔添加額外的元數據,其中包括有關製造商、產品、元件和版本的資訊。 指定的元資料經過數位簽章認證,並且可以單獨包含在 UEFI 安全啟動允許或禁止的元件清單中。

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

為了解決引導程式中的問題,發行版必須建立新的內部數位簽章並更新安裝程式、引導程式、核心包、fwupd 韌體和填充層。 在引入SBAT 之前,更新憑證撤銷清單(dbx、UEFI 撤銷清單)是完全阻止該漏洞的先決條件,因為無論使用何種作業系統,攻擊者都可以使用具有舊的易受攻擊版本的GRUB2 的可啟動媒體,通過數位簽章認證,以破壞 UEFI 安全啟動。

SBAT 不是撤銷簽名,而是允許您阻止其對各個元件版本號的使用,而無需撤銷安全啟動金鑰。 透過 SBAT 阻止漏洞不需要使用 UEFI 憑證撤銷清單 (dbx),而是在取代內部金鑰的層級執行以產生簽章並更新 GRUB2、shim 和發行版提供的其他開機工件。 目前,SBAT 支援已添加到大多數流行的 Linux 發行版中。

已發現的漏洞:

  • CVE-2021-3696、CVE-2021-3695是處理特殊設計的PNG影像時基於堆的緩衝區溢出,理論上可用於執行攻擊者程式碼並繞過UEFI安全啟動。 值得注意的是,該問題很難利用,因為創建有效的利用需要考慮大量因素以及有關記憶體佈局的資訊的可用性。
  • CVE-2021-3697 - JPEG 影像處理程式碼中的緩衝區下溢。 利用該問題需要了解記憶體佈局,其複雜程度與 PNG 問題 (CVSS 7.5) 大致相同。
  • CVE-2022-28733 - grub_net_recv_ip4_packets() 函式中的整數溢位允許傳送特製 IP 封包影響 rsm->total_len 參數。 此問題被標記為所提出的漏洞中最危險的(CVSS 8.1)。 如果成功利用漏洞,則可以透過分配故意較小的記憶體大小來將資料寫入緩衝區邊界之外。
  • CVE-2022-28734 - 處理剝離的 HTTP 標頭時出現單字節緩衝區溢位。 解析特製 HTTP 請求時,問題可能會導致 GRUB2 元資料損壞(在緩衝區末端寫入空位元組)。
  • CVE-2022-28735 shim_lock 驗證程式中存在允許非核心檔案載入的問題。 此漏洞可用於在 UEFI 安全啟動模式下載入未簽署的核心模組或未經驗證的程式碼。
  • CVE-2022-28736 透過重新執行 chainloader 命令,grub_cmd_chainloader() 函數中已釋放的記憶體訪問,用於引導 GRUB2 不支援的作業系統。 如果攻擊者能夠確定 GRUB2 中的記憶體分配,則利用該漏洞可能會導致攻擊者程式碼執行
  • CVE-2022-28737 - 當載入並執行精心設計的 EFI 映像時,handle_image() 函數中會發生填滿層中的緩衝區溢位。

來源: opennet.ru

添加評論