Re: [PATCH] efi/memattr: Ignore table if the size is clearly bogus

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Ard,

On Thu, Oct 31, 2024 at 11:44:00AM +0100, Ard Biesheuvel wrote:
> From: Ard Biesheuvel <ardb@xxxxxxxxxx>
> 
> There are reports [0] of cases where a corrupt EFI Memory Attributes
> Table leads to out of memory issues at boot because the descriptor size
> and entry count in the table header are still used to reserve the entire
> table in memory, even though the resulting region is gigabytes in size.
> 
> Given that the EFI Memory Attributes Table is supposed to carry up to 3
> entries for each EfiRuntimeServicesCode region in the EFI memory map,
> and given that there is no reason for the descriptor size used in the
> table to exceed the one used in the EFI memory map, 3x the size of the
> entire EFI memory map is a reasonable upper bound for the size of this
> table. This means that sizes exceeding that are highly likely to be
> based on corrupted data, and the table should just be ignored instead.

First of all, *thank you* for the quick fix.

A few questions/thoughts that are still bugging me. If you know the
answer for any, I would appreciate hearing from you.

1) This patch protects the kernel from a broken firmware. It has nothing
to do with the kernel code. The kernel is being a victim here.

2) The bug reported in [0], clearly found that the problem was likely
introduced by 2e6871a632a99d9b9e2ce3a7847acabe99e5a26e[1] from a cold
boot. How it might be related to
2e6871a632a99d9b9e2ce3a7847acabe99e5a26e ?

3) Does having 2e6871a632a99d9b9e2ce3a7847acabe99e5a26e make the
firmware bug (EFI Memory Attribute Trable corruption) more visible by
any chance?

[1] https://bugzilla.suse.com/show_bug.cgi?id=1231465#c44
Thank you!
--breno




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux