Re: [PATCH v6 00/12] implement KASLR for powerpc/fsl_booke/32
From: Scott Wood <oss@buserror.net>
Date: 2019-08-28 04:12:24
Also in:
lkml
On Fri, 2019-08-09 at 18:07 +0800, Jason Yan wrote:
This series implements KASLR for powerpc/fsl_booke/32, as a security feature that deters exploit attempts relying on knowledge of the location of kernel internals. Since CONFIG_RELOCATABLE has already supported, what we need to do is map or copy kernel to a proper place and relocate.
Have you tested this with a kernel that was loaded at a non-zero address? I tried loading a kernel at 0x04000000 (by changing the address in the uImage, and setting bootm_low to 04000000 in U-Boot), and it works without CONFIG_RANDOMIZE and fails with.
Freescale Book-E parts expect lowmem to be mapped by fixed TLB entries(TLB1). The TLB1 entries are not suitable to map the kernel directly in a randomized region, so we chose to copy the kernel to a proper place and restart to relocate. Entropy is derived from the banner and timer base, which will change every build and boot. This not so much safe so additionally the bootloader may pass entropy via the /chosen/kaslr-seed node in device tree.
How complicated would it be to directly access the HW RNG (if present) that early in the boot? It'd be nice if a U-Boot update weren't required (and particularly concerning that KASLR would appear to work without a U-Boot update, but without decent entropy). -Scott