Во FreeBSD устранено 22 уязвимости: одна из которых допускает удалённое выполнение кода с правами root

FreeBSD

Проект FreeBSD выпустил пакет обновлений для всех поддерживаемых веток операционной системы, устраняющих 22 уязвимости. Наиболее опасная из них, CVE-2026-49420, позволяет удалённо выполнить код на уровне ядра или процесса natd, работающего с правами суперпользователя. Остальные проблемы в основном связаны с повышением привилегий локальным пользователем и затрагивают различные подсистемы ядра.

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

Критическая уязвимость обнаружена в библиотеке libalias, которая используется пакетным фильтром ipfw и фоновым процессом natd для трансляции сетевых адресов (NAT). Проблема вызвана переполнением буфера в обработчике протокола RTSP (Real Time Streaming Protocol). При перезаписи исходящих пакетов с фиксированным размером буфера не проверялось, помещается ли результат обратно в пакет. Специально сформированный RTSP-трафик, проходящий через NAT-шлюз, может вызвать переполнение стека и удалённое выполнение кода с правами root. В качестве временной меры администраторам рекомендуется заблокировать загрузку модуля alias_smedia.ko, удалить упоминание libalias_smedia.so из файла /etc/libalias.conf или заблокировать трафик на порты 554 и 7070 до срабатывания правил NAT, если RTSP не используется.

Группа из 13 уязвимостей предоставляет непривилегированному локальному пользователю возможность повысить свои привилегии до root. Среди них выделяется ошибка CVE-2026-49415 в системном вызове execve - состояние гонки, при котором в момент выполнения файла с флагом SUID root можно изменить его адресное пространство через procfs или linprocfs. Эта проблема затрагивает все поддерживаемые версии FreeBSD. Исследователь Synacktiv сообщил о ней, работающего исправления пока нет.

Ещё одна серьёзная локальная уязвимость - CVE-2026-49422 - обращение к уже освобождённой памяти (use-after-free) в модуле ядра tcp_rack.ko, реализующем алгоритм определения потери TCP-пакетов RACK. Эксплуатация возможна через манипуляции с локальным сокетом. Модуль не загружается по умолчанию, поэтому уязвимы только системы, где он активен.

В механизме изоляции Jail (CVE-2026-49419) обнаружен сбой счётчика ссылок (underflow). При использовании jail-дескрипторов с флагом JAIL_AT_DESC в вызовах jail_set и jail_get в случае ошибки ссылка на текущую тюрьму высвобождалась дважды. Это может привести к освобождению структуры ядра, используемой повторно, и в конечном счёте к повышению привилегий. Проблема затрагивает FreeBSD 15.0 и новее.

Три уязвимости связаны с файловой системой OpenZFS (CVE-2026-49429, CVE-2026-49430, CVE-2026-49431). Наиболее опасная из них - CVE-2026-49429 - переполнение буфера в ioctl ZFS_IOC_USERSPACE_MANY, которое может быть использовано пользователем с ZFS-правом "userused" для выполнения кода в ядре. Остальные две позволяют вызвать повреждение памяти и некорректно установить метаданные на наборе данных.

Уязвимости в реализации объектов разделяемой памяти largepage (CVE-2026-49427 и CVE-2026-49428) также ведут к обращению к уже освобождённой памяти в ядре. Они эксплуатируются через функцию sendfile с флагом SF_NOCACHE или через системные вызовы open и fspacectl с флагом O_TRUNC.

Проблема CVE-2026-49421 касается игнорирования флага AT_RESOLVE_BENEATH в системных вызовах unlinkat и funlinkat - ограничение обхода путей не применялось, что позволяло удалять файлы за пределами заданной директории.

В подсистеме виртуальной памяти (CVE-2026-49418) обнаружено повторное освобождение памяти при вызове msync(MS_INVALIDATE) для маппинга устройства. Целочисленное переполнение в драйвере консоли vt (CVE-2026-49416) через ioctl CONS_HISTORY с большим размером даёт возможность выйти за пределы выделенного буфера кучи.

В слое совместимости с Linux (Linuxulator) исправлена уязвимость CVE-2026-49413, из-за которой переменная окружения LD_PRELOAD передавалась в исполняемые файлы с флагом suid, позволяя атакующему выполнить свой код с привилегиями бинарника. Дополнительно в Linuxulator устранена утечка 104 байт неинициализированных данных стека (CVE-2026-49424) при реализации waitid.

Драйвер sound (CVE-2026-45258 и CVE-2026-49417) содержал две ошибки в поддержке mmap: целочисленное переполнение при проверке длины маппинга и возможность освобождения буфера при закрытии устройства при сохранённом маппинге. Поскольку устройство /dev/dsp по умолчанию доступно всем, локальный пользователь может читать и записывать память ядра.

Уязвимость CVE-2026-45257 в модуле ktls позволяет перезаписать любой файл, доступный на чтение, через манипуляции с кешем страниц. Атакующий может подменить, например, /bin/su и получить root.

Менее опасные проблемы включают удалённую DoS-уязвимость в KTLS (CVE-2026-49423), неправильное создание записей аудита для ptrace (CVE-2026-49426), утечку данных из стека в compat32 (CVE-2026-49425) и переполнения буфера в библиотеке iconv (CVE-2026-58081, CVE-2026-58082) при обработке некоторых кодировок.

Разработчики FreeBSD рекомендуют всем администраторам как можно скорее установить обновления до версий 15.1-RELEASE-p1, 15.0-RELEASE-p11, 14.4-RELEASE-p7 или 14.3-RELEASE-p16. Обновление можно выполнить через pkg, freebsd-update или применить патчи из исходного кода. Для всех исправлений требуется перезагрузка системы. Ситуация в очередной раз демонстрирует важность своевременного патчинга компонентов ядра, особенно для серверов, выполняющих функции сетевого шлюза или виртуализации.

Ссылки

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