Blame SOURCES/CVE-2022-0492.patch

7e7f89
From d6dc1581c25221b17e1447f5eea0ee156a69e986 Mon Sep 17 00:00:00 2001
7e7f89
From: Joe Lawrence <joe.lawrence@redhat.com>
7e7f89
Date: Fri, 25 Mar 2022 14:49:39 -0400
7e7f89
Subject: [KPATCH CVE-2022-0492] cgroup-v1: kpatch fixes for CVE-2022-0492
7e7f89
Content-type: text/plain
7e7f89
7e7f89
Kernels:
7e7f89
3.10.0-1160.24.1.el7
7e7f89
3.10.0-1160.25.1.el7
7e7f89
3.10.0-1160.31.1.el7
7e7f89
3.10.0-1160.36.2.el7
7e7f89
3.10.0-1160.41.1.el7
7e7f89
3.10.0-1160.42.2.el7
7e7f89
3.10.0-1160.45.1.el7
7e7f89
3.10.0-1160.49.1.el7
7e7f89
3.10.0-1160.53.1.el7
7e7f89
3.10.0-1160.59.1.el7
7e7f89
7e7f89
Changes since last build:
7e7f89
arches: x86_64 ppc64le
7e7f89
cgroup.o: changed function: cgroup_release_agent_write
7e7f89
cgroup.o: changed function: parse_cgroupfs_options
7e7f89
---------------------------
7e7f89
7e7f89
Kpatch-MR: https://gitlab.com/redhat/prdsc/rhel/src/kpatch/rhel-7/-/merge_requests/36
7e7f89
Approved-by: Yannick Cote (@ycote1)
7e7f89
Modifications: none
7e7f89
7e7f89
commit a1d7f90e939b5ca2fddb1e295c6cf8bfb97a69f0
7e7f89
Author: Waiman Long <longman@redhat.com>
7e7f89
Date:   Wed Feb 9 09:23:49 2022 -0500
7e7f89
7e7f89
    cgroup-v1: Require capabilities to set release_agent
7e7f89
7e7f89
    Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2052162
7e7f89
    CVE: CVE-2022-0492
7e7f89
    Conflicts:
7e7f89
     1) For RHEL7, the right file to be modified is kernel/cgroup.c.
7e7f89
     2) The cgroup filesystem files in RHEL7 are created via direct
7e7f89
        manipulation of dentries and inode and credential at the time of
7e7f89
        creation are not stored. So the init_user_ns comparison check in
7e7f89
        the upstream commit isn't applicable. It is also less important
7e7f89
        and so the checks are dropped.
7e7f89
     3) The cgroup mount parameter parsing is done in
7e7f89
        parse_cgroupfs_options() instead.
7e7f89
7e7f89
    commit 24f6008564183aa120d07c03d9289519c2fe02af
7e7f89
    Author: Eric W. Biederman <ebiederm@xmission.com>
7e7f89
    Date:   Thu, 20 Jan 2022 11:04:01 -0600
7e7f89
7e7f89
        cgroup-v1: Require capabilities to set release_agent
7e7f89
7e7f89
        The cgroup release_agent is called with call_usermodehelper.  The function
7e7f89
        call_usermodehelper starts the release_agent with a full set fo capabilities.
7e7f89
        Therefore require capabilities when setting the release_agaent.
7e7f89
7e7f89
        Reported-by: Tabitha Sable <tabitha.c.sable@gmail.com>
7e7f89
        Tested-by: Tabitha Sable <tabitha.c.sable@gmail.com>
7e7f89
        Fixes: 81a6a5cdd2c5 ("Task Control Groups: automatic userspace notification of idle cgroups")
7e7f89
        Cc: stable@vger.kernel.org # v2.6.24+
7e7f89
        Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
7e7f89
        Signed-off-by: Tejun Heo <tj@kernel.org>
7e7f89
7e7f89
    Signed-off-by: Waiman Long <longman@redhat.com>
7e7f89
7e7f89
Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
7e7f89
---
7e7f89
 kernel/cgroup.c | 15 +++++++++++++++
7e7f89
 1 file changed, 15 insertions(+)
7e7f89
7e7f89
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
7e7f89
index 4777d5bc3142..e4138e5a7879 100644
7e7f89
--- a/kernel/cgroup.c
7e7f89
+++ b/kernel/cgroup.c
7e7f89
@@ -1149,6 +1149,13 @@ static int parse_cgroupfs_options(char *data, struct cgroup_sb_opts *opts)
7e7f89
 			/* Specifying two release agents is forbidden */
7e7f89
 			if (opts->release_agent)
7e7f89
 				return -EINVAL;
7e7f89
+			/*
7e7f89
+			 * Release agent gets called with all capabilities,
7e7f89
+			 * require capabilities to set release agent.
7e7f89
+			 */
7e7f89
+			if (!capable(CAP_SYS_ADMIN))
7e7f89
+				return -EPERM;
7e7f89
+
7e7f89
 			opts->release_agent =
7e7f89
 				kstrndup(token + 14, PATH_MAX - 1, GFP_KERNEL);
7e7f89
 			if (!opts->release_agent)
7e7f89
@@ -2196,6 +2203,14 @@ static int cgroup_release_agent_write(struct cgroup *cgrp, struct cftype *cft,
7e7f89
 	BUILD_BUG_ON(sizeof(cgrp->root->release_agent_path) < PATH_MAX);
7e7f89
 	if (strlen(buffer) >= PATH_MAX)
7e7f89
 		return -EINVAL;
7e7f89
+
7e7f89
+	/*
7e7f89
+	 * Release agent gets called with all capabilities,
7e7f89
+	 * require capabilities to set release agent.
7e7f89
+	 */
7e7f89
+	if (!capable(CAP_SYS_ADMIN))
7e7f89
+		return -EPERM;
7e7f89
+
7e7f89
 	if (!cgroup_lock_live_group(cgrp))
7e7f89
 		return -ENODEV;
7e7f89
 	mutex_lock(&cgroup_root_mutex);
7e7f89
-- 
7e7f89
2.26.3
7e7f89
7e7f89