summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Puhlman <jpuhlman@mvista.com>2022-01-27 11:59:44 -0500
committerArmin Kuster <akuster808@gmail.com>2022-01-27 16:03:47 -0800
commit46a2333262de51a5921e71e6772dec5cf9a1826f (patch)
tree29a62fb88a8e27a6705694c1133cdfa2b4a19537
parent4bd7715a9dc6000658ceb658ad4ce2b7c20530ae (diff)
downloadmeta-openembedded-46a2333262de51a5921e71e6772dec5cf9a1826f.tar.gz
CVE-2021-4034: polkit Local privilege escalation in pkexec due to incorrect handling of argument vector
Upstream-Status: Backport CVE: CVE-2021-4034 Signed-off-by: Jeremy A. Puhlman <jpuhlman@mvista.com> Signed-off-by: Armin Kuster <akuster808@gmail.com>
-rw-r--r--meta-oe/recipes-extended/polkit/files/CVE-2021-4034.patch74
-rw-r--r--meta-oe/recipes-extended/polkit/polkit_0.116.bb1
2 files changed, 75 insertions, 0 deletions
diff --git a/meta-oe/recipes-extended/polkit/files/CVE-2021-4034.patch b/meta-oe/recipes-extended/polkit/files/CVE-2021-4034.patch
new file mode 100644
index 0000000000..cab1c83c09
--- /dev/null
+++ b/meta-oe/recipes-extended/polkit/files/CVE-2021-4034.patch
@@ -0,0 +1,74 @@
1From ed8b418f1341cf7fc576f6b17de5c6dd4017e034 Mon Sep 17 00:00:00 2001
2From: "Jeremy A. Puhlman" <jpuhlman@mvista.com>
3Date: Thu, 27 Jan 2022 00:01:27 +0000
4Subject: [PATCH] CVE-2021-4034: Local privilege escalation in pkexec due to
5 incorrect handling of argument vector
6
7Upstream-Status: Backport https://gitlab.freedesktop.org/polkit/polkit/-/commit/a2bf5c9c83b6ae46cbd5c779d3055bff81ded683
8CVE: CVE-2021-4034
9
10Signed-off-by: Jeremy A. Puhlman <jpuhlman@mvista.com>
11---
12 src/programs/pkcheck.c | 6 ++++++
13 src/programs/pkexec.c | 21 ++++++++++++++++++++-
14 2 files changed, 26 insertions(+), 1 deletion(-)
15
16diff --git a/src/programs/pkcheck.c b/src/programs/pkcheck.c
17index f1bb4e1..aff4f60 100644
18--- a/src/programs/pkcheck.c
19+++ b/src/programs/pkcheck.c
20@@ -363,6 +363,12 @@ main (int argc, char *argv[])
21 local_agent_handle = NULL;
22 ret = 126;
23
24+ if (argc < 1)
25+ {
26+ help();
27+ exit(1);
28+ }
29+
30 /* Disable remote file access from GIO. */
31 setenv ("GIO_USE_VFS", "local", 1);
32
33diff --git a/src/programs/pkexec.c b/src/programs/pkexec.c
34index 7698c5c..3ff4c58 100644
35--- a/src/programs/pkexec.c
36+++ b/src/programs/pkexec.c
37@@ -488,6 +488,17 @@ main (int argc, char *argv[])
38 pid_t pid_of_caller;
39 gpointer local_agent_handle;
40
41+
42+ /*
43+ * If 'pkexec' is called wrong, just show help and bail out.
44+ */
45+ if (argc<1)
46+ {
47+ clearenv();
48+ usage(argc, argv);
49+ exit(1);
50+ }
51+
52 ret = 127;
53 authority = NULL;
54 subject = NULL;
55@@ -636,7 +647,15 @@ main (int argc, char *argv[])
56 goto out;
57 }
58 g_free (path);
59- argv[n] = path = s;
60+ path = s;
61+
62+ /* argc<2 and pkexec runs just shell, argv is guaranteed to be null-terminated.
63+ * /-less shell shouldn't happen, but let's be defensive and don't write to null-termination
64+ */
65+ if (argv[n] != NULL)
66+ {
67+ argv[n] = path;
68+ }
69 }
70 if (access (path, F_OK) != 0)
71 {
72--
732.26.2
74
diff --git a/meta-oe/recipes-extended/polkit/polkit_0.116.bb b/meta-oe/recipes-extended/polkit/polkit_0.116.bb
index ad1973b136..77288b0082 100644
--- a/meta-oe/recipes-extended/polkit/polkit_0.116.bb
+++ b/meta-oe/recipes-extended/polkit/polkit_0.116.bb
@@ -25,6 +25,7 @@ PAM_SRC_URI = "file://polkit-1_pam.patch"
25SRC_URI = "http://www.freedesktop.org/software/polkit/releases/polkit-${PV}.tar.gz \ 25SRC_URI = "http://www.freedesktop.org/software/polkit/releases/polkit-${PV}.tar.gz \
26 ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \ 26 ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
27 file://0003-make-netgroup-support-optional.patch \ 27 file://0003-make-netgroup-support-optional.patch \
28 file://CVE-2021-4034.patch \
28 " 29 "
29SRC_URI[md5sum] = "4b37258583393e83069a0e2e89c0162a" 30SRC_URI[md5sum] = "4b37258583393e83069a0e2e89c0162a"
30SRC_URI[sha256sum] = "88170c9e711e8db305a12fdb8234fac5706c61969b94e084d0f117d8ec5d34b1" 31SRC_URI[sha256sum] = "88170c9e711e8db305a12fdb8234fac5706c61969b94e084d0f117d8ec5d34b1"