Ошибка в Linux-утилите позволяла выполнять фальшивые запросы sudo и воровать пароли на протяжении 11 лет

2024-03-29 3562 комментарии
Уязвимость в команде wall пакета util-linux, входящего в состав ОС Linux, может позволить непривилегированному злоумышленнику украсть пароли или изменить буфер обмена жертвы

Проблема безопасности, отслеживаемая по идентификатору CVE-2024-28085, получила название WallEscape и присутствовала во всех версиях пакета за последние 11 лет, вплоть до версии 2.40, выпущенной 27 марта 2024 года.

Данная уязвимость является интересным примером того, как злоумышленник может обманным путем заставить пользователя сообщить пароль администратора,. Однако, эксплуатация ограничивается определенными сценариями.

Злоумышленнику необходим доступ к серверу Linux, к которому уже подключено несколько пользователей через терминал. Это может быть сервер учебного заведения, к которому подключаются студенты для выполнения задания.

WallEscape обнаружил исследователь безопасности Скайлер Ферранте (Skyler Ferrante). Уязвимость описывается как «неправильная нейтрализация escape-последовательностей в wall».

Эксплуатация WallEscape

WallEscape влияет на команду «wall», которая обычно используется в системах Linux для трансляции сообщений на терминалы всех пользователей, вошедших в одну систему, например на сервер.

Поскольку escape-последовательности неправильно фильтруются при обработке ввода через аргументы командной строки, непривилегированный пользователь может воспользоваться уязвимостью, используя escape-символы, чтобы создать поддельное приглашение SUDO на терминалах других пользователей и обманом заставить их ввести пароль администратора.

Проблема безопасности может быть использована только при определенных условиях. Ферранте объясняет, что эксплуатация возможна, если утилита «mesg» активна и у команды wall есть разрешения setgid.

Согласно исследователю, оба условия присутствуют в Ubuntu 22.04 LTS (Jammy Jellyfish) и Debian 12.5 (Bookworm), но не в CentOS.

Опубликован код проверки концепции для WallEscape, который демонстрирует как злоумышленник может использовать эту проблему.

Помимо технических подробностей, Ферранте в своем отчете также приводит сценарии эксплуатации, которые могут привести к различным результатам.

В одном примере описаны шаги по созданию поддельного приглашения sudo для терминала Gnome, чтобы обманом заставить пользователя ввести свой пароль.

Это возможно путем создания поддельного приглашения SUDO для терминала Gnome, чтобы обманным путем заставить пользователя ввести конфиденциальную информацию в качестве аргумента командной строки.

Требуются некоторые меры предосторожности при использовании команды wall для передачи скрипта, который меняет вводимые данные в терминале (цвет переднего плана, скрывает ввод, время сна), чтобы поддельный запрос пароля воспринимался как законный запрос.

Чтобы найти пароль, злоумышленнику нужно проверить файл /proc/$pid/cmdline на предмет аргументов команды, которые видны непривилегированным пользователям в нескольких дистрибутивах Linux.

Еще один вариант атаки может заключаться в изменении буфера обмена целевого пользователя с помощью escape-последовательностей. Исследователь подчеркивает, что этот метод работает не со всеми эмуляторами терминала, например с Gnome.

Ферранте уточнил:

Поскольку мы можем отправлять escape-последовательности через wall, если пользователь использует терминал, поддерживающий эту escape-последовательность, злоумышленник может изменить буфер обмена жертвы на произвольный текст.

В отчете об уязвимостях исследователь предоставляет демонстрационный код для установки «ловушки» и запуска атаки, а также объясняет, как этот код работает для обоих сценариев эксплуатации.

Стоит отметить, что использование WallEscape зависит от локального доступа (физического или удаленного через SSH), что ограничивает его опасность.

Риск исходит от непривилегированных пользователей, которые имеют доступ к той же системе, что и жертва, в многопользовательских средах, таких как сервер организации.

Пользователям рекомендуется перейти на linux-utils v2.40, чтобы исправить уязвимость. Обычно обновление доступно через стандартный канал обновлений дистрибутива Linux в менеджере пакетов, но может быть некоторая задержка.

Системные администраторы могут устранить уязвимость CVE-2024-28085 незамедлительно, удалив разрешения setgid из команды «wall» или отключив функцию широковещательной рассылки сообщений с помощью команды «mesg», установив для ее флага значение «n».

© . По материалам Bleepingcomputer
Комментарии и отзывы

Нашли ошибку?

Новое на сайте