[PATCH v3 0/2] tty: Allow TIOCSTI to be disabled

From: Kees Cook
Date: Sat Oct 22 2022 - 14:30:35 EST


Hi,

v3: make sysctl a bool (Jiri)
v2: https://lore.kernel.org/lkml/20221015064222.gonna.435-kees@xxxxxxxxxx
v1: https://lore.kernel.org/lkml/20221015041352.never.966-kees@xxxxxxxxxx/

This is so very long over-due. We just need to do this and put an end
to this legacy operation.

Repeating the commit log from patch 2:

TIOCSTI continues its long history of being used in privilege escalation
attacks[1]. Prior attempts to provide a mechanism to disable this have
devolved into discussions around creating full-blown LSMs to provide
arbitrary ioctl filtering, which is hugely over-engineered -- only
TIOCSTI is being used this way. 3 years ago OpenBSD entirely removed
TIOCSTI[2], Android has had it filtered for longer[3], and the tools that
had historically used TIOCSTI either do not need it, are not commonly
built with it, or have had its use removed.

Provide a simple CONFIG and global sysctl to disable this for the system
builders who have wanted this functionality for literally decades now,
much like the ldisc_autoload CONFIG and sysctl.

[1] https://lore.kernel.org/linux-hardening/Y0m9l52AKmw6Yxi1@hostpad
[2] https://undeadly.org/cgi?action=article;sid=20170701132619
[3] https://lore.kernel.org/lkml/CAFJ0LnFGRuEEn1tCLhoki8ZyWrKfktbF+rwwN7WzyC_kBFoQVA@xxxxxxxxxxxxxx/

Thanks,

-Kees


Kees Cook (2):
tty: Move sysctl setup into "core" tty logic
tty: Allow TIOCSTI to be disabled

drivers/tty/Kconfig | 19 +++++++++++++++++
drivers/tty/tty.h | 2 +-
drivers/tty/tty_io.c | 45 +++++++++++++++++++++++++++++++++++++++--
drivers/tty/tty_ldisc.c | 38 +---------------------------------
4 files changed, 64 insertions(+), 40 deletions(-)

--
2.34.1