built-in shell still present in AAVMF secboot image
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| edk2 (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
| Noble |
Fix Released
|
Undecided
|
Ubuntu Security Team | ||
| Oracular |
Fix Released
|
Undecided
|
Ubuntu Security Team | ||
Bug Description
[ Impact ]
* As a response to CVE-2023-48733 / LP: #2040137, we removed the UEFI Shell from Secure Boot OVMF images.
* Unfortunately the AAVMF build code does not respect the flag that was used to
do this, and hence AAVMF remains vulnerable to Shell based Secure Boot
bypasses.
* This issue is now know as CVE-2025-2486.
* In response to CVE-2023-48733, a different patch was backported to Jammy and Focal, that merely disables the Shell, but does not remove it, which did apply to AAVMF as well, hence only Noble, Oracular, and Plucky are vulnerable.
* Plucky is getting changed to fully remove the Shell from Secure Boot AAVMF images.
* For Noble and Oracular the Jammy patch that disables the Shell will be forward ported.
[ Test Plan ]
* Verify that AAVMF on Noble and Oracular no longer allows launching the Shell with Secure Boot enabled.
[ Where problems could occur ]
* If someone is using the UEFI Shell with Secure Boot enabled in AAVMF on Noble and Oracular, their usecase will break, but unfortunately breaking such usecases is required to mitigate CVE-2025-2486.
Preserving the original bug report below:
=======
I discovered that our qemu-efi-aarch64 package (src:edk2) is still susceptible to CVE-2023-48733. That was bug 2040137. noble and oracular are vulnerable, jammy is not vulnerable, due to a different mitigation method. For jammy, we left the shell in the images, but we added code to refuse to start it if Secure Boot was enforcing. That code works for both X86 and AAVMF.
The mitigation for noble was to build the secboot images without a built-in UEFI shell by setting the build flag -DBUILD_
https:/
The first upstream release containing that is edk2-stable-202502, which is now in plucky-proposed.
This came to my attenion while packaging this new upstream release. One of the dep-8 tests started to fail - and upon investigation, I realized it *should* have been failing the entire time.
The runes for this are public, but the security impact is not explicitly mentioned. I uploaded the new upstream to Debian last weekend, and I fixed the test case with a vague changelog entry:
https:/
A user has since reported an issue about the Shell going away:
https:/
One reading that with the right context might deduce that a previous release may suffer from this vulnerability.
I think the easiest thing to do would be to forward port the jammy mitigation forward. We may want to guard it to not apply to X86, because users may have decided to enable SecureBoot on ovmf with a non-secboot image. I have updated dep-8 tests in my local tree that we could add as well that explicitly test that the shell is not available in secboot images.
CVE References
| Changed in edk2 (Ubuntu): | |
| status: | New → Fix Released |
| status: | Fix Released → Fix Committed |
| description: | updated |
| information type: | Private Security → Public Security |
| tags: | added: patch |
| Changed in edk2 (Ubuntu): | |
| status: | Fix Committed → Fix Released |

Forward porting the mitigation sounds fine to me, then I guess we should fully get rid of the shell from secboot AAVMF in unstable and plucky+1.