Secure-Boot

安全啟動 + 墊片可以防止邪惡的女僕嗎?

  • December 9, 2020

我正在將我的 Arch linux 設置為啟用 Windows 和安全啟動的雙啟動。據我了解安全啟動,目標是防止攻擊者修改啟動管理器和/或核心。對於 Windows,當我讓我的筆記型電腦無人看管時,這也適用,因為修改後的引導管理器不會使用 Microsoft 的密鑰進行簽名。

幾乎所有的 Linux 發行版都使用shim,我也是。設置和重啟後,我需要註冊 GRUB 引導管理器的雜湊值。到目前為止,一切都很好。然後我通過更改 grub 二進製文件中的一個字節來模擬攻擊並重新啟動。再次提示我註冊其雜湊值,並且可以毫不費力地這樣做。

那麼,如果可以通過註冊新雜湊輕鬆“修復”安全違規行為,這將如何改進呢?有什麼我誤解了嗎?

安全啟動本身並不能防止對機器進行物理訪問的攻擊者。我建議使用密碼來防止未經授權訪問韌體設置。安全引導的主要目標是防止惡意軟體插入受感染的核心和引導載入程序。

具有物理訪問權限的使用者可以註冊新的公鑰(即將它們儲存在韌體控制的非易失性儲存器中)。這些公鑰用於驗證引導載入程序、核心以及在引導時執行的任何其他內容的完整性。註冊新密鑰後,攻擊者可以安裝一個新核心,該核心使用攻擊者的私鑰簽名。或者,具有物理訪問權限的攻擊者可以完全禁用安全啟動。

但是,關鍵在於:只有在這樣做的人可以物理訪問螢幕並且可以進入韌體設置時,才能添加新鍵。需要物理訪問才能替換或添加新密鑰。安全啟動旨在防止攻擊者試圖通過在系統已經啟動時侵入電腦來修改關鍵系統文件的情況。這種闖入可以通過網路發生,或者使用合法使用者被欺騙執行的特洛伊木馬程序。即使安全啟動處於活動狀態,攻擊者也可以修改核心映像,但韌體拒絕在下次啟動時啟動核心,因為簽名不匹配。

因此,UEFI 安全啟動確實有其用途,但這裡還有一點需要考慮。由於電腦預裝了 Microsoft 和硬體製造商的密鑰,因此您無法控制哪些二進製文件能夠在電腦啟動時執行。已在簽名的 GRUB 映像中檢測到可用於規避安全引導的錯誤。微軟和硬體供應商可能會左右簽署各種二進製文件,而你無從知曉。

此問題的解決方案是刪除所有韌體密鑰並用您自己的替換它們。這樣,只有您可以簽署允許在您的電腦上執行(在啟動時)的二進製文件。但請注意:有報導稱某些電腦需要特殊的驅動程序才能啟動,並且這些驅動程序使用需要原始公鑰存在的密鑰進行簽名,否則機器將無法啟動。

引用自:https://unix.stackexchange.com/questions/623502