summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2014-12-05 18:14:19 -0600
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-01-08 10:00:50 -0800
commit804733ad85b1ab68812fa438b3b4133d1d85581a (patch)
tree5779fb0fcdc81dc9159d1b6295cd503a9ad2b1ba /kernel
parentf077e88fc9f0befcf0441be2fed9516881ab02ef (diff)
downloadkernel-common-804733ad85b1ab68812fa438b3b4133d1d85581a.tar.gz
kernel-common-804733ad85b1ab68812fa438b3b4133d1d85581a.tar.bz2
kernel-common-804733ad85b1ab68812fa438b3b4133d1d85581a.zip
userns: Don't allow unprivileged creation of gid mappings
commit be7c6dba2332cef0677fbabb606e279ae76652c3 upstream. As any gid mapping will allow and must allow for backwards compatibility dropping groups don't allow any gid mappings to be established without CAP_SETGID in the parent user namespace. For a small class of applications this change breaks userspace and removes useful functionality. This small class of applications includes tools/testing/selftests/mount/unprivilged-remount-test.c Most of the removed functionality will be added back with the addition of a one way knob to disable setgroups. Once setgroups is disabled setting the gid_map becomes as safe as setting the uid_map. For more common applications that set the uid_map and the gid_map with privilege this change will have no affect. This is part of a fix for CVE-2014-8989. Reviewed-by: Andy Lutomirski <luto@amacapital.net> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/user_namespace.c5
1 files changed, 0 insertions, 5 deletions
diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c
index 36b432b0cb7b..8ec7cc50866d 100644
--- a/kernel/user_namespace.c
+++ b/kernel/user_namespace.c
@@ -814,11 +814,6 @@ static bool new_idmap_permitted(const struct file *file,
if (uid_eq(uid, file->f_cred->fsuid))
return true;
}
- else if (cap_setid == CAP_SETGID) {
- kgid_t gid = make_kgid(ns->parent, id);
- if (gid_eq(gid, file->f_cred->fsgid))
- return true;
- }
}
/* Allow anyone to set a mapping that doesn't require privilege */