Уязвимость в Linuxulator FreeBSD позволяет локально повышать привилегии через подмену библиотек

FreeBSD

Проект FreeBSD выпустил бюллетень безопасности FreeBSD-SA-26:30, в котором сообщается об уязвимости CVE-2026-49413, затрагивающей подсистему эмуляции системных вызовов Linux - Linuxulator. Проблема позволяет неавторизованному локальному пользователю повысить свои привилегии до уровня владельца set-uid/set-gid бинарного файла. Уязвимости подвержены все поддерживаемые ветки FreeBSD - от 14 до 15.1. Разработчики уже выпустили исправления как для исходных кодов, так и для бинарных дистрибутивов.

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

FreeBSD включает модуль ядра linux.ko (или linux64.ko), который реализует прослойку совместимости с системными вызовами Linux. Благодаря этому пользователи могут запускать немодифицированные бинарные файлы Linux непосредственно в среде FreeBSD. При выполнении set-user-ID или set-group-ID исполняемого файла (SUID/SGID) ядро обязано передать в ELF-вспомогательный вектор флаг AT_SECURE. Этот флаг информирует динамический компоновщик (обычно glibc), что необходимо отключить опасные механизмы, такие как LD_PRELOAD, который позволяет загружать произвольные разделяемые библиотеки. Без корректной установки AT_SECURE злоумышленник может внедрить свою библиотеку в привилегированный процесс.

Проблема заключается в том, что Linuxulator определял, является ли бинарный файл set-uid или set-gid, проверяя флаг процесса P_SUGID. Однако при выполнении execve(2) этот флаг ещё не был установлен на момент формирования вспомогательного вектора. В результате AT_SECURE ошибочно устанавливался в ноль для всех SUID/SGID исполняемых файлов. Это позволяло не привилегированному локальному пользователю с помощью переменной окружения LD_PRELOAD загрузить вредоносную разделяемую библиотеку в процесс, запускающий такой бинарник, и таким образом получить его привилегии.

Обнаружил уязвимость Минсон Ким из NSHC Red Alert Labs. Идентификатор уязвимости - CVE-2026-49413. Оценка риска - повышение привилегий. Системы, на которых не загружены модули linux.ko или linux64.ko, или на которых нет ни одного Linux-исполняемого файла с set-uid или set-gid битами, не подвержены уязвимости. Однако в типичных конфигурациях FreeBSD такие модули могут быть загружены для поддержки работы стороннего программного обеспечения, включая некоторые проприетарные приложения.

В случае эксплуатации уязвимости атакующий может получить полный контроль над системой от имени пользователя, владеющего SUID/SGID бинарным файлом. Чаще всего SUID-бинарники принадлежат root, поэтому это означает прямую эскалацию привилегий до суперпользователя. Метод атаки не требует сложных действий: достаточно поместить вредоносную библиотеку по известному пути и запустить уязвимый исполняемый файл с окружением, содержащим LD_PRELOAD.

Исправления уже интегрированы в стабильные и релизные ветки FreeBSD. Для систем, установленных из бинарных пакетов (например, 15.0-RELEASE), обновление выполняется командой:

Для систем, установленных из бинарных дистрибутивов (свободные обновления), необходимо использовать freebsd-update:

Для систем, собираемых из исходных кодов, предоставлен патч:

После установки патча требуется перекомпиляция ядра и перезагрузка.

Обратим внимание, что проблема связана именно с логикой определения SUID/SGID в момент execve, а не с недостатками самого Linuxulator. Подобные ошибки могут возникнуть в любом коде эмуляции, где состояние процесса меняется асинхронно. Данная уязвимость является классическим примером состояния гонки (race condition) в обработке флагов безопасности FreeBSD. Разработчики уже зафиксировали ошибку: теперь AT_SECURE корректно вычисляется на основе прав самого бинарного файла, а не текущего состояния флага процесса.

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

Подчеркнём, что уязвимость не затрагивает системы без загруженного модуля linux. Если организация не использует Linux-приложения, она может считаться защищённой. Однако ради соблюдения общей гигиены безопасности стоит либо удалить модуль из загрузки, либо убедиться в отсутствии SUID/SGID исполняемых файлов Linux.

В целом, CVE-2026-49413 - это серьёзная локальная уязвимость повышения привилегий, но она не является удалённой и не может быть использована без доступа к системе. Основной вектор атаки - внутренний нарушитель или заражённое приложение, запущенное от имени непривилегированного пользователя. Установка свежего патча является единственным действенным способом устранения угрозы.

На момент публикации бюллетеня обходных путей не существует. Проект FreeBSD рекомендует выполнить обновление в кратчайшие сроки и перезагрузить систему.

Ссылки

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