The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Уязвимости в утилите needrestart, позволяющие получить root-доступ в Ubuntu Server

19.11.2024 23:44

Компания Qualys выявила три уязвимости в утилите needrestart, предназначенной для перезапуска фоновых процессов после обновления используемых данными процессами библиотек. Начиная с Ubuntu 21.04 утилита needrestart включена в состав базового окружения Ubuntu Server, в котором запускается с правами root в конце каждой транзакции пакетного менеджера APT, сканирует запущенные процессы и перезапускает те их них, что связанны с файлами, изменившимися после обновления пакетов. Выявленные уязвимости позволяют локальному непривилегированному пользователю получить права root в Ubuntu Server в конфигурации по умолчанию.

Уязвимости присутствуют в needrestart начиная с версии 0.8 (2014 год) и устранены в выпуске needrestart 3.8. Проблемы также уже исправлены в дистрибутивах Debian и Ubuntu. В качестве обходного пути блокирования эксплуатации уязвимости можно отключить сканирование интерпретаторов, указав в файле конфигурации /etc/needrestart/needrestart.conf параметр "$nrconf{interpscan} = 0".

Уязвимости присутствуют в коде с реализацией режима определения обновления скриптов, запущенных с использованием интерпретаторов. Выявленные проблемы:

  • CVE-2024-48990 - локальный пользователь может добиться выполнения кода с правами root через создание условий для запуска Python-интерпретатора с выставленной атакующим переменной окружения PYTHONPATH. Кроме использования Python атака также может быть проведена (CVE-2024-48992) через запуск интерпретатора Ruby с переменной окружения RUBYLIB.

    Уязвимости вызваны тем, что в процессе перезапуска изменившегося скрипта утилита needrestart выставляет переменную окружения PYTHONPATH на основе содержимого файла /proc/pid/environ, которую затем использует и для запуска собственного Python-кода. Соответственно, атакующий может дождаться активности, связанной с работой пакетного менеджера APT, симулировать изменение своего скрипта и установить для него переменную окружения PYTHONPATH, которая также будет применена при запуске встроенного в needrestart Python-кода ("import sys\n print(sys.path)"), выполняемого с правами root.

    Например, для эксплуатации уязвимости можно запустить постоянно висящий в памяти Python-процесс, выставив для него переменную окружения "PYTHONPATH=/home/test", и разместить разделяемую библиотеку "/home/test/importlib/__init__.so", которая будет выполнена при выполнении привилегированного Python-кода в needrestart.

  • CVE-2024-48991 - локальный пользователь может добиться выполнения кода с правами root через инициирование состояния гонки (race condition), в результате которого needrestart запустит фиктивный интерпретатор Python, подставленный атакующим, вместо системного интерпретатора Python. Суть уязвимость похожа на вышеотмеченную проблему, разница только в том, что needrestart определяет имя процесса Python (например, /usr/bin/python3) через чтение "/proc/pid/exe".

    Для эксплуатации уязвимости можно создать процесс /home/test/race, который при помощи механизма inotify дождётся момента, когда needrestart начнёт читать содержимое /proc/pid/exe, и сразу запустит через функцию execve системный интерпретатор Python. Так как needrestart не выполняет проверку настоящий ли это Python, то он посчитает, что /home/test/race и есть интерпретатор Python и запустит его для своего кода.

  • CVE-2024-11003 - локальный пользователь может добиться выполнения произвольных shell-команд с правами root через создание условий для обработки в needrestart имён файлов в формате "команда|", передача которых в Perl-функцию open() приведёт к запуску команды. Фактически уязвимость проявляется в Perl-модуле ScanDeps (CVE-2024-10224), но вызвана передачей в этот модуль внешних параметров без должной проверки.

    Атака может быть осуществлена через запуск Perl-скрипта с символом "|" в имени, например, "/home/test/perl|". В процессе выполнения функции scan_deps() в needrestart данный файл будет открыт через функцию open(), которая обработает символ "|" как флаг для запуска программы "/home/test/perl" и использования полученного от данной программы выходного потока.



  1. Главная ссылка к новости (https://www.openwall.com/lists...)
  2. OpenNews: Уязвимость в OpenSSH, позволяющая удалённо выполнить код с правами root на серверах с Glibc
  3. OpenNews: Уязвимость в glibc, позволяющая получить root-доступ в системе
  4. OpenNews: Уязвимость в Glibc ld.so, позволяющая получить права root в большинстве дистрибутивов Linux
  5. OpenNews: Root-уязвимость в инструментарии управления пакетами Snap
  6. OpenNews: Критическая уязвимость в PolKit, позволяющая получить root-доступ в большинстве дистрибутивов Linux
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62261-needrestart
Ключевые слова: needrestart, ubuntu
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (13) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 00:23, 20/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну ещё и ещё один повод использовать рхел и его клоны.
     
     
  • 2.5, Аноним (5), 00:59, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Redhat добавляла уязвимости из-за кривых патчей.
     
  • 2.6, нах. (?), 01:10, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    это в котором двадцать лет не могут аналогичную утилиту для dnf написать?
    Ну да, безопастно. Нет утилиты, нет опастностей. Поставил обновления - просто перезагружайся, какввенде, неча тебе гадать, что именно этими обновлениями затронуто, а что нет.

    (20 - потому что zypper в suse умел такое еще в начале нулевых, а убунта, вот, всего через 15 лет догнала, но есть нюанс)

     
     
  • 3.12, Аноним (12), 02:07, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > это в котором двадцать лет не могут аналогичную утилиту для dnf написать?

    а с какого бодуна должна такая шняга перезапускать процессы без желания пользователя?

    > Поставил обновления - просто перезагружайся

    поставил обновления днем, ручной перезапуск ночью - аксиома.

     
  • 2.9, Anonyrat (?), 01:47, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ну ещё и ещё один повод использовать рхел и его клоны.

    Можно подумать, будто бы у тебя есть выбор :-)
    В deb дистрибутивах до сих пор нет возможности вывести список всех пакетов (включая метапакеты), которые ты установил вручную, без учёта тех, которые поставились с системой при её установке.

     
     
  • 3.14, мяв (?), 02:35, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    это ведь.. такой нужный функционал, лол?
    и да, Вы не правы, man apt-mark, в частности, showmanual
     
     
  • 4.15, мяв (?), 02:40, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    а, нет, беру слова назад, щас перепроверила специально, это чуть другом.
    тем не менее, такое умеет делать nala.
     

  • 1.3, Аноним (3), 00:29, 20/11/2024 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +1 +/
     
  • 1.4, Аноним (4), 00:41, 20/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Так вроде ж ключевая идея всех суидных утилит в том, чтобы обнулять пользовательские переменные при исполнении. Зачем они каждый раз их задействуют? Едва ли можно на халатность. И как у них клиенты остаются после подобного?
     
  • 1.7, Аноним (7), 01:15, 20/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Провел аудит Debian в минимальной установки с помощью systemd-analyze security.
    .service красные.
     
  • 1.8, Anonyrat (?), 01:44, 20/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ещё один довод в пользу использования OpenBSD в связке с Core 2 Duo! Подpыв пеpдакoв возрастной группы 50+ начнётся через: 3... 2... 1...
     
     
  • 2.13, Аноним (13), 02:15, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не прокатит. Там нет systemd-analyze security
     

  • 1.10, Аэро (?), 01:54, 20/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Щас вообще какой век что бы сидеть без фаервола?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру