parent
							
								
									718384f3e0
								
							
						
					
					
						commit
						77a6f58173
					
				
							
								
								
									
										48
									
								
								0001-SECURITY-Pass-uid-of-caller-to-polkit.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								0001-SECURITY-Pass-uid-of-caller-to-polkit.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,48 @@ | |||||||
|  | From f44c5776b25ca2abd7569fb8532c6aede9b0c6b0 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Colin Walters <walters@verbum.org> | ||||||
|  | Date: Thu, 22 Aug 2013 16:05:22 -0400 | ||||||
|  | Subject: [PATCH] [SECURITY] Pass uid of caller to polkit | ||||||
|  | 
 | ||||||
|  | Otherwise, we force polkit to look up the uid itself in /proc, which | ||||||
|  | is racy if they execve() a setuid binary. | ||||||
|  | ---
 | ||||||
|  |  rtkit-daemon.c |   11 ++++++++++- | ||||||
|  |  1 files changed, 10 insertions(+), 1 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/rtkit-daemon.c b/rtkit-daemon.c
 | ||||||
|  | index 2ebe673..3ecc1f7 100644
 | ||||||
|  | --- a/rtkit-daemon.c
 | ||||||
|  | +++ b/rtkit-daemon.c
 | ||||||
|  | @@ -1170,12 +1170,14 @@ static int verify_polkit(DBusConnection *c, struct rtkit_user *u, struct process
 | ||||||
|  |          DBusMessage *m = NULL, *r = NULL; | ||||||
|  |          const char *unix_process = "unix-process"; | ||||||
|  |          const char *pid = "pid"; | ||||||
|  | +        const char *uid = "uid";
 | ||||||
|  |          const char *start_time = "start-time"; | ||||||
|  |          const char *cancel_id = ""; | ||||||
|  |          uint32_t flags = 0; | ||||||
|  |          uint32_t pid_u32 = p->pid; | ||||||
|  | -        uint64_t start_time_u64 = p->starttime;
 | ||||||
|  | +        uint32_t uid_u32 = (uint32_t)u->uid;
 | ||||||
|  |          DBusMessageIter iter_msg, iter_struct, iter_array, iter_dict, iter_variant; | ||||||
|  | +        uint64_t start_time_u64 = p->starttime;
 | ||||||
|  |          int ret; | ||||||
|  |          dbus_bool_t authorized = FALSE; | ||||||
|  |   | ||||||
|  | @@ -1206,6 +1208,13 @@ static int verify_polkit(DBusConnection *c, struct rtkit_user *u, struct process
 | ||||||
|  |          assert_se(dbus_message_iter_close_container(&iter_dict, &iter_variant)); | ||||||
|  |          assert_se(dbus_message_iter_close_container(&iter_array, &iter_dict)); | ||||||
|  |   | ||||||
|  | +        assert_se(dbus_message_iter_open_container(&iter_array, DBUS_TYPE_DICT_ENTRY, NULL, &iter_dict));
 | ||||||
|  | +        assert_se(dbus_message_iter_append_basic(&iter_dict, DBUS_TYPE_STRING, &uid));
 | ||||||
|  | +        assert_se(dbus_message_iter_open_container(&iter_dict, DBUS_TYPE_VARIANT, "u", &iter_variant));
 | ||||||
|  | +        assert_se(dbus_message_iter_append_basic(&iter_variant, DBUS_TYPE_UINT32, &uid_u32));
 | ||||||
|  | +        assert_se(dbus_message_iter_close_container(&iter_dict, &iter_variant));
 | ||||||
|  | +        assert_se(dbus_message_iter_close_container(&iter_array, &iter_dict));
 | ||||||
|  | +
 | ||||||
|  |          assert_se(dbus_message_iter_close_container(&iter_struct, &iter_array)); | ||||||
|  |          assert_se(dbus_message_iter_close_container(&iter_msg, &iter_struct)); | ||||||
|  |   | ||||||
|  | -- 
 | ||||||
|  | 1.7.1 | ||||||
|  | 
 | ||||||
| @ -1,6 +1,6 @@ | |||||||
| Name:             rtkit | Name:             rtkit | ||||||
| Version:          0.11 | Version:          0.11 | ||||||
| Release:          6%{?dist} | Release:          7%{?dist} | ||||||
| Summary:          Realtime Policy and Watchdog Daemon | Summary:          Realtime Policy and Watchdog Daemon | ||||||
| Group:            System Environment/Base | Group:            System Environment/Base | ||||||
| # The daemon itself is GPLv3+, the reference implementation for the client BSD | # The daemon itself is GPLv3+, the reference implementation for the client BSD | ||||||
| @ -17,6 +17,7 @@ BuildRequires:    polkit-devel | |||||||
| BuildRequires:    autoconf automake libtool | BuildRequires:    autoconf automake libtool | ||||||
| Source0:          http://0pointer.de/public/%{name}-%{version}.tar.xz | Source0:          http://0pointer.de/public/%{name}-%{version}.tar.xz | ||||||
| Patch1:           0001-build-Link-against-lrt.patch | Patch1:           0001-build-Link-against-lrt.patch | ||||||
|  | Patch2:           0001-SECURITY-Pass-uid-of-caller-to-polkit.patch | ||||||
| 
 | 
 | ||||||
| %description | %description | ||||||
| RealtimeKit is a D-Bus system service that changes the | RealtimeKit is a D-Bus system service that changes the | ||||||
| @ -28,6 +29,7 @@ processes. | |||||||
| %prep | %prep | ||||||
| %setup -q | %setup -q | ||||||
| %patch1 -p1 | %patch1 -p1 | ||||||
|  | %patch2 -p1 | ||||||
| 
 | 
 | ||||||
| %build | %build | ||||||
| autoreconf -fvi | autoreconf -fvi | ||||||
| @ -77,6 +79,10 @@ dbus-send --system --type=method_call --dest=org.freedesktop.DBus / org.freedesk | |||||||
| %{_mandir}/man8/* | %{_mandir}/man8/* | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Mon Sep 23 2013 Colin Walters <walters@verbum.org> - 0.11-7 | ||||||
|  | - CVE-2013-4326 | ||||||
|  |   Resolves: #1009543 | ||||||
|  | 
 | ||||||
| * Thu Aug 22 2013 Colin Walters <walters@verbum.org> - 0.11-6 | * Thu Aug 22 2013 Colin Walters <walters@verbum.org> - 0.11-6 | ||||||
| - Add patch to make this build again | - Add patch to make this build again | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user