如何修复启动时的安全启动错误“映像验证失败,*ACCESS DENIED*”?

如何修复启动时的安全启动错误“映像验证失败,*ACCESS DENIED*”?

当我今天早上启动我的机器时(我仅启用了安全启动和 UEFI),我收到此错误(抱歉图像质量较低):

在此处输入图片描述

这是什么意思Image failed to verify with *ACCESS DENIED*?按下后,OK我设法进入 BIOS 并关闭安全启动,并将 UEFI 选项设置为同时接受 UEFI 和 Legacy,这似乎奏效了,现在它可以启动了,但是我无法将其设置为再次启用安全启动,这对我构成了安全威胁,所以我想知道这里的问题是什么?为什么我会收到错误?我的意思是,是否有错误需要担心?为什么会是*ACCESS DENIED*我?

我能想到的唯一一件事是我在今天早上出现此问题之前昨晚可能做过的就是接收一些 grub 的安全更新和其他一些东西:

在此处输入图片描述

所以基本上我需要知道这个错误是什么意思,为什么会出现这个错误,以及如何解决这种情况。我的意思是,这个错误是否意味着我在某种程度上受到了攻击,应该重新安装或做其他事情?或者这只是一个故障?如果是这样,我该如何修复它,以便我可以再次使用安全启动?

我在联想 B590 上运行带有 GNOME 3.18 的 Ubuntu GNOME 15.10。

信息更新:

该命令的输出efibootmgr是:

BootCurrent: 000E
Timeout: 0 seconds
BootOrder: 000E,0000,0001,0002,0003,000C,0006,0007,0008,0009,000A,000B,000D
Boot0000  Setup
Boot0001  Boot Menu
Boot0002  Diagnostic Splash Screen
Boot0003  Lenovo Diagnostics
Boot0004  Startup Interrupt Menu
Boot0005  Rescue and Recovery
Boot0006* USB CD
Boot0007* USB FDD
Boot0008* ATAPI CD1
Boot0009* ATA HDD0
Boot000A* ATA HDD1
Boot000B* ATA HDD2
Boot000C* USB HDD
Boot000D* PCI LAN
Boot000E* ubuntu

答案1

根据https://bugs.launchpad.net/bugs/1528345这是由于 Ubuntu 以不正确的方式为 grub 发送安全更新造成的,可以通过安装 grub-efi-amd64-signed 软件包,然后在 BIOS 中重新启用安全启动来解决。这对我来说很有效。(我还检查了重新安装软件包是否会导致shimx64.efi在输出中显示efibootmgr -v而不是grubx64.efi,当问题出现时,输出中会出现 。)

答案2

首先,返回固件并禁用 CSM(“传统启动”)支持。如果您在纯 EFI 环境中启动(听起来您就是这样),那么此选项对您没有好处,并且可能会在以后给您带来麻烦。(请参阅我关于这个主题的页面了解有关 CSM 问题的更多信息。)

其次,错误消息表明您的计算机试图启动未使用授权安全启动密钥签名的启动加载程序。(有些警告此类违规的消息非常晦涩难懂——它们因 EFI 而异,在某些情况下因后续程序而异,具体取决于违规发生的位置。)在计算机成功启动后弹出这样的消息,并且您的启动程序或固件设置没有任何变化,这是一个很大的危险信号。

我没有看到关于 GRUB 或 Shim 更新的说明,因此你的启动过程不应该受到这些更新的影响。另一方面,可能是其他东西修改了启动路径。这可能是一个无辜的更改,但出了问题并导致了故障——例如,如果您使用另一个 Linux 发行版进行三重启动,它可能会将启动路径更改为未签名的 GRUB。如果是这种情况,您可以使用efibootmgr--type将启动顺序更改回 Ubuntu 的 GRUB(通过 Shim)sudo efibootmgr -v以查看当前启动顺序(在行上BootOrder)和选项(输出的大部分)。找到通过 Shim 启动的 Ubuntu 行,并使用-o选项更改顺序,使其位于第一个,例如,sudo efibootmgr -o 0009,0000,001B如果所需条目是,Boot0009并且两个备选方案是Boot0000Boot001B。另一种可能是无关的 Windows 更新干扰了 GRUB。(微软有能力更新大多数计算机的安全启动密钥,如果他们搞砸了这一点或出于某种原因故意将 Ubuntu 的 Shim 列入黑名单,您可能会看到您描述的错误。)

有小概率会发生恶意行为——某些恶意软件可能已自行安装在您的启动路径中。如果发生这种情况,则通过禁用安全启动,您已经允许恶意软件运行。如果是这种情况,则无法确定后果会是什么。我并不是要吓唬你;发生这种情况的几率很低。如果发生这种情况但是,一旦发生这种情况,就需要专家 TLC 来恢复您的计算机,因为众所周知,预启动恶意软件很难摆脱。

更新 GRUB 配置不太可能带来任何好处,尽管如果您将 GRUB 从启动未签名的内核版本切换到签名的内核版本,则可能会带来一些好处。(据我上次检查,Ubuntu 的 GRUB 可以启动未签名的内核,但这种情况将来可能会改变。其他一些 GRUB,例如 Fedora 使用的 GRUB,则更为严格,只会启动签名的内核。)

您可以使用检查启动路径efibootmgr并验证它是否默认通过 Shim 启动 - 也就是说,启动顺序中第一项的引导加载程序应该是EFI\ubuntu\shimx64.efi。如果是不是您可能能够将启动顺序改回来。如果如果是这样,那么您的shimx64.efi二进制文件可能已损坏(或更糟的是,被恶意软件替换)。完全重新安装 GRUB 可能会解决问题。(Boot Repair 可以相当轻松地完成此操作。)

答案3

GRUB 软件包已于昨天 (2015 年 12 月 15 日) 更新:2.02~beta2-29ubuntu0.2
升级过程中可能出现问题,但应该不存在安全问题。

将 BIOS 设置改回安装 Ubuntu 时的状态。
然后以 EFI 模式将 GRUB 引导加载程序重新安装到 Ubuntu 安装中。

从 Ubuntu 安装媒体启动 - 打开终端并执行:

sudo mount /dev/sd*** /mnt
sudo mount /dev/sd** /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sd*
update-grub  

笔记:

sd*= 磁盘 | sd**= efi 分区 | sd***= 系统分区
要识别磁盘和分区号,您可以使用 GParted。

启动 BIOS 并选择 Ubuntu 作为默认操作系统。

USN-参考:Ubuntu 安全通知 2836-1:GRUB 漏洞

如果它不起作用,您也可以尝试启动修复工具。
从 Ubuntu 安装媒体启动,打开终端并执行:

sudo add-apt-repository ppa:yannubuntu/boot-repair  
sudo apt-get update  
sudo apt-get install -y boot-repair && boot-repair

相关内容