Re: [RFC][PATCH] Randomize kernel base address on boot

Dan Rosenberg
2011-05-31T19:03:44Z

On Tue, 2011-05-31 at 19:51 +0100, Matthew Garrett wrote:
> On Tue, May 31, 2011 at 11:40:13AM -0700, H. Peter Anvin wrote:
> > On 05/31/2011 09:52 AM, Matthew Garrett wrote:
> > > The BIOS E820 map, or the kernel representation? In either case, this
> > > isn't going to work well with EFI. There are regions that will be marked
> > > as available in the E820 map that we *mustn't* touch until we've entered
> > > EFI virtual mode.
> > >
> > > (This is, clearly, insane).
> > >
> >
> > I believe we could (should!) mark them reserved, not available, in the
> > E820 map and free them later.
>
> That was my original approach, but it requires that the bootloader be
> modified and it turns out that it's a lot harder to hand reserved
> regions back to the OS than it is to just reserve it in-kernel. The
> complete inflexibility of e820 is massively unhelpful here. It's just
> not possible to represent all of the EFI memory map data in it.
>

Just for the record, I've put this patch on hold until there's some more
consensus about whether boot-time randomization of the physical kernel
address is the best approach. There are some other potential issues
that haven't been brought up yet publicly, such as the possibility of
local attackers performing cache timing attacks to find the kernel image
location at runtime, which may make traditional ASLR somewhat pointless
regardless (except in the case of remote attackers, I suppose). Perhaps
HPA's suggestion of further modularizing the kernel would have some
advantages in this regard.

-Dan

> --
> Matthew Garrett | mjg59@srcf.ucam.org