Ошибка Linux, обнаруженная в Linux: операционная система Linux считается безопасной операционной системой, она хорошо справляется с недостатками и уязвимостями, но это не означает, что она полностью безопасна, некоторые ошибки все еще могут скрываться в тени.
Эксплойт больше не актуален в последней версии Sudo.
Недостаток затрагивает все версии Sudo до последней выпущенной версии 1.8.28.
Один такой недостаток был обнаружен в функции Sudo, которая широко используется для запуска программ, скриптов и выполнения команд с правами root.
Недостаток позволяет любому скрипту быть выполненным с привилегиями суперпользователя от пользователя, не имеющего root-доступ.
Команда Sudo (superuser do) – это широко используемая команда в операционной системе Linux.
Sudo отвечает за обработку прав суперпользователя.
Недостаток затрагивает все версии Sudo до последней выпущенной версии 1.8.28.
Уязвимость отслеживается как CVE-2019-14287 и обнаружена Джо Венниксом из Apple Information Security.
На удивление, уязвимость может быть использована злоумышленником для запуска команд от имени пользователя root, просто указав идентификатор пользователя «-1» или «4294967295.»
Давайте разберемся с дизайном недостатка и с чем именно связана эта уязвимость.
Функция, которая преобразует UID (идентификатор пользователя) в свое имя пользователя, неправильно обрабатывает -1, или его неподписанный эквивалент 4294967295, как 0, всегда является идентификатором пользователя root.
С облегчением можно сказать, что атака работает только по конкретным сценариям.
Но всем пользователям Linux по-прежнему рекомендуется обновиться до последней версии Sudo как можно скорее.
Потому что, в конце концов, меры предосторожности всегда лучше лечения.
Теперь для примера сценария атаки.
Если в файле конфигурации политики безопасности /etc/sudoers указано:
myhost bob = (ALL, !root) /usr/bin/vi
Т.е. пользователь bob может запускать программы vi от любого пользователя, кроме root.
sudo -u#-1 id -u OR sudo -u#4294967295 id -u
Команды выполнит vi с привилегиями root.