Уязвимость в haveged позволяет любому локальному пользователю получить права root

vulnerability

Специалисты по информационной безопасности предупреждают о критической ошибке в системном сервисе haveged, который отвечает за сбор энтропии для генератора псевдослучайных чисел. Проблема получила идентификатор CVE-2026-41054  и может привести к полному захвату контроля над системой.

Уязвимость CVE-2026-41054

Суть уязвимости кроется в неожиданном поведении функции обработки подключений "socket_handler", которая расположена в файле "src/havegecmd.c". Данный сервис создаёт управляющий абстрактный UNIX-сокет (способ межпроцессного взаимодействия в Linux) с адресом "\0/sys/entropy/haveged". Через этот сокет администратор может отправлять команды сервису, в том числе привилегированные, такие как "MAGIC_CHROOT".

Разработчики предусмотрели проверку прав доступа. Код должен убедиться, что подключившийся пользователь обладает правами root. Если проверка показывает, что "cred.uid != 0", то есть идентификатор пользователя не равен нулю, сервис отправляет отрицательное подтверждение - "ASCII_NAK". Однако, как выяснилось, после этой проверки программа попросту не завершает свою работу. Выполнение переходит к оператору "switch", и уязвимый сервис обрабатывает команду от любого локального непривилегированного пользователя.

Иными словами, злоумышленник, уже имеющий доступ к системе, может отправить специально оформленную команду через сокет и выполнить действия от имени суперпользователя root. Это классическая уязвимость повышения привилегий, которая согласно стандарту CWE-305 классифицируется как обход аутентификации из-за слабой первичной защиты.

Новость пришла из базы отчётов SUSE Security Incidents. Проблему обнаружил и зарегистрировал Маркус Майснер 5 мая 2026 года. Уже 20 мая были опубликованы официальные данные об уязвимости.

Оценка опасности по шкале CVSS 3.1 (стандартная система оценки уязвимостей от 0 до 10) составила 7,8 балла - это высокий уровень угрозы. Вектор атаки локальный: "AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H". Это означает, что для эксплуатации нужен локальный доступ, атака не требует сложных действий, злоумышленнику достаточно иметь любой аккаунт в системе, и при этом компрометируются все три аспекта безопасности: конфиденциальность, целостность и доступность.

Список подверженных риску продуктов довольно широк. В зоне поражения оказались различные версии SUSE Linux Enterprise: Server, Desktop, High Performance Computing, Micro, а также образы для облачных платформ Azure, EC2, GCE и контейнерные сборки. В отдельную категорию попали версии SUSE Manager и серверы для SAP. Проблема затрагивает как основные выпуски (15 SP4, SP5, SP6, SP7), так и версии с длительной поддержкой и специальные сборки.

Важно понимать, что haveged - это не просто рядовой системный сервис. Он отвечает за наполнение пула энтропии, которая используется ядром Linux для генерации случайных чисел. Без качественной энтропии невозможно безопасное создание криптографических ключей, сессионных токенов и других критических элементов защиты. Поэтому компрометация этого сервиса может иметь каскадный эффект для всей инфраструктуры.

Угроза особенно серьезна для корпоративных сред, где серверы работают в режиме 24/7 и имеют большое количество локальных пользователей или запущенных процессов. В таких условиях найти хотя бы один непривилегированный аккаунт для злоумышленника не составит труда. После эскалации привилегий он сможет перехватить управление всем сервером.

Разработчики уже выпустили исправление. Проблема устранена в версии haveged 1.9.21. Для дистрибутивов SUSE выпущены обновления с номерами сборок 1.9.14-150400.3.11.1 и 1.9.14-150600.11.6.1 в зависимости от версии системы.

С технической точки зрения исправление оказалось простым и элегантным: в код проверки прав добавили оператор досрочного выхода. Теперь, если проверка показывает, что подключившийся пользователь не является root, выполнение программы немедленно завершается, не допуская обработки привилегированных команд.

Администраторам систем на базе SUSE Linux Enterprise необходимо в ближайшее время установить обновления для пакета haveged. Проверить текущую версию можно командой "haveged --version". После обновления сервис следует перезапустить.

Этот случай ещё раз напоминает о том, насколько опасными могут быть незначительные на первый взгляд логические ошибки в коде. Одна пропущенная строчка - и любой локальный пользователь получает права root. Разработчикам стоит обратить внимание на использование статических анализаторов кода, которые выявляют подобные паттерны. Для специалистов по безопасности это повод пересмотреть периметр доверенных Unix-сокетов в своей инфраструктуре.

Ссылки

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