Домой Новости Софт и сервисы Bad Epoll: в Linux и Android нашли уязвимость для получения root-доступа

Bad Epoll: в Linux и Android нашли уязвимость для получения root-доступа

Критическая ошибка в подсистеме epoll ставит под удар миллионы устройств. Разбираемся в механике атаки и способах защиты от эксплуатации.

Bad Epoll: в Linux и Android нашли уязвимость для получения root-доступа
Bad Epoll: в Linux и Android нашли уязвимость для получения root-доступа — иллюстрация к материалу. Источник: linux.org.ru

В ядре Linux обнаружена критическая уязвимость, получившая название Bad Epoll и идентификатор CVE-2026–46242. Брешь позволяет локальному пользователю без специальных прав доступа повысить свои привилегии до уровня root. Как отмечает автор исследования Джэён Чон, угроза актуальна не только для классических Linux-систем, серверов и десктопов, но и для ряда Android-устройств, функционирующих на базе актуальных версий ядра.

Суть уязвимости Bad Epoll

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

Технически Bad Epoll представляет собой состояние гонки, приводящее к ошибке типа use-after-free. Она возникает, когда несколько epoll-объектов закрываются одновременно: один поток освобождает внутренние структуры, тогда как второй продолжает попытки обращения к ним. В частности, при параллельном закрытии epoll-дескрипторов, один из которых следит за другим, поле file->f_ep обнуляется, что вводит в заблуждение функцию __fput(). В итоге объект struct eventpoll или связанный с ним struct file удаляется преждевременно, открывая атакующему путь к повреждению памяти ядра.

Особенности эксплуатации

Для реализации атаки не требуется наличие расширенных прав или использование пространств имен пользователя (user namespaces). Единственным необходимым условием является активная опция CONFIG_EPOLL, что делает практически все современные Linux-системы потенциально уязвимыми. По данным исследователя, баг был привнесен в ядро коммитом 58c9b016e128 в 2023 году, а исправление появилось в коммите a6dc643c693.

Несмотря на кратковременное окно гонки, Джэён Чон разработал рабочий эксплойт для Google kernelCTF. В процессе эксплуатации ошибка трансформируется в возможность записи восьми байт в освобожденную структуру, что позволяет получить утечку данных через /proc/self/fdinfo, перехватить file->f_op->poll и исполнить ROP-цепочку для получения root-доступа. Заявленная надежность эксплойта для версий lts-6.12.67 и COS составляет 98–99%. Работа над версией для Android продолжается.

Кто в зоне риска?

Под угрозой находятся системы, работающие на ядрах ветки 6.4 и новее, если в них не интегрированы соответствующие патчи безопасности. Примечательно, что автор исследования считает старые Android-смартфоны на ядрах 6.1 (включая Pixel 8 и аналогичные модели) неуязвимыми для данной атаки. Единственным надежным способом защиты на текущий момент остается оперативное обновление ядра от официального поставщика дистрибутива или производителя устройства.

Источник: https://www.linux.org.ru