Vulnerability
December 2

Linux LPE через Needrestart (CVE-2024-48990)

Введение

19 ноября 2024 года компания Qualys публично раскрыла информацию о пяти уязвимостях в утилите Needrestart. Эти уязвимости касаются локальной эскалации привилегий(LPE) и были найдены в бинарном файле. CVE-2024-48990 затрагивает версии Needrestart до 3.8. В Ubuntu она применяется по умолчанию с версии 21.04. Также проблема актуальна для Debian, Fedora и других дистрибутивов Linux.

LPE (Local Privilege Escalation) позволяет злоумышленнику повысить свои привилегии в системе, получив доступ к действиям, доступным только администраторам (например, root-доступ). Это может использоваться для установки вредоносного ПО, управления системой, обхода ограничений безопасности и доступа к конфиденциальным данным. Основная цель — получить полный контроль над системой.

Уязвимость имеет оценку в 7.8 баллов по CVSS.

Данная статья представлена исключительно в образовательных целях. Red Team сообщество "GISCYBERTEAM" не несёт ответственности за любые последствия ее использования третьими лицами.

Что такое Needrestart

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

Разбор уязвимости

LPE (Local Privilege Escalation) — это тип атаки, при котором злоумышленник использует уязвимость или неправильную конфигурацию системы, чтобы повысить свои права с обычного пользователя до администратора (например, root-доступ в Linux). Это дает возможность выполнять критически важные команды, изменять системные настройки, получать доступ к защищенным данным и устанавливать вредоносное ПО. LPE часто используется в связке с другими методами атак для усиления их эффективности или распространения угрозы на другие устройства.

CVE-2024-48990 возникает из-за уязвимости в обработке переменных окружения утилитой Needrestart, используемой в Linux для проверки и перезапуска сервисов после обновления библиотек. Проблема связана с тем, что утилита до версии 3.8 некорректно обрабатывает переменную PYTHONPATH. Это позволяет локальному атакующему указать поддельный путь для Python-интерпретатора, что может привести к выполнению произвольного кода с привилегиями root.

Ошибка стала возможной из-за недостаточного контроля содержимого переменных окружения, используемых для настройки путей загрузки модулей интерпретаторов (Python, Perl, Ruby). Это делает утилиту уязвимой к манипуляциям со стороны локальных пользователей, которые могут подменить пути на вредоносные библиотеки или скрипты.

Чтобы проверить уязвима ли ваша система можно выполнить команду:

needrestart --version | grep -q "3.7" && echo "Definitely vulnerable" || echo "Version is potentially not vulnerable, this simply checks for 3.7"

Для демонстрации эксплуатации воспользуемся публичным эксплойтом:

git clone https://github.com/pentestfunctions/CVE-2024-48990-PoC-Testing.git

Получив первоначальный доступ к системе от обычного пользователя запустим скрипт для прослушивания:

cd CVE-2024-48990-PoC-Testing
./runner.sh

Чтобы уязвимость отработала необходимо подождать, пока другой пользователь в системе выполнит обновление или что-то, что вызовет необходимость использования утилиты Needrestart, в нашем случае мы устанавливаем пакет ntp, что автоматически ее запускает:

sudo apt remove ntp; sudo apt install ntp

Получаем доступ к root-пользователю:

Получаем root-флаг:

Рекомендации по устранению

  • Установите версию Needrestart 3.8 или выше, где уязвимость устранена.
  • Отключите сканирование интерпретаторов в файле /etc/needrestart/needrestart.conf, добавив строку: $nrconf{interpscan} = 0;.
  • Регулярно проверяйте переменные окружения и активность системы, чтобы выявлять подозрительные действия.

Заключение

В заключение, CVE-2024-48990 демонстрирует, как эксплуатация уязвимости в системной утилите может привести к серьезным последствиям, таким как получение прав root и доступ к конфиденциальным данным.

Инцидент служит напоминанием о необходимости регулярного обновления ПО, тщательной настройки переменных окружения и использования дополнительных защитных механизмов.