10-летний баг в Sudo позволяет пользователям Linux получить права суперпользователя

10-летний баг в Sudo позволяет пользователям Linux получить права суперпользователя

С его помощью пользователь с низкими привилегиями может получить права суперпользователя, даже если его учетной записи нет в /etc/sudoers.

Команда поддержки утилиты Sudo, позволяющей администраторам Linux делегировать ограниченные права суперпользователя другим пользователям, выпустила исправление для серьезной уязвимости .

Уязвимость переполнения буфера, получившая идентификатор CVE-2021-3156 и название Baron Samedit, была обнаружена специалистами аудиторской фирмы Qualys две недели назад и исправлена в среду, 27 января, с выходом версии Sudo 1.9.5p2. С ее помощью злоумышленник с доступом к учетной записи с низкими привилегиями может получить права суперпользователя, даже если учетная запись отсутствует в перечне /etc/sudoers – конфигурационном файле, контролирующем пользователей, которым разрешен доступ к командам su и sudo.

Как пояснили разработчики Sudo, когда утилита запускает команду в режиме оболочки, используя параметр командной строки -s или -i, спецсимволы в аргументах команды экранируются с помощью обратной косой черты. Перед тем, как оценить политику sudoers, не ожидающую никаких экранированных символов, плагин политики удаляет эти символы из аргументов, если команда выполняется в режиме оболочки.

В результате команда будет считываться после последнего символа строки, если она заканчивается неэкранированной обратной косой чертой. В нормальных условиях эта ошибка была бы безвредной, поскольку Sudo избегает всех обратных косых черт в аргументах команды. Однако из-за другой ошибки, на этот раз в коде синтаксического анализа командной строки, можно запустить sudoedit с параметрами -s или -i, установив флаг, указывающий, что режим оболочки включен. Поскольку команда на самом деле не выполняется, Sudo не экранирует спецсимволы. Наконец, код, решающий, следует ли удалять экранированные символы, не проверяет, действительно ли выполняется команда, а только видит установленный флаг оболочки. Это несоответствие приводит к уязвимости в безопасности.

уязвимость существует в Sudo еще с июля 2011 года и затрагивает все версии утилиты за последние десять лет. По словам специалистов Qualys, им удалось воспроизвести уязвимость и разработать несколько вариантов эксплоитов для Ubuntu 20.04 (Sudo 1.8.31), Debian 10 (Sudo 1.8.27) и Fedora 33 (Sudo 1.9.2), однако уязвимыми могут быть и другие ОС и дистрибутивы.

Домашний Wi-Fi – ваша крепость или картонный домик?

Узнайте, как построить неприступную стену