LINUX.ORG.RU

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

 , ,

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

1

1

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

Ошибка находится в подсистеме epoll — стандартном механизме Linux для отслеживания множества файловых дескрипторов, сетевых соединений и событий ввода-вывода. Такие механизмы активно используют серверы, браузеры и сетевые сервисы, поэтому просто отключить epoll нельзя. В техническом разборе уязвимость описана как гонка, приводящая к use-after-free: при одновременном закрытии связанных epoll-объектов один поток освобождает внутренние структуры, а другой продолжает к ним обращаться.

Если точнее, проблема проявляется при ситуации, когда один epoll-дескриптор следит за другим, а оба дескриптора закрываются параллельно. После вызова __ep_remove() поле file->f_ep временно обнуляется, и конкурирующий __fput() может решить, что дополнительная очистка уже не нужна. В результате объект struct eventpoll или связанный с ним struct file освобождается слишком рано, но код продолжает работать с указателями на уже освобождённую память. Именно это и даёт атакующему примитив для повреждения памяти ядра.

Для атаки не нужны дополнительные capabilities и не требуются user namespaces — достаточно наличия CONFIG_EPOLL, что делает проблему особенно неприятной для обычных Linux-систем. Согласно первичному отчёту исследователя, баг был внесён в ядро коммитом 58c9b016e128 в 2023 году, а исправлен коммитом a6dc643c693.

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

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

>>> Подробности

★★★★★

Проверено: maxcom ()
Ответ на: комментарий от LightDiver

Ну я немного с иронией сказал не на сто процентов серьёзно, там же смайлик.

А так - можешь прочитать свое первое сообщение в этом треде: каждый раз, когда в сишном коде находят косяк, кто-нибудь из вас считает своим долгом сказать что в расте такого быть не может, потом кто-нибудь в треде показывает что может и вы говорите что вообще-то никто и не говорил что раст идеален

pihter ★★★★★
()
Ответ на: комментарий от pihter

А я там написал конкретно про этот баг. И к слову, ниже там подтвердил реалные баги, которые уже больше 11 лет живут.

Вся проблема в том, что в раст это баг языка, который надо исправлять, а в сишке - штатная работа, которую исправлять нен будут просто потому что это сишка.

С точки зрения раста - это баг раста, а с точки зрения сишки это баг программиста. А программисты не всесильны. Ты рано или поздно устанешь, забудешь, упустишь. Ты не автомат.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от LightDiver

Да я тебя слышу и тред читал, говорю же - с долей шутки

pihter ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.