Skip to content

Commit 7844c65

Browse files
committed
boot: skip loading DTBs in type 1 when secure boot is enabled
The kernel loads the DTB from EFI before ExitBootServices(): https://github.com/torvalds/linux/blob/v6.5/drivers/firmware/efi/libstub/fdt.c#L245 DTBs can map and assign arbitrary memory ranges. The kernel refuses to load one from the dtb= kernel command line parameter when secure boot is enabled, as it's not safe. Let's do the same for type 1 entries, as they are unverified. This only affects arm64 and riscv64, firmwares do not support DTB on x86. (cherry picked from commit 4b4d612) (cherry picked from commit c1404ff)
1 parent b6b50ac commit 7844c65

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

src/boot/efi/boot.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2380,7 +2380,9 @@ static EFI_STATUS image_start(
23802380
if (err != EFI_SUCCESS)
23812381
return log_error_status(err, "Error loading %ls: %m", entry->loader);
23822382

2383-
if (entry->devicetree) {
2383+
/* DTBs are loaded by the kernel before ExitBootServices, and they can be used to map and assign
2384+
* arbitrary memory ranges, so skip it when secure boot is enabled as the DTB here is unverified. */
2385+
if (entry->devicetree && !secure_boot_enabled()) {
23842386
err = devicetree_install(&dtstate, image_root, entry->devicetree);
23852387
if (err != EFI_SUCCESS)
23862388
return log_error_status(err, "Error loading %ls: %m", entry->devicetree);

0 commit comments

Comments
 (0)