[Bug 1954683] Re: grub is missing secure boot support for compressed kernels (our arm64 kernels)
Julian Andres Klode
1954683 at bugs.launchpad.net
Wed Jan 26 14:18:46 UTC 2022
** Description changed:
[Impact]
Compressed kernels as we have on arm64 cause grub to fail in two ways:
1. In all versions, grub-check-signatures will fail to verify the
binaries using sbverify, complain about that in debconf, and then abort
- the installation/upgrade of grub-efi-arm64-signed
+ the installation/upgrade of grub-efi-arm64-signed, kernel and grub
+ upgrades can hence not be installed on secure boot systems.
2. In 2.06, the verifiers framework runs before any decompression,
causing the kernels to fail verification, as it tries to verify the
compressed data. In grub 2.04, we manually verified the file after we
had opened it (hence after all filters).
The rest of the SRU template only refers to point 1, as point 2 only
applies to the development series jammy.
[Attack plan]
1. Modify grub-check-signatures to optionally decompress kernels before passing them to sbverify
2. Modify grub to either
a) verify after decompress
b) disable shim_lock verifier on arm64, and only use the rhboot
We do not know if this is a long-term solution, we really should migrate
back to kernels that are proper EFI executables themselves such that we
can use standard EFI functions to run them as well.
[Test plan]
On a secure boot ARM64 VM:
1) Run grub-check-signatures to ensure it verifies the kernels
successfully
[Where problems could occur]
We only modify the grub-check-signatures script in the SRU to add decompression. This could change the behavior of the script, and introduce new bugs that cause false positives or false negatives.
** Description changed:
[Impact]
Compressed kernels as we have on arm64 cause grub to fail in two ways:
1. In all versions, grub-check-signatures will fail to verify the
binaries using sbverify, complain about that in debconf, and then abort
the installation/upgrade of grub-efi-arm64-signed, kernel and grub
upgrades can hence not be installed on secure boot systems.
2. In 2.06, the verifiers framework runs before any decompression,
causing the kernels to fail verification, as it tries to verify the
compressed data. In grub 2.04, we manually verified the file after we
had opened it (hence after all filters).
The rest of the SRU template only refers to point 1, as point 2 only
applies to the development series jammy.
[Attack plan]
1. Modify grub-check-signatures to optionally decompress kernels before passing them to sbverify
2. Modify grub to either
a) verify after decompress
b) disable shim_lock verifier on arm64, and only use the rhboot
We do not know if this is a long-term solution, we really should migrate
back to kernels that are proper EFI executables themselves such that we
can use standard EFI functions to run them as well.
[Test plan]
On a secure boot ARM64 VM:
- 1) Run grub-check-signatures to ensure it verifies the kernels
- successfully
+ 1) Run grub-check-signatures to ensure it verifies the kernels successfully
+ 2) Install kernel upgrade and reboot into it
[Where problems could occur]
We only modify the grub-check-signatures script in the SRU to add decompression. This could change the behavior of the script, and introduce new bugs that cause false positives or false negatives.
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to grub2 in Ubuntu.
https://bugs.launchpad.net/bugs/1954683
Title:
grub is missing secure boot support for compressed kernels (our arm64
kernels)
Status in grub2 package in Ubuntu:
Fix Released
Status in grub2 source package in Focal:
In Progress
Status in grub2 source package in Impish:
Triaged
Status in grub2 source package in Jammy:
Fix Released
Bug description:
[Impact]
Compressed kernels as we have on arm64 cause grub to fail in two ways:
1. In all versions, grub-check-signatures will fail to verify the
binaries using sbverify, complain about that in debconf, and then
abort the installation/upgrade of grub-efi-arm64-signed, kernel and
grub upgrades can hence not be installed on secure boot systems.
2. In 2.06, the verifiers framework runs before any decompression,
causing the kernels to fail verification, as it tries to verify the
compressed data. In grub 2.04, we manually verified the file after we
had opened it (hence after all filters).
The rest of the SRU template only refers to point 1, as point 2 only
applies to the development series jammy.
[Attack plan]
1. Modify grub-check-signatures to optionally decompress kernels before passing them to sbverify
2. Modify grub to either
a) verify after decompress
b) disable shim_lock verifier on arm64, and only use the rhboot
We do not know if this is a long-term solution, we really should
migrate back to kernels that are proper EFI executables themselves
such that we can use standard EFI functions to run them as well.
[Test plan]
On a secure boot ARM64 VM:
1) Run grub-check-signatures to ensure it verifies the kernels successfully
2) Install kernel upgrade and reboot into it
[Where problems could occur]
We only modify the grub-check-signatures script in the SRU to add decompression. This could change the behavior of the script, and introduce new bugs that cause false positives or false negatives.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1954683/+subscriptions
More information about the foundations-bugs
mailing list