В Linux-ядре нашли опасную уязвимость CVE-2025-38236, которую обнаружил исследователь из Google Project Zero Янн Хорн. Она позволяет злоумышленнику, начав с выполнения кода внутри песочницы Chrome, добраться до полного контроля над ядром в Linux.
Проблема связана с малоизвестной функцией MSG_OOB (out-of-band) в UNIX domain sockets. Её добавили ещё в Linux 5.15 в 2021 году для специфических приложений Oracle, но она была включена по умолчанию и в итоге оказалась доступна из песочницы Chrome на Linux.
Ошибка приводит к use-after-free — состоянию, при котором система обращается к уже освобождённой области памяти. Хорн показал, что с помощью определённой последовательности операций с сокетами можно читать и изменять память ядра, а значит — повышать привилегии.
Эксплойт был протестирован на Debian Trixie (x86-64) и использовал «примитив чтения» для копирования произвольной памяти ядра в пространство пользователя, обходя защиту usercopy hardening. Хорн нашёл способ использовать даже защитный механизм Debian CONFIG_RANDOMIZE_KSTACK_OFFSET в свою пользу — это помогало точнее выровнять стек для успешной атаки.
Уязвимость уже закрыта в обновлениях Linux, а Chrome изменил работу своей песочницы, заблокировав передачу MSG_OOB-сообщений.
Интересно, что похожая ошибка попадалась фреймворку syzkaller ещё в августе 2024 года, но для её воспроизведения требовалось шесть системных вызовов, а найденный Хорном вариант — восемь. Это подчёркивает, насколько сложно автоматическим инструментам находить такие уязвимости.
Отдельно Хорн отметил, что в Linux-песочнице Chrome остаётся много лишних интерфейсов — от UNIX-сокетов и pipe до syscalls вроде sendmsg() и mprotect(). Ранее через подобные механизмы уже находили баги в futex(), memfd_create() и pipe2().
Эксперт считает, что такие случаи — сигнал к ужесточению настроек песочниц и более внимательному контролю за «экзотическими» возможностями ядра, доступными непривилегированным процессам.