Недавно в утилите sudo обнаружена уязвимость (используется для организации предоставления прав администрирования отдельной программе или выполнения команд от имени других пользователей), внесенные в каталог как «CVE-2019-18634», что позволяет увеличить ваши привилегии в системе для пользователя root.
Проблема обнаружена с момента выпуска sudo версии 1.7.1. до версии 1.8.29, которая его можно использовать только при использовании опции "pwfeedback" в файле / etc / sudoers, который по умолчанию отключен в более поздних версиях sudo, но активирован в некоторых дистрибутивах, таких как Linux Mint и Elementary OS.
Параметр «pwfeedback» позволяет отображать символ «*» после каждого символа, вводимого при вводе пароля.
Из-за ошибки в реализации функции getln () определено в файле tgetpass.c в стандартной входной последовательности (стандартный ввод), слишком длинная строка с паролем может не поместиться в выделенном буфере и перезаписать другие данные в стеке. Переполнение происходит при запуске кода sudo с правами root.
Суть проблемы это когда он используется специальный символ ^ U во время ввода (удаление строки), а при сбое операции записи код, отвечающий за удаление выходных символов «*», сбрасывает данные о размере доступного буфера, но не возвращает указатель на исходное значение текущей позиции в буфере.
Еще одним фактором, способствующим работе, является отсутствие автоматического отключения режима pwfeedback. когда данные поступают не с терминала, а через входной поток (этот дефект позволяет создать условия для ошибки записи, например, в системах с безымянными однонаправленными каналами возникает ошибка при попытке записать конец канала для чтения).
При условии злоумышленник может полностью контролировать перезапись данных в стеке, нетрудно создать эксплойт, позволяющий повысить ваши привилегии для пользователя root.
Проблема может быть использована любым пользователем., независимо от прав на использование sudo и наличия пользовательских настроек в sudoers.
Пользователь с привилегиями sudo может проверить наличие «pwfeedback»Включается запуском:
sudo -l
Если "pwfeedback»Появляется в выводе« Matching Default Value Entries », конфигурация свитера она выглядит пораженной. В следующем примере конфигурация свитера уязвим:
sudo -l Matching Defaults entries for “USER” on linux-build: insults, pwfeedback, mail_badpass, mailerpath=/usr/sbin/sendmail
Пользователь USER может запускать следующие команды в linux-build:
(ALL: ALL) ALL
Что касается ошибки, объясняется, что ее можно использовать без необходимости разрешений sudo, для этого требуется только, чтобы pwfeedback включен. Ошибка может быть воспроизведена путем передачи большого ввода в sudo через конвейер, когда он запрашивает пароль.
Например:
perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id Password: Segmentation faultЭтой уязвимости способствуют два недостатка:
-
Опция «pwfeedback» не игнорируется, как и должно быть, при чтении с чего-то другого, кроме терминального устройства. Из-за отсутствия терминала сохраненная версия символа стирания строки остается с исходным значением 0.
-
Код, очищающий строку от звездочек, неправильно сбрасывает позицию буфера в случае ошибки записи, но сбрасывает оставшуюся длину буфера. В результате функция getln () может писать дальше конца буфера.
Наконец, сообщается, что проблема исправлена в версии sudo 1.8.31, опубликовано несколько часов назад. Хотя в дистрибутивах уязвимость остается неисправленной. так что пользователей затронутых дистрибутивов спрашивают или что они обнаруживают, что конфигурация pwfeedback находится в файле / и т.д. / sudoers, обновить до новой версии sudo.
Упоминается, что заблокировать проблему, самое главное, вы должны убедиться, что конфигурация /pwfeedback не в / и т.д. / sudoers и при необходимости его нужно деактивировать.
источник: https://www.openwall.com