Специалисты ИБ Матье Баржоль и Виктор Кутильяс из Synacktiv обнаружили критическую уязвимость в утилите sudo, позволяющую локальному пользователю без административных привилегий добиться получения прав root в системе.
Уязвимость получила номер CVE-2023-22809 и затрагивает версии sudo, начиная с ветки 1.8.0. Разработчики утилиты закрыли этот баг в обновлении sudo 1.9.12p2.
Эксперты пояснили, что уязвимость CVE-2023-22809 позволяет локальному пользователю отредактировать любой файл в системе, и с её помощью можно получить права root через изменение /etc/shadow или системных скриптов. Для эксплуатации уязвимости требуется, чтобы в файле sudoers пользователю было предоставлено право запускать утилиту sudoedit или «sudo» с флагом "-e". Проблема возникла из-за отсутствия должной обработки символов "--" при разборе переменных окружения, определяющих программу, вызываемую для редактирования файла.
В подверженных уязвимости версиях sudo последовательность "--" используется для отделения редактора и аргументов от списка редактируемых файлов. Атакующий может добавить в переменные окружения SUDO_EDITOR, VISUAL или EDITOR последовательность "-- файл" после пути к редактору, что приведёт к инициированию редактирования указанного файла с повышенными привилегиями без проверки правил доступа пользователя к файлам.
В качестве обходного пути для защиты от использования CVE-2023-22809 на непропатченных системах можно отключить обработку переменных окружения SUDO_EDITOR, VISUAL и EDITOR, указав в sudoers: Defaults!sudoedit env_delete+=«SUDO_EDITOR VISUAL EDITOR».
В январе 2021 года эксперты компании Qualys также обнаружили критическую уязвимость в утилите sudo. Злоумышленник мог получить доступ с правами root, используя уязвимость CVE-2021-3156 под любым пользователем и без наличия записи в файле /etc/sudoers. Уязвимость можно применять для повышения привилегий в системе в непривилегированном процессе. Эксперты Qualys пояснили, что уязвимость попала в исходный код утилиты sudo в июле 2011 года. Её использование возможно, если определённым образом вызвать переполнение буфера при обработке символов экранирования строки в параметрах, предназначенных для запуска команд в режиме shell при использовании sudoedit и указании аргументов "-i" или "-s". В этом случае экранирования параметров не происходит и появляется возможность работать далее с переполнением буфера и использовать ошибки в обработчике утилиты. Эта уязвимость была устранена разработчиками sudo в версии 1.9.5p2.