CVE-2019-14287
Max Alexeev (@wi_max)Довольно редкая, но все же достойная внимания уязвимость, которая касается Linux серверов.
При получении терминала удаленного хоста первым делом всегда хочется проверить вывод команды:
sudo -l
которая покажет команды доступные для выполнения текущим юзером от лица суперюзера, соответственно.
Что должно смутить в данной ситуации:
(ALL, !root) /bin/bash
james ALL=(ALL,!root) /bin/bash - так выглядит конфиг в /etc/sudoers
Наличие такого вывода означает, что пользователь может запустить bash с привилегиями любого пользователя, кроме root. Однако, что будет, если мы попробуем выполнить:
sudo -u#-1 bash
данная команда будет выполнена от лица пользователя с #uid, в данном случае -1
Системный вызов принимает данный ID в качестве особенного и не меняет идентификатор пользователя. Поскольку sudo изначально обладает правами суперпользователя, -1 продолжает работать как суперпользователь. Интересно, что идентификатор пользователя 4294967295 также способен обходить ограничения, поскольку, будучи подписанной 32-разрядной целочисленной переменной, он равен -1.
Во избежание возможных атак с использованием данной уязвимости пользователям настоятельно рекомендуется обновить sudo до версии 1.8.28 или более поздней. В обновленной версии sudo -1 больше не принимается в качестве идентификатора пользователя, поэтому эксплуатация уязвимости невозможна.
