- 0009-polkit-Avoid-race-condition-in-scraping-proc.patch

VUL-0: polkit: process subject race condition [bnc#835827]

- Build with --disable-ima as the openSUSE kernel 
 does not support IMA (CONFIG_IMA is not set)

- Build with --disable-smack as the openSUSE kernel
 does not support smack (CONFIG_SECURITY_SMACK is not set)

- 0009-polkit-Avoid-race-condition-in-scraping-proc.patch 
  VUL-0: polkit: process subject race condition [bnc#835827]

- Build with --disable-ima as the openSUSE kernel 
 does not support IMA (CONFIG_IMA is not set)

- Build with --disable-smack as the openSUSE kernel
 does not support smack (CONFIG_SECURITY_SMACK is not set)

OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=439
This commit is contained in:
Frederic Crozat 2013-09-19 07:46:03 +00:00 committed by Git OBS Bridge
parent a9dbda37cc
commit 932096486f
5 changed files with 121 additions and 0 deletions

View File

@ -0,0 +1,75 @@
From 851d079d0172539bf904abb58edd80d7cfe487ca Mon Sep 17 00:00:00 2001
From: Colin Walters <walters@verbum.org>
Date: Thu, 22 Aug 2013 13:55:21 -0400
Subject: [PATCH 9/9] polkit: Avoid race condition in scraping /proc
If a calling process execve()s a setuid program, it can appear to be
uid 0. Since we're receiving requests over DBus, avoid this by simply
passing system-bus-name as a subject.
---
src/shared/polkit.c | 31 +++++--------------------------
1 file changed, 5 insertions(+), 26 deletions(-)
diff --git a/src/shared/polkit.c b/src/shared/polkit.c
index cea7074..1c5e9e3 100644
--- a/src/shared/polkit.c
+++ b/src/shared/polkit.c
@@ -38,12 +38,8 @@ int verify_polkit(
#ifdef ENABLE_POLKIT
DBusMessage *m = NULL, *reply = NULL;
- const char *unix_process = "unix-process", *pid = "pid", *starttime = "start-time", *cancel_id = "";
+ const char *system_bus_name = "system-bus-name", *name = "name", *cancel_id = "";
uint32_t flags = interactive ? 1 : 0;
- pid_t pid_raw;
- uint32_t pid_u32;
- unsigned long long starttime_raw;
- uint64_t starttime_u64;
DBusMessageIter iter_msg, iter_struct, iter_array, iter_dict, iter_variant;
int r;
dbus_bool_t authorized = FALSE, challenge = FALSE;
@@ -68,14 +64,6 @@ int verify_polkit(
#ifdef ENABLE_POLKIT
- pid_raw = bus_get_unix_process_id(c, sender, error);
- if (pid_raw == 0)
- return -EINVAL;
-
- r = get_starttime_of_pid(pid_raw, &starttime_raw);
- if (r < 0)
- return r;
-
m = dbus_message_new_method_call(
"org.freedesktop.PolicyKit1",
"/org/freedesktop/PolicyKit1/Authority",
@@ -86,22 +74,13 @@ int verify_polkit(
dbus_message_iter_init_append(m, &iter_msg);
- pid_u32 = (uint32_t) pid_raw;
- starttime_u64 = (uint64_t) starttime_raw;
-
if (!dbus_message_iter_open_container(&iter_msg, DBUS_TYPE_STRUCT, NULL, &iter_struct) ||
- !dbus_message_iter_append_basic(&iter_struct, DBUS_TYPE_STRING, &unix_process) ||
+ !dbus_message_iter_append_basic(&iter_struct, DBUS_TYPE_STRING, &system_bus_name) ||
!dbus_message_iter_open_container(&iter_struct, DBUS_TYPE_ARRAY, "{sv}", &iter_array) ||
!dbus_message_iter_open_container(&iter_array, DBUS_TYPE_DICT_ENTRY, NULL, &iter_dict) ||
- !dbus_message_iter_append_basic(&iter_dict, DBUS_TYPE_STRING, &pid) ||
- !dbus_message_iter_open_container(&iter_dict, DBUS_TYPE_VARIANT, "u", &iter_variant) ||
- !dbus_message_iter_append_basic(&iter_variant, DBUS_TYPE_UINT32, &pid_u32) ||
- !dbus_message_iter_close_container(&iter_dict, &iter_variant) ||
- !dbus_message_iter_close_container(&iter_array, &iter_dict) ||
- !dbus_message_iter_open_container(&iter_array, DBUS_TYPE_DICT_ENTRY, NULL, &iter_dict) ||
- !dbus_message_iter_append_basic(&iter_dict, DBUS_TYPE_STRING, &starttime) ||
- !dbus_message_iter_open_container(&iter_dict, DBUS_TYPE_VARIANT, "t", &iter_variant) ||
- !dbus_message_iter_append_basic(&iter_variant, DBUS_TYPE_UINT64, &starttime_u64) ||
+ !dbus_message_iter_append_basic(&iter_dict, DBUS_TYPE_STRING, &name) ||
+ !dbus_message_iter_open_container(&iter_dict, DBUS_TYPE_VARIANT, "s", &iter_variant) ||
+ !dbus_message_iter_append_basic(&iter_variant, DBUS_TYPE_STRING, &sender) ||
!dbus_message_iter_close_container(&iter_dict, &iter_variant) ||
!dbus_message_iter_close_container(&iter_array, &iter_dict) ||
!dbus_message_iter_close_container(&iter_struct, &iter_array) ||
--
1.8.1.4

View File

@ -1,3 +1,21 @@
-------------------------------------------------------------------
Wed Sep 18 23:55:09 UTC 2013 - crrodriguez@opensuse.org
- 0009-polkit-Avoid-race-condition-in-scraping-proc.patch
VUL-0: polkit: process subject race condition [bnc#835827]
-------------------------------------------------------------------
Wed Sep 18 23:45:54 UTC 2013 - crrodriguez@opensuse.org
- Build with --disable-ima as the openSUSE kernel
does not support IMA (CONFIG_IMA is not set)
-------------------------------------------------------------------
Wed Sep 18 23:40:27 UTC 2013 - crrodriguez@opensuse.org
- Build with --disable-smack as the openSUSE kernel
does not support smack (CONFIG_SECURITY_SMACK is not set)
------------------------------------------------------------------- -------------------------------------------------------------------
Wed Sep 18 12:05:47 UTC 2013 - fcrozat@suse.com Wed Sep 18 12:05:47 UTC 2013 - fcrozat@suse.com

View File

@ -187,6 +187,8 @@ Patch52: 0005-core-cgroup-first-print-then-free.patch
Patch53: 0006-swap-fix-reverse-dependencies.patch Patch53: 0006-swap-fix-reverse-dependencies.patch
# PATCH-FIX-UPSTREAM 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch really fix swap units # PATCH-FIX-UPSTREAM 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch really fix swap units
Patch54: 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch Patch54: 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch
# PATCH-FIX-UPSTREAM 0009-polkit-Avoid-race-condition-in-scraping-proc.patch VUL-0: polkit: process subject race condition [bnc#835827]
Patch55: 0009-polkit-Avoid-race-condition-in-scraping-proc.patch
# udev patches # udev patches
# PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch # PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch
@ -441,6 +443,7 @@ cp %{SOURCE7} m4/
%patch52 -p1 %patch52 -p1
%patch53 -p1 %patch53 -p1
%patch54 -p1 %patch54 -p1
%patch55 -p1
# udev patches # udev patches
%patch1001 -p1 %patch1001 -p1
@ -479,6 +482,8 @@ export V=1
--with-rc-local-script-path-start=/etc/init.d/boot.local \ --with-rc-local-script-path-start=/etc/init.d/boot.local \
--with-rc-local-script-path-stop=/etc/init.d/halt.local \ --with-rc-local-script-path-stop=/etc/init.d/halt.local \
--with-debug-shell=/bin/bash \ --with-debug-shell=/bin/bash \
--disable-smack \
--disable-ima \
CFLAGS="%{optflags}" CFLAGS="%{optflags}"
make %{?_smp_mflags} make %{?_smp_mflags}

View File

@ -1,3 +1,21 @@
-------------------------------------------------------------------
Wed Sep 18 23:55:09 UTC 2013 - crrodriguez@opensuse.org
- 0009-polkit-Avoid-race-condition-in-scraping-proc.patch
VUL-0: polkit: process subject race condition [bnc#835827]
-------------------------------------------------------------------
Wed Sep 18 23:45:54 UTC 2013 - crrodriguez@opensuse.org
- Build with --disable-ima as the openSUSE kernel
does not support IMA (CONFIG_IMA is not set)
-------------------------------------------------------------------
Wed Sep 18 23:40:27 UTC 2013 - crrodriguez@opensuse.org
- Build with --disable-smack as the openSUSE kernel
does not support smack (CONFIG_SECURITY_SMACK is not set)
------------------------------------------------------------------- -------------------------------------------------------------------
Wed Sep 18 12:05:47 UTC 2013 - fcrozat@suse.com Wed Sep 18 12:05:47 UTC 2013 - fcrozat@suse.com

View File

@ -182,6 +182,8 @@ Patch52: 0005-core-cgroup-first-print-then-free.patch
Patch53: 0006-swap-fix-reverse-dependencies.patch Patch53: 0006-swap-fix-reverse-dependencies.patch
# PATCH-FIX-UPSTREAM 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch really fix swap units # PATCH-FIX-UPSTREAM 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch really fix swap units
Patch54: 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch Patch54: 0008-swap-create-.wants-symlink-to-auto-swap-devices.patch
# PATCH-FIX-UPSTREAM 0009-polkit-Avoid-race-condition-in-scraping-proc.patch VUL-0: polkit: process subject race condition [bnc#835827]
Patch55: 0009-polkit-Avoid-race-condition-in-scraping-proc.patch
# udev patches # udev patches
# PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch # PATCH-FIX-OPENSUSE 1001-re-enable-by_path-links-for-ata-devices.patch
@ -436,6 +438,7 @@ cp %{SOURCE7} m4/
%patch52 -p1 %patch52 -p1
%patch53 -p1 %patch53 -p1
%patch54 -p1 %patch54 -p1
%patch55 -p1
# udev patches # udev patches
%patch1001 -p1 %patch1001 -p1
@ -474,6 +477,8 @@ export V=1
--with-rc-local-script-path-start=/etc/init.d/boot.local \ --with-rc-local-script-path-start=/etc/init.d/boot.local \
--with-rc-local-script-path-stop=/etc/init.d/halt.local \ --with-rc-local-script-path-stop=/etc/init.d/halt.local \
--with-debug-shell=/bin/bash \ --with-debug-shell=/bin/bash \
--disable-smack \
--disable-ima \
CFLAGS="%{optflags}" CFLAGS="%{optflags}"
make %{?_smp_mflags} make %{?_smp_mflags}