Re: [PATCH] doc: self-protection: provide initial details
From: James Morris
Date: Mon May 23 2016 - 05:30:12 EST
On Mon, 16 May 2016, Kees Cook wrote:
> +#### Segregation of kernel memory from userspace memory
> +
> +The kernel must never execute userspace memory. The kernel must also never
> +access userspace memory without explicit expectation to do so. These
> +rules can be enforced either by support of hardware-based restrictions
> +(x86's SMEP/SMAP, ARM's PXN/PAN) or via emulation (ARM's Memory Domains).
> +By blocking userspace memory in this way, execution and data parsing
> +cannot be passed to trivially-controlled userspace memory, forcing
> +attacks to operate entirely in kernel memory.
One caveat is that there may be ways to bypass these protections, e.g. via
aliased (direct mapped) memory.
I'd also note that some platforms have separate kernel and memory spaces,
like Sparc.
> +To protect against even privileged users, systems may need to either
> +disable module loading entirely (e.g. monolithic kernel builds or
> +modules_disabled sysctl), or provide signed modules (e.g.
> +CONFIG_MODULE_SIG_FORCE, or dm-crypt with LoadPin), to keep from having
> +oot load arbitrary kernel code via the module loader interface.
Or utilize an appropriate MAC policy.
--
James Morris
<jmorris@xxxxxxxxx>