CVE-2019-14287

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 больше не принимается в качестве идентификатора пользователя, поэтому эксплуатация уязвимости невозможна.


Report Page