All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 0/2] security: tty: make TIOCSTI ioctl require CAP_SYS_ADMIN
@ 2017-05-05 23:20 ` Matt Brown
  0 siblings, 0 replies; 89+ messages in thread
From: Matt Brown @ 2017-05-05 23:20 UTC (permalink / raw)
  To: serge, gregkh, jslaby, akpm, jannh, keescook
  Cc: jmorris, kernel-hardening, linux-security-module, linux-kernel

This patchset introduces the tiocsti_restrict sysctl, whose default is
controlled via CONFIG_SECURITY_TIOCSTI_RESTRICT. When activated, this
control restricts all TIOCSTI ioctl calls from non CAP_SYS_ADMIN users.

This patch was inspired from GRKERNSEC_HARDEN_TTY.

This patch would have prevented
https://bugzilla.redhat.com/show_bug.cgi?id=1411256 under the following
conditions:
* non-privileged container
* container run inside new user namespace

Possible effects on userland:

There could be a few user programs that would be effected by this
change.
See: <https://codesearch.debian.net/search?q=ioctl%5C%28.*TIOCSTI>
notable programs are: agetty, csh, xemacs and tcsh

However, I still believe that this change is worth it given that the
Kconfig defaults to n. This will be a feature that is turned on for the
same reason that people activate it when using grsecurity. Users of this
opt-in feature will realize that they are choosing security over some OS
features like unprivileged TIOCSTI ioctls, as should be clear in the
Kconfig help message.

Threat Model/Patch Rational:

>From grsecurity's config for GRKERNSEC_HARDEN_TTY.

 | There are very few legitimate uses for this functionality and it
 | has made vulnerabilities in several 'su'-like programs possible in
 | the past.  Even without these vulnerabilities, it provides an
 | attacker with an easy mechanism to move laterally among other
 | processes within the same user's compromised session.

So if one process within a tty session becomes compromised it can follow
that additional processes, that are thought to be in different security
boundaries, can be compromised as a result. When using a program like su
or sudo, these additional processes could be in a tty session where TTY file
descriptors are indeed shared over privilege boundaries.

This is also an excellent writeup about the issue:
<http://www.halfdog.net/Security/2012/TtyPushbackPrivilegeEscalation/>

When user namespaces are in use, the check for the capability
CAP_SYS_ADMIN is done against the user namespace that originally opened
the tty.

# Changes since v5:
* added acks/reviews

# Changes since v4:
* fixed typo

# Changes since v3:
* use get_user_ns and put_user_ns to take and drop references to the owner
  user namespace because CONFIG_USER_NS is an option

# Changes since v2:
* take/drop reference to user namespace on tty struct alloc/free to prevent
  use-after-free.

# Changes since v1:
* added owner_user_ns to tty_struct to enable capability checks against
  the namespace that created the tty.
* rewording in different places to make patchset purpose clear
* Added Documentation

^ permalink raw reply	[flat|nested] 89+ messages in thread

end of thread, other threads:[~2017-05-31 15:32 UTC | newest]

Thread overview: 89+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-05 23:20 [PATCH v6 0/2] security: tty: make TIOCSTI ioctl require CAP_SYS_ADMIN Matt Brown
2017-05-05 23:20 ` [kernel-hardening] " Matt Brown
2017-05-05 23:20 ` Matt Brown
2017-05-05 23:20 ` [PATCH v6 1/2] security: tty: Add owner user namespace to tty_struct Matt Brown
2017-05-05 23:20   ` [kernel-hardening] " Matt Brown
2017-05-05 23:20   ` Matt Brown
2017-05-05 23:20 ` [PATCH v6 2/2] security: tty: make TIOCSTI ioctl require CAP_SYS_ADMIN Matt Brown
2017-05-05 23:20   ` [kernel-hardening] " Matt Brown
2017-05-05 23:20   ` Matt Brown
2017-05-18 13:31   ` Greg KH
2017-05-18 13:31     ` [kernel-hardening] " Greg KH
2017-05-18 13:31     ` Greg KH
2017-05-19  4:51     ` Matt Brown
2017-05-19  4:51       ` [kernel-hardening] " Matt Brown
2017-05-19  4:51       ` Matt Brown
2017-05-10 20:29 ` [PATCH v6 0/2] " Alan Cox
2017-05-10 20:29   ` [kernel-hardening] " Alan Cox
2017-05-10 20:29   ` Alan Cox
2017-05-10 21:02   ` [kernel-hardening] " Daniel Micay
2017-05-10 21:02     ` Daniel Micay
2017-05-13 19:52   ` Matt Brown
2017-05-13 19:52     ` [kernel-hardening] " Matt Brown
2017-05-13 19:52     ` Matt Brown
2017-05-15  4:45     ` [kernel-hardening] " Nicolas Belouin
2017-05-15 20:57     ` Alan Cox
2017-05-15 20:57       ` [kernel-hardening] " Alan Cox
2017-05-15 20:57       ` Alan Cox
2017-05-15 23:10       ` Peter Dolding
2017-05-15 23:10         ` [kernel-hardening] " Peter Dolding
2017-05-15 23:10         ` Peter Dolding
2017-05-16  4:15         ` Matt Brown
2017-05-16  4:15           ` [kernel-hardening] " Matt Brown
2017-05-16  4:15           ` Matt Brown
2017-05-16  9:01           ` Peter Dolding
2017-05-16  9:01             ` [kernel-hardening] " Peter Dolding
2017-05-16  9:01             ` Peter Dolding
2017-05-16 12:22             ` Matt Brown
2017-05-16 12:22               ` [kernel-hardening] " Matt Brown
2017-05-16 12:22               ` Matt Brown
2017-05-16 14:28               ` Kees Cook
2017-05-16 14:28                 ` [kernel-hardening] " Kees Cook
2017-05-16 14:28                 ` Kees Cook
2017-05-16 15:48                 ` [kernel-hardening] " Serge E. Hallyn
2017-05-16 15:48                   ` Serge E. Hallyn
2017-05-16 15:48                   ` Serge E. Hallyn
2017-05-16 22:05                   ` Peter Dolding
2017-05-16 22:05                     ` Peter Dolding
2017-05-16 22:05                     ` Peter Dolding
2017-05-16 21:43                 ` Peter Dolding
2017-05-16 21:43                   ` [kernel-hardening] " Peter Dolding
2017-05-16 21:43                   ` Peter Dolding
2017-05-16 21:54                   ` Matt Brown
2017-05-16 21:54                     ` [kernel-hardening] " Matt Brown
2017-05-16 21:54                     ` Matt Brown
2017-05-17 16:41                 ` Alan Cox
2017-05-17 16:41                   ` [kernel-hardening] " Alan Cox
2017-05-17 16:41                   ` Alan Cox
2017-05-17 18:25                   ` [kernel-hardening] " Daniel Micay
2017-05-17 18:25                     ` Daniel Micay
2017-05-17 18:25                     ` Daniel Micay
2017-05-17 23:04                     ` Boris Lukashev
2017-05-18  3:18                     ` Kees Cook
2017-05-18  3:18                       ` Kees Cook
2017-05-18  3:18                       ` Kees Cook
2017-05-19  2:48                       ` Peter Dolding
2017-05-19  2:48                         ` Peter Dolding
2017-05-19  2:48                         ` Peter Dolding
2017-05-19  4:08                         ` Boris Lukashev
2017-05-19 14:33                         ` Serge E. Hallyn
2017-05-19 14:33                           ` Serge E. Hallyn
2017-05-19 14:33                           ` Serge E. Hallyn
2017-05-29 10:42                           ` Peter Dolding
2017-05-29 10:42                             ` Peter Dolding
2017-05-29 10:42                             ` Peter Dolding
2017-05-30 15:52                             ` Serge E. Hallyn
2017-05-30 15:52                               ` Serge E. Hallyn
2017-05-30 15:52                               ` Serge E. Hallyn
2017-05-30 21:52                               ` Alan Cox
2017-05-30 21:52                                 ` Alan Cox
2017-05-30 21:52                                 ` Alan Cox
2017-05-31 11:27                                 ` Peter Dolding
2017-05-31 11:27                                   ` Peter Dolding
2017-05-31 11:27                                   ` Peter Dolding
2017-05-31 14:36                                   ` Alan Cox
2017-05-31 14:36                                     ` Alan Cox
2017-05-31 14:36                                     ` Alan Cox
2017-05-31 15:32                                     ` Serge E. Hallyn
2017-05-31 15:32                                       ` Serge E. Hallyn
2017-05-31 15:32                                       ` Serge E. Hallyn

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.