• Stephen D. Smalley's avatar
    [PATCH] SELinux: pass requested protection to security_file_mmap/mprotect hooks · 65e05719
    Stephen D. Smalley authored
    This patch adds a reqprot parameter to the security_file_mmap and
    security_file_mprotect hooks that is the original requested protection
    value prior to any modification for read-implies-exec, and changes the
    SELinux module to allow a mode of operation (controllable via a
    checkreqprot setting) where it applies checks based on that protection
    value rather than the protection that will be applied by the kernel,
    effectively restoring SELinux's original behavior prior to the introduction
    of the read-implies-exec logic in the mainline kernel.  The patch also
    disables execmem and execmod checking entirely on PPC32, as the PPC32 ELF
    ABI presently requires RWE segments per Ulrich Drepper.
    
    At present, the read-implies-exec logic causes SELinux to see every
    mmap/mprotect read request by legacy binaries or binaries marked with
    PT_GNU_STACK RWE as a read|execute request, which tends to distort policy
    even if it reflects what is ultimately possible.  The checkreqprot setting
    allows one to set the desired behavior for SELinux, so either the current
    behavior or the original behavior is possible.  The checkreqprot value has
    a compile-time configurable default value and can also be set via boot
    parameter or at runtime via /selinux/checkreqprot if allowed by policy. 
    Thanks to Chris Wright, James Morris, and Colin Walters for comments on an
    earlier version of the patch.
    Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
    Signed-off-by: default avatarJames Morris <jmorris@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    65e05719
dummy.c 22.5 KB