GRUB8引導程式中已揭露了2個漏洞,這些漏洞允許繞過UEFI安全開機機制並執行未經驗證的程式碼,例如,在引導程式或核心層級執行惡意軟體。
讓我們記住,在大多數情況下 Linux在 UEFI 安全啟動模式下,用於驗證啟動的發行版使用了一個由微軟進行數位簽章的小型 shim 層。該層使用其自身的憑證驗證 GRUB2,因此無需發行版開發者每次核心和 GRUB 更新時都通知微軟。 GRUB2 中的漏洞允許攻擊者在 shim 層驗證成功後、作業系統啟動前執行任意程式碼。這使得攻擊者能夠在啟用安全啟動時破壞信任鏈,並完全控制後續的啟動過程,包括啟動其他作業系統、修改作業系統元件以及繞過鎖定保護。
與去年的 BootHole 漏洞一樣,更新開機載入程式不足以阻止此問題,因為攻擊者無論使用何種作業系統,都可以利用包含舊版、易受攻擊且經過數位簽署的 GRUB2 的啟動媒體來破壞 UEFI 安全啟動。此問題只能透過更新 UEFI 撤銷清單 (DBX) 來解決,但這會阻止使用舊版安裝媒體。 Linux.
對於韌體包含已更新的吊銷憑證清單的系統,只有更新後的發行版才能在 UEFI 安全啟動模式下啟動。 Linux發行版需要更新安裝程式、引導程式、核心軟體包、fwupd 韌體和 shim 層,並為其產生新的數位簽章。使用者需要更新安裝映像檔和其他可啟動介質,並將撤銷憑證清單 (dbx) 載入到 UEFI 韌體中。在 UEFI 中的 dbx 更新之前,無論作業系統如何更新,系統仍然存在漏洞。漏洞修復狀態可在以下頁面查看: UbuntuSUSE、RHEL Debian.
為了解決分發吊銷證書時出現的問題,未來計劃使用 SBAT(UEFI Secure Boot Advanced Targeting)機制,GRUB2、shim 和 fwupd 已實現對該機制的支持,並且從下次更新開始用於代替dbxtool 包提供的功能。 SBAT 是與 Microsoft 共同開發的,涉及向 UEFI 元件的可執行檔添加新的元數據,其中包括有關製造商、產品、元件和版本的資訊。 指定的元資料經過數位簽章認證,也可以包含在 UEFI 安全啟動允許或禁止的元件清單中。 因此,SBAT 將允許您在撤銷期間操作元件版本號,而無需重新產生安全啟動金鑰,也無需為核心、shim、grub2 和 fwupd 產生新簽章。
已發現的漏洞:
- CVE-2020-14372 – 使用GRUB2 中的acpi 命令,本地系統上的特權使用者可以透過將SSDT(輔助系統描述表)放置在/boot/efi 目錄中並更改grub.cfg 中的設定來載入修改後的ACPI 表。 儘管安全啟動模式處於活動狀態,但建議的 SSDT 將由核心執行,並可用於停用阻止 UEFI 安全啟動旁路路徑的鎖定保護。 這樣,攻擊者就可以在不檢查數位簽章的情況下,透過 kexec 機制實作載入其核心模組或執行程式碼。
- CVE-2020-25632 是 rmmod 命令實現中的釋放後使用記憶體訪問,當嘗試卸載任何模組而不考慮與其關聯的依賴項時,就會發生這種情況。 該漏洞不排除創建可能導致程式碼執行繞過安全啟動驗證的漏洞。
- CVE-2020-25647 初始化 USB 裝置時呼叫的 grub_usb_device_initialize() 函式中出現越界寫入。 可以透過連接專門準備的 USB 裝置來利用該問題,該裝置產生的參數的大小與為 USB 結構分配的緩衝區的大小不對應。 攻擊者可以透過操縱USB設備來執行未經安全啟動驗證的程式碼。
- CVE-2020-27749 是 grub_parser_split_cmdline() 函數中的緩衝區溢出,可能是由於在 GRUB2 命令列上指定大於 1 KB 的變數引起的。 該漏洞允許程式碼執行繞過安全啟動。
- CVE-2020-27779 – cutmem 指令允許攻擊者從記憶體中刪除一系列位址以繞過安全啟動。
- CVE-2021-3418 - 對 shim_lock 的變更創建了一個額外的向量來利用去年的漏洞 CVE-2020-15705。 透過在 dbx 中安裝用於對 GRUB2 進行簽署的證書,GRUB2 允許直接載入任何內核,而無需驗證簽章。
- CVE-2021-20225 - 執行具有大量選項的命令時可能會寫入越界資料。
- CVE-2021-20233 - 使用引號時,由於緩衝區大小計算不正確,可能會導致資料寫入越界。 計算大小時,假設需要三個字元來轉義單引號,而實際上需要四個字元。
來源: opennet.ru
