randstruct: Mark various structs for randomization
authorKees Cook <keescook@chromium.org>
Fri, 28 Oct 2016 08:22:25 +0000 (01:22 -0700)
committerKees Cook <keescook@chromium.org>
Fri, 30 Jun 2017 19:00:51 +0000 (12:00 -0700)
commit3859a271a003aba01e45b85c9d8b355eb7bf25f9
tree850c019e6a6449857e864b6a545b053ffe2f99a9
parentffa47aa678cfaa9b88e8a26cfb115b4768325121
randstruct: Mark various structs for randomization

This marks many critical kernel structures for randomization. These are
structures that have been targeted in the past in security exploits, or
contain functions pointers, pointers to function pointer tables, lists,
workqueues, ref-counters, credentials, permissions, or are otherwise
sensitive. This initial list was extracted from Brad Spengler/PaX Team's
code in the last public patch of grsecurity/PaX based on my understanding
of the code. Changes or omissions from the original code are mine and
don't reflect the original grsecurity/PaX code.

Left out of this list is task_struct, which requires special handling
and will be covered in a subsequent patch.

Signed-off-by: Kees Cook <keescook@chromium.org>
38 files changed:
arch/x86/include/asm/processor.h
fs/mount.h
fs/namei.c
fs/proc/internal.h
include/linux/binfmts.h
include/linux/cdev.h
include/linux/cred.h
include/linux/dcache.h
include/linux/fs.h
include/linux/fs_struct.h
include/linux/ipc.h
include/linux/ipc_namespace.h
include/linux/key-type.h
include/linux/kmod.h
include/linux/kobject.h
include/linux/lsm_hooks.h
include/linux/mm_types.h
include/linux/module.h
include/linux/mount.h
include/linux/msg.h
include/linux/path.h
include/linux/pid_namespace.h
include/linux/proc_ns.h
include/linux/sched.h
include/linux/sched/signal.h
include/linux/sem.h
include/linux/shm.h
include/linux/sysctl.h
include/linux/tty.h
include/linux/tty_driver.h
include/linux/user_namespace.h
include/linux/utsname.h
include/net/af_unix.h
include/net/neighbour.h
include/net/net_namespace.h
include/net/sock.h
kernel/futex.c
security/keys/internal.h