Проект 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 или применить патчи из исходного кода. Для всех исправлений требуется перезагрузка системы. Ситуация в очередной раз демонстрирует важность своевременного патчинга компонентов ядра, особенно для серверов, выполняющих функции сетевого шлюза или виртуализации.
Ссылки
- https://www.freebsd.org/security/advisories/FreeBSD-SA-26:41.libalias.asc
- https://www.freebsd.org/security/advisories/FreeBSD-SA-26:49.iconv.asc
- https://www.freebsd.org/security/advisories/FreeBSD-SA-26:48.compat32.asc
- https://www.freebsd.org/security/advisories/FreeBSD-SA-26:47.linux.asc
- https://www.freebsd.org/security/advisories/FreeBSD-SA-26:46.ktls.asc
- https://www.freebsd.org/security/advisories/FreeBSD-SA-26:45.audit.asc
- https://www.freebsd.org/security/advisories/FreeBSD-SA-26:40.zfs.asc
- https://www.freebsd.org/security/advisories/FreeBSD-SA-26:26.ktls.asc
- https://www.freebsd.org/security/advisories/FreeBSD-SA-26:27.sound.asc
- https://www.freebsd.org/security/advisories/FreeBSD-SA-26:29.ip6_multicast.asc
- https://www.freebsd.org/security/advisories/FreeBSD-SA-26:30.linux.asc
- https://www.freebsd.org/security/advisories/FreeBSD-SA-26:34.vt.asc
- https://www.freebsd.org/security/advisories/FreeBSD-SA-26:37.vm.asc
- https://www.freebsd.org/security/advisories/FreeBSD-SA-26:42.unlinkat.asc
- https://www.freebsd.org/security/advisories/FreeBSD-SA-26:44.posixshm.asc
- https://www.freebsd.org/security/advisories/FreeBSD-SA-26:38.jail.asc
- https://www.freebsd.org/security/advisories/FreeBSD-SA-26:43.tcp.asc
- https://www.freebsd.org/security/advisories/FreeBSD-SA-26:39.execve.asc