summaryrefslogtreecommitdiffstats
path: root/source/a/shadow/shadow.CVE-2017-2616.diff
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2018-11-17 03:03:49 +0000
committer Eric Hameleers <alien@slackware.com>2018-11-17 08:59:42 +0100
commit6a677844125bf74f4dac1fc2e4e7181281f7ae39 (patch)
tree98b369fae8f7a395a683c04e58410caa993736c3 /source/a/shadow/shadow.CVE-2017-2616.diff
parent3a6358fa3e26f0d5263d575ff8a3065cab653365 (diff)
downloadcurrent-6a677844125bf74f4dac1fc2e4e7181281f7ae39.tar.gz
current-6a677844125bf74f4dac1fc2e4e7181281f7ae39.tar.xz
Sat Nov 17 03:03:49 UTC 201820181117030349
a/acpid-2.0.31-x86_64-1.txz: Upgraded. a/shadow-4.6-x86_64-1.txz: Upgraded. l/gsettings-desktop-schemas-3.28.1-x86_64-1.txz: Upgraded. l/libkarma-0.1.2-x86_64-1.txz: Upgraded. l/v4l-utils-1.16.2-x86_64-1.txz: Upgraded. xap/mozilla-thunderbird-60.3.1-x86_64-1.txz: Upgraded. This is a bugfix release. For more information, see: https://www.mozilla.org/en-US/thunderbird/60.3.1/releasenotes/
Diffstat (limited to 'source/a/shadow/shadow.CVE-2017-2616.diff')
-rw-r--r--source/a/shadow/shadow.CVE-2017-2616.diff55
1 files changed, 0 insertions, 55 deletions
diff --git a/source/a/shadow/shadow.CVE-2017-2616.diff b/source/a/shadow/shadow.CVE-2017-2616.diff
deleted file mode 100644
index 4a5c44222..000000000
--- a/source/a/shadow/shadow.CVE-2017-2616.diff
+++ /dev/null
@@ -1,55 +0,0 @@
-su: properly clear child PID
-
-If su is compiled with PAM support, it is possible for any local user
-to send SIGKILL to other processes with root privileges. There are
-only two conditions. First, the user must be able to perform su with
-a successful login. This does NOT have to be the root user, even using
-su with the same id is enough, e.g. "su $(whoami)". Second, SIGKILL
-can only be sent to processes which were executed after the su process.
-It is not possible to send SIGKILL to processes which were already
-running. I consider this as a security vulnerability, because I was
-able to write a proof of concept which unlocked a screen saver of
-another user this way.
-
-diff --git a/src/su.c b/src/su.c
-index f20d230..d86aa86 100644
---- a/src/su.c
-+++ b/src/su.c
-@@ -379,11 +379,13 @@ static void prepare_pam_close_session (void)
- /* wake child when resumed */
- kill (pid, SIGCONT);
- stop = false;
-+ } else {
-+ pid_child = 0;
- }
- } while (!stop);
- }
-
-- if (0 != caught) {
-+ if (0 != caught && 0 != pid_child) {
- (void) fputs ("\n", stderr);
- (void) fputs (_("Session terminated, terminating shell..."),
- stderr);
-@@ -393,9 +395,22 @@ static void prepare_pam_close_session (void)
- snprintf (wait_msg, sizeof wait_msg, _(" ...waiting for child to terminate.\n"));
-
- (void) signal (SIGALRM, kill_child);
-+ (void) signal (SIGCHLD, catch_signals);
- (void) alarm (2);
-
-- (void) wait (&status);
-+ sigemptyset (&ourset);
-+ if ((sigaddset (&ourset, SIGALRM) != 0)
-+ || (sigprocmask (SIG_BLOCK, &ourset, NULL) != 0)) {
-+ fprintf (stderr, _("%s: signal masking malfunction\n"), Prog);
-+ kill_child (0);
-+ } else {
-+ while (0 == waitpid (pid_child, &status, WNOHANG)) {
-+ sigsuspend (&ourset);
-+ }
-+ pid_child = 0;
-+ (void) sigprocmask (SIG_UNBLOCK, &ourset, NULL);
-+ }
-+
- (void) fputs (_(" ...terminated.\n"), stderr);
- }