我正在使用 GRUB2、SecureBoot 和 Kernel Signing,我想我在安全启动中发现了一个可能的错误,但我想先检查一下我对这些过程的理解。
我知道启用安全启动后,只能启动使用固件中加载的密钥签名的二进制文件,因此必须对所有引导加载程序进行签名。在典型的情况下是 shim 和 GRUB。
如果引导失败或者您有一些密钥要导入或删除,Shim 应该启动 MoakManager,如果一切正常,它应该启动 GRUB,它是真正的引导加载程序。
问题是我刚刚生成了一个自定义版本的 GRUB grub-mkstandalone
,我用它用 OpenSSl 创建的新密钥进行了签名;我尚未在固件中导入的密钥,并且 shim 能够在没有来自安全启动的任何报告的情况下启动它。
我检查了密钥,mokutil --list-enrolled
它只报告了规范证书。
所以,回顾一下:
在我的 EFI 分区中,我有:
grubx64.efi
.在引导时,SHIM 可以午餐 GRUB,而 GRUB 可以成功引导 Ubuntu。
如果某些 Secure Boot 只检查第一个引导加载程序的标志,而其他加载程序负责验证它们自己以及它们预加载和用户最终加载的模块,那么这里的安全问题就非常高。
我会做更多的测试,但也许我应该打开一个错误票。
有任何想法吗?