On 6/22/20 12:31 PM, Kees Cook wrote: > This provides the ability for architectures to enable kernel stack base > address offset randomization. This feature is controlled by the boot > param "randomize_kstack_offset=on/off", with its default value set by > CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. > > Co-developed-by: Elena Reshetova <elena.reshetova@xxxxxxxxx> > Signed-off-by: Elena Reshetova <elena.reshetova@xxxxxxxxx> > Link: https://lore.kernel.org/r/20190415060918.3766-1-elena.reshetova@xxxxxxxxx > Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx> > --- > Makefile | 4 ++++ > arch/Kconfig | 23 ++++++++++++++++++ > include/linux/randomize_kstack.h | 40 ++++++++++++++++++++++++++++++++ > init/main.c | 23 ++++++++++++++++++ > 4 files changed, 90 insertions(+) > create mode 100644 include/linux/randomize_kstack.h Hi, Please add documentation for the new kernel boot parameter to Documentation/admin-guide/kernel-parameters.txt. > diff --git a/arch/Kconfig b/arch/Kconfig > index 1ea61290900a..1f52c9cfefca 100644 > --- a/arch/Kconfig > +++ b/arch/Kconfig > @@ -883,6 +883,29 @@ config VMAP_STACK > virtual mappings with real shadow memory, and KASAN_VMALLOC must > be enabled. > > +config HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET > + def_bool n > + help > + An arch should select this symbol if it can support kernel stack > + offset randomization with calls to add_random_kstack_offset() > + during syscall entry and choose_random_kstack_offset() during > + syscall exit. Downgrading of -fstack-protector-strong to > + -fstack-protector should also be applied to the entry code and > + closely examined, as the artificial stack bump looks like an array > + to the compiler, so it will attempt to add canary checks regardless > + of the static branch state. > + > +config RANDOMIZE_KSTACK_OFFSET_DEFAULT > + bool "Randomize kernel stack offset on syscall entry" > + depends on HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET > + help > + The kernel stack offset can be randomized (after pt_regs) by > + roughly 5 bits of entropy, frustrating memory corruption > + attacks that depend on stack address determinism or > + cross-syscall address exposures. This feature is controlled > + by kernel boot param "randomize_kstack_offset=on/off", and this > + config chooses the default boot state. thanks. -- ~Randy