There are several CVEs both in GRUB2 and the Linux kernel (details
below) that compromise UEFI Secure boot and kernel lockdown.
* These bugs allow unsigned code to be booted and run on hardware
configured to prevent that.
* Affected vendors will be publishing fixed, re-signed shim, grub and
kernels to allow systems to continue to boot post-mitigation.
Details of exactly what is published will vary from vendor to
* The actual mitigation is a UEFI Revocation List update that
prevents exploitable binaries from loading. This list will be
available from: https://uefi.org/revocationlistfile soon. Vendors
may also include this in an updated release of a dbxtool package.
* In addition to the Microsoft Key Encryption Key (KEK)-signed UEFI
Revocation List updates, hardware vendors may also issue their own
updates signed with their own KEKs. Again, this will vary from
vendor to vendor.
Exploiting these flaws require a significant level of access to a
system. The flaws would allow, for example, a nefarious kernel to hide
a rootkit or similar to be loaded onto a system that has UEFI Secure
Boot enabled. It is important to note that updating the exploitable
binaries does not in fact mitigate the CVE, since an attacker could
bring an old, exploitable, signed copy of a grub binary onto a system
with whatever kernel they wished to load. In order to mitigate, the
UEFI Revocation List (dbx) must be updated on a system. Once the UEFI
Revocation List is updated on a system, it will no longer boot
binaries that pre-date these fixes. This includes old install media.
Fully mitigating a system against these flaws should be done with the
clear understanding that old kernels and old install media will not
boot on a secure-boot system.
There are two kernel CVEs that are already public: CVE-2019-20908 and
CVE-2020-15780. In addition there are the following GRUB2 CVEs:
This is the original flaw discovered by Eclypsium, also known as
"BootHole" and is describe in Eclypsium's paper at
grub2: grub_malloc does not validate allocation size allowing for
arithmetic overflow and subsequent heap-based buffer overflow.
grub2: Integer overflow in grub_squash_read_symlink may lead to
heap based overflow.
grub2: Integer overflow read_section_from_string may lead to heap
grub2: Integer overflow in grub_ext2_read_link leads to heap based
grub: avoid loading unsigned kernels when grub is booted directly
under secureboot without shim
script: Avoid a use-after-free when redefining a function during
grub2: Integer overflow in initrd size handling.