• Breno Leitao's avatar
    powerpc/ptrace: Mitigate potential Spectre v1 · ebb0e13e
    Breno Leitao authored
    'regno' is directly controlled by user space, hence leading to a potential
    exploitation of the Spectre variant 1 vulnerability.
    
    On PTRACE_SETREGS and PTRACE_GETREGS requests, user space passes the
    register number that would be read or written. This register number is
    called 'regno' which is part of the 'addr' syscall parameter.
    
    This 'regno' value is checked against the maximum pt_regs structure size,
    and then used to dereference it, which matches the initial part of a
    Spectre v1 (and Spectre v1.1) attack. The dereferenced value, then,
    is returned to userspace in the GETREGS case.
    
    This patch sanitizes 'regno' before using it to dereference pt_reg.
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2Signed-off-by: default avatarBreno Leitao <leitao@debian.org>
    Acked-by: default avatarGustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    ebb0e13e
ptrace.c 88.9 KB