linux/security/selinux
Ondrej Mosnacek 2a5243937c selinux: fix context string corruption in convert_context()
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: Milos Malik <mmalik@redhat.com>
Fixes: ee1a84fdfe ("selinux: overhaul sidtab to fix bug and improve performance")
Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
Acked-by: Stephen Smalley <sds@tycho.nsa.gov>
Signed-off-by: Paul Moore <paul@paul-moore.com>
2019-10-03 14:13:36 -04:00
..
include selinux: fix residual uses of current_security() for the SELinux blob 2019-09-04 18:41:12 -04:00
ss selinux: fix context string corruption in convert_context() 2019-10-03 14:13:36 -04:00
.gitignore SELinux: add .gitignore files for dynamic classes 2009-10-24 09:42:27 +08:00
avc.c selinux: fix avc audit messages 2019-02-05 12:34:33 -05:00
hooks.c selinux: fix residual uses of current_security() for the SELinux blob 2019-09-04 18:41:12 -04:00
ibpkey.c selinux: wrap global selinux state 2018-03-01 18:48:02 -05:00
Kconfig selinux: Remove SECURITY_SELINUX_BOOTPARAM_VALUE 2019-01-08 13:18:43 -08:00
Makefile SELinux: Remove unused selinux_is_enabled 2019-01-08 13:18:44 -08:00
netif.c selinux: always return a secid from the network caches if we find one 2019-08-05 16:49:55 -04:00
netlabel.c selinux: avoid uninitialized variable warning 2019-03-25 10:34:35 -04:00
netlink.c selinux: Cleanup printk logging in netlink 2018-06-19 13:33:05 -04:00
netnode.c selinux: always return a secid from the network caches if we find one 2019-08-05 16:49:55 -04:00
netport.c selinux: always return a secid from the network caches if we find one 2019-08-05 16:49:55 -04:00
nlmsgtab.c selinux: add support for RTM_NEWCHAIN, RTM_DELCHAIN, and RTM_GETCHAIN 2018-11-29 11:32:02 -05:00
selinuxfs.c SELinux: Abstract use of inode security blob 2019-01-08 13:18:44 -08:00
xfrm.c SELinux: Abstract use of cred security blob 2019-01-08 13:18:44 -08:00