tty: Prevent untrappable signals from malicious program
authorPeter Hurley <peter@hurleysoftware.com>
Mon, 19 Jan 2015 18:05:03 +0000 (13:05 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 2 Feb 2015 18:09:54 +0000 (10:09 -0800)
Commit 26df6d13406d1a5 ("tty: Add EXTPROC support for LINEMODE")
allows a process which has opened a pty master to send _any_ signal
to the process group of the pty slave. Although potentially
exploitable by a malicious program running a setuid program on
a pty slave, it's unknown if this exploit currently exists.

Limit to signals actually used.

Cc: Theodore Ts'o <tytso@mit.edu>
Cc: Howard Chu <hyc@symas.com>
Cc: One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk>
Cc: Jiri Slaby <jslaby@suse.cz>
Cc: <stable@vger.kernel.org> # 2.6.36+
Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/pty.c

index a9d256d6e909c1aecfc854732694d608256aeb15..6e1f1505f04e4b0ae948dfad4be3319df1debdb7 100644 (file)
@@ -210,6 +210,9 @@ static int pty_signal(struct tty_struct *tty, int sig)
 {
        struct pid *pgrp;
 
+       if (sig != SIGINT && sig != SIGQUIT && sig != SIGTSTP)
+               return -EINVAL;
+
        if (tty->link) {
                pgrp = tty_get_pgrp(tty->link);
                if (pgrp)