cloud images in xenial do not get their boot path updated because we don't call grub-install --force-extra-removable
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
grub2-signed (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Xenial |
Fix Released
|
Undecided
|
Steve Langasek | ||
Bionic |
Fix Released
|
Undecided
|
Unassigned | ||
grub2-unsigned (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Xenial |
Fix Released
|
Undecided
|
Unassigned | ||
Bionic |
Fix Released
|
Undecided
|
Unassigned | ||
Jammy |
Fix Released
|
Undecided
|
Unassigned | ||
shim-signed (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
Xenial |
Fix Released
|
Undecided
|
Steve Langasek | ||
Bionic |
Invalid
|
Undecided
|
Unassigned |
Bug Description
[Impact]
Verification of the previous SRU, bug #1928674, exposed that we have a regression on xenial/arm64 cloud images because they boot from the removable media path, which is not updated by the maintainer scripts in those images; and because we have never supported the monolithic signed EFI executable on xenial/arm64, there is an ABI mismatch between the updated contents of /boot/grub and the not-updated contents of \EFI\boot\
The fact that \EFI\boot is not updated on xenial cloud images is ALSO an issue on amd64 - it doesn't lead to a boot failure there because we do support secureboot on xenial/amd64, so the bootloader doesn't depend on loading modules from /boot/grub; however, \EFI\boot not being uploaded means that the systems still do not benefit from the updated grub, AND are subject to boot failures in the future due to the fact that the old shim has been revoked by Microsoft and these revocations may propagate to the cloud instance's revocation database in nvram, one way or another.
[Test Case]
- Boot an arm64 Ubuntu image in AWS
- Enable -proposed
- Upgrade the grub-efi-amd64 package
- Reboot
- Verify that the system comes up
- Boot an amd64 Ubuntu image in GCE
- rm /boot/efi/
- touch /boot/efi/
- Enabled -proposed
- Upgrade the grub-efi-
- Reboot
- Verify that the system comes up
- rm /boot/efi/
- touch /boot/efi/
- Upgrade the shim-signed package
- Reboot
- Verify that the system comes up
[Where problems could occur]
Because there were no provisions in the cloud images at the time they were built for updates to \EFI\boot, the only practical way to fix this for existing images (which is where the upgrade bug is an issue) is by unconditionally installing to the removable media path on all systems as part of the upgrade. This means that non-cloud systems, which do not normally boot Ubuntu via \EFI\boot, will have the contents of \EFI\boot replaced when this was not previously the case (and contrary to the debconf setting). In newer Ubuntu releases, we install to \EFI\boot unconditionally; but this is a behavior change in a stable series. If a user has something other than Ubuntu grub+shim installed to \EFI\boot, this may be an unexpected behavior change from an SRU.
The risk of this causing a problem for users is mitigated on bionic by the fact that all the most recent install media for Ubuntu 18.04 also install shim+grub to the removable path, so this is already the default behavior.
CVE References
Changed in grub2-signed (Ubuntu): | |
status: | New → Invalid |
Changed in grub2-unsigned (Ubuntu): | |
status: | New → Invalid |
Changed in shim-signed (Ubuntu): | |
status: | New → Invalid |
description: | updated |
Changed in grub2-signed (Ubuntu Xenial): | |
assignee: | nobody → Steve Langasek (vorlon) |
description: | updated |
description: | updated |
Changed in grub2-signed (Ubuntu Xenial): | |
status: | New → In Progress |
Changed in grub2-signed (Ubuntu Bionic): | |
status: | New → In Progress |
Changed in grub2-unsigned (Ubuntu Xenial): | |
status: | New → In Progress |
Changed in grub2-unsigned (Ubuntu Bionic): | |
status: | New → In Progress |
Changed in grub2-signed (Ubuntu): | |
status: | Invalid → Fix Released |
Changed in grub2-unsigned (Ubuntu): | |
status: | Invalid → Fix Released |
shim-signed upload is blocked on the availability of a new signed binary from Microsoft that includes the fix for bug #1928434. The shim part of the test case will therefore fail until then, but this should not block release of the grub fixes.