Критическая уязвимость в sudo позволяет локальным пользователям получать полные root-привилегии

vulnerability

Группа исследователей безопасности опубликовала детальный технический отчет о CVE-2025-32463 - критической уязвимости повышения привилегий в широко используемой утилите Linux sudo. Ошибка затрагивает версии sudo с 1.9.14 по 1.9.17 и позволяет локальному злоумышленнику со стандартными правами sudo получить полные root-привилегии через злоупотребление функцией -chroot.

Детали уязвимости

В основе проблемы лежит логическая ошибка в опции -chroot (или -R). Обычно chroot ограничивает процесс указанным каталогом, но sudo применяет это ограничение до проверки прав пользователя и до загрузки модулей Name Service Switch (NSS). Размещая вредоносный файл /etc/nsswitch.conf внутри контролируемого пользователем chroot-каталога, злоумышленник может заставить sudo загрузить вредоносную разделяемую библиотеку (.so) с правами root через динамическую загрузку модулей NSS.

Уязвимость возникает из-за последовательности операций в исходном коде sudo. После вызова chroot() для целевого каталога sudo продолжает работать от имени root. Затем программа вызывает функции типа getpwuid() для проверки учетных данных пользователя. NSS читает chrooted /etc/nsswitch.conf и на основе его содержимого выполняет dlopen() для библиотек, таких как libnss_malicious.so.2. Поскольку эти модули загружаются в контексте root, специально созданная библиотека злоумышленника может выполнить произвольный код уровня root в своем конструкторе.

Этот метод требует только доступа на запись к локальным файлам и доступного для записи каталога вроде /tmp, что делает атаку простой и разрушительной. Исследователи продемонстрировали эксплуатацию в несколько этапов: настройка окружения через создание структуры каталогов в /tmp/my_chroot с подкаталогами etc и lib/x86_64-linux-gnu с соответствующими разрешениями, конфигурация NSS через добавление поддельного /tmp/my_chroot/etc/nsswitch.conf, который инструктирует NSS загружать "вредоносный" модуль, компиляция разделяемой библиотеки с функцией-конструктором, запускающей root-оболочку при загрузке, и активация уязвимости через выполнение sudo -R /tmp/my_chroot /usr/bin/id для принудительного chroot, парсинга NSS и загрузки библиотеки с последующим получением root-оболочки.

Доказательная концепция и детальный анализ на уровне ассемблера доступны на GitHub, иллюстрируя каждый этап от трассировки системных вызовов с помощью strace до финального запуска оболочки. Затронутые системы включают Ubuntu 24.04+, Red Hat 8/9, SUSE, Amazon Linux и macOS Ventura/Sonoma при использовании уязвимых выпусков sudo. Особую опасность уязвимость представляет в контейнеризованных средах (Docker, Podman), где escapes из chroot могут привести к компрометации хоста.

Для защиты от этой атаки рекомендуется немедленно установить патч через обновление до sudo 1.9.17p1 или новее, где функция chroot объявлена устаревшей, а проверки прав происходят до загрузки NSS. Альтернативно можно отключить chroot через добавление Defaults !chroot в /etc/sudoers с помощью visudo. Дополнительные меры включают усиление безопасности временных каталогов через монтирование /tmp с опциями noexec,nosuid,nodev, применение политик обязательного контроля доступа через SELinux или AppArmor для ограничения загрузки модулей NSS и аудит вызовов chroot с использованием auditd для регистрации подозрительной активности.

CVE-2025-32463 демонстрирует, как казалось бы защитные функции могут создавать критические пробелы безопасности. Системным администраторам настоятельно рекомендуется немедленно применить обновления и меры mitigation для предотвращения несанкционированного доступа к root. Непрерывные проверки кода и ответственное раскрытие информации остаются важнейшими элементами защиты основных системных утилит.

Ссылки

Комментарии: 0