• O
    selinux: fix context string corruption in convert_context() · 2a524393
    Ondrej Mosnacek 提交于
    string_to_context_struct() may garble the context string, so we need to
    copy back the contents again from the old context struct to avoid
    storing the corrupted context.
    
    Since string_to_context_struct() tokenizes (and therefore truncates) the
    context string and we are later potentially copying it with kstrdup(),
    this may eventually cause pieces of uninitialized kernel memory to be
    disclosed to userspace (when copying to userspace based on the stored
    length and not the null character).
    
    How to reproduce on Fedora and similar:
        # dnf install -y memcached
        # systemctl start memcached
        # semodule -d memcached
        # load_policy
        # load_policy
        # systemctl stop memcached
        # ausearch -m AVC
        type=AVC msg=audit(1570090572.648:313): avc:  denied  { signal } for  pid=1 comm="systemd" scontext=system_u:system_r:init_t:s0 tcontext=system_u:object_r:unlabeled_t:s0 tclass=process permissive=0 trawcon=73797374656D5F75007400000000000070BE6E847296FFFF726F6D000096FFFF76
    
    Cc: stable@vger.kernel.org
    Reported-by: NMilos Malik <mmalik@redhat.com>
    Fixes: ee1a84fd ("selinux: overhaul sidtab to fix bug and improve performance")
    Signed-off-by: NOndrej Mosnacek <omosnace@redhat.com>
    Acked-by: NStephen Smalley <sds@tycho.nsa.gov>
    Signed-off-by: NPaul Moore <paul@paul-moore.com>
    2a524393
services.c 88.6 KB