• R
    random,stackprotect: introduce get_random_canary function · 022c2040
    Rik van Riel 提交于
    Patch series "stackprotector: ascii armor the stack canary", v2.
    
    Zero out the first byte of the stack canary value on 64 bit systems, in
    order to mitigate unterminated C string overflows.
    
    The null byte both prevents C string functions from reading the canary,
    and from writing it if the canary value were guessed or obtained through
    some other means.
    
    Reducing the entropy by 8 bits is acceptable on 64-bit systems, which
    will still have 56 bits of entropy left, but not on 32 bit systems, so
    the "ascii armor" canary is only implemented on 64-bit systems.
    
    Inspired by the "ascii armor" code in execshield and Daniel Micay's
    linux-hardened tree.
    
    Also see https://github.com/thestinger/linux-hardened/
    
    This patch (of 5):
    
    Introduce get_random_canary(), which provides a random unsigned long
    canary value with the first byte zeroed out on 64 bit architectures, in
    order to mitigate non-terminated C string overflows.
    
    The null byte both prevents C string functions from reading the canary,
    and from writing it if the canary value were guessed or obtained through
    some other means.
    
    Reducing the entropy by 8 bits is acceptable on 64-bit systems, which
    will still have 56 bits of entropy left, but not on 32 bit systems, so
    the "ascii armor" canary is only implemented on 64-bit systems.
    
    Inspired by the "ascii armor" code in the old execshield patches, and
    Daniel Micay's linux-hardened tree.
    
    Link: http://lkml.kernel.org/r/20170524155751.424-2-riel@redhat.comSigned-off-by: NRik van Riel <riel@redhat.com>
    Acked-by: NKees Cook <keescook@chromium.org>
    Cc: Daniel Micay <danielmicay@gmail.com>
    Cc: "Theodore Ts'o" <tytso@mit.edu>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    022c2040
random.h 4.3 KB