]> www.infradead.org Git - users/jedix/linux-maple.git/commit
fs/coredump: prevent fsuid=0 dumps into user-controlled directories
authorJann Horn <jann@thejh.net>
Tue, 22 Mar 2016 21:25:36 +0000 (14:25 -0700)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 26 May 2016 22:46:38 +0000 (15:46 -0700)
commit1d5be1c5b76d3328c385b31934c9090826039b0a
tree918f61d33f1b94d89bfdf2e9b0dc70a3a520c783
parent024d020e519f0217783d93f4f20f1350562ebd4e
fs/coredump: prevent fsuid=0 dumps into user-controlled directories

Orabug: 23331152

[ Upstream commit 378c6520e7d29280f400ef2ceaf155c86f05a71a ]

This commit fixes the following security hole affecting systems where
all of the following conditions are fulfilled:

 - The fs.suid_dumpable sysctl is set to 2.
 - The kernel.core_pattern sysctl's value starts with "/". (Systems
   where kernel.core_pattern starts with "|/" are not affected.)
 - Unprivileged user namespace creation is permitted. (This is
   true on Linux >=3.8, but some distributions disallow it by
   default using a distro patch.)

Under these conditions, if a program executes under secure exec rules,
causing it to run with the SUID_DUMP_ROOT flag, then unshares its user
namespace, changes its root directory and crashes, the coredump will be
written using fsuid=0 and a path derived from kernel.core_pattern - but
this path is interpreted relative to the root directory of the process,
allowing the attacker to control where a coredump will be written with
root privileges.

To fix the security issue, always interpret core_pattern for dumps that
are written under SUID_DUMP_ROOT relative to the root directory of init.

Signed-off-by: Jann Horn <jann@thejh.net>
Acked-by: Kees Cook <keescook@chromium.org>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: Dan Duval <dan.duval@oracle.com>
(cherry picked from commit 2e840836fdf9ba0767134dcc5103dd25e442023b)

Conflict:

fs/coredump.c
arch/um/drivers/mconsole_kern.c
fs/coredump.c
fs/fhandle.c
fs/open.c
include/linux/fs.h
kernel/sysctl_binary.c