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 ★★★★★
()
Ответ на: комментарий от LightDiver

без ансейф было нельзя

А с ансейф руки и ноги отлетают ещё круче чем в дыряшке ибо Хруст - безопасен же.

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

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

LightDiver ★★★★★
()

Находят, находят уязвимости, а рабочего рута для huawei pura(который по слухам на древнем ведроиде) так и нет. Не то чтобы очень надо, привык уже без рута, но всё же. С киндлами последними, тоже всё не очень в плане рутования.

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

Ты заметил как в той новости ненавязчиво проскакивают слова «может», «потенциально».. Ни одного эксплойта нет, не факт, что вообще заработает. Нейрослоп короче во все поля.

ant1
()

Debian 11 не подвержен, да и 12 тоже. Пострадали только любители последних версий всего подряд вместо проверенных.

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

Да плевать на раст, у нормальных программистов такое ни на каком языке не будет происходить, а профнепригодных нельзя допускать до участия в серьёзных проектах - они если не тут так в другом месте дыру организуют.

firkax ★★★★★
()

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

У меня на смартфоне ядро 6.6. Похоже, что уязвимо и можно рутануть его в обход запрета производителя 😁

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

На раст бы принципиально такое сделать без ансейф было нельзя. Если я не ошибаюсь.

Компилировается даже с последним 1.96.1 и продолжает безопасно использовать память после освобождения:
Thread safe in rust (комментарий)

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

И не надо мне клоунов ставить, я серьёзно. Там один юзернейм расписал про каждую «дыру». То для получения рута уже нужен рут, то специальная не реалистичная конфигурация, а большинство и вовсе не дыры, а мелкие баги.

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

Уязвимостей во фряшке находят меньше не потому, что их там на самом деле меньше, а потому, что их меньше ищут. Это как Неуловимый Джо

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 1)

Это конечно очень полезная фича, но применимость так себе.

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

А с ансейф руки и ноги отлетают ещё круче

ансейф

руки и ноги отлетают

На некоторых людей знак «не влезай, убьёт» не действует.

Camel ★★★★★
()

установить обновление ядра от своего дистрибутива или вендора устройства.

смех_доктора_ливси_12ч.avi

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

беда в ручных кривых оптимизациях

И в итоге - переусложнении кода и cve

zanac1
()
Ответ на: комментарий от Camel

Rast - безопасно же, и дальше горшочек уже не варит. Так что ждём таких же, если не более глупых cve от братьев наших меньших

zanac1
()

Видите как хорошо что ранее нашли дыру Copy Fail - все обновили ядро и автоматом закрыли и Bad Epoll. Дыру дырой закрывают.

rkn-bot
()
Ответ на: комментарий от firkax

у нормальных программистов такое ни на каком языке не будет происходить

Ты покажешь живого нормального программиста?

vasya_pupkin ★★★★★
()

проблема затрагивает не только Linux-десктопы и серверы, но и часть Android-устройств на новых версиях ядра — это отдельно подчёркивается

это значит, что если не спешить, то можно рутануть свой телефон через эту уязвимость, даже если производитель телефона не позволяет делать рутовые прошивки?

весьма позитивная новость!

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

На haiku os, нет уязвимостей, потому что она никому не нужна из всяких хакеров)

REDDERa
()
Ответ на: комментарий от Manhunt

А бывает раст без ансейф?

Hello word запущенный через bios

zanac1
()

Android-эксплойт, по словам автора, ещё находится в работе.

Ура, давай-давай!

thesis ★★★★★
()

Т.е. если разлочить загрузчик, то у нас ещё один вектор получения постоянного рута на крайних ведроидах?
Прекрасно.
Написал бы по другому, если бы гугло давало нормальный способ рутовать устройства - но, есть что есть.

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

А, да, я же совсем забыл - ты тут один в белом пальто и единственный у кого ну точно точно нет уязвимостей.

Жучиха же забанилась, так что да, один.

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

Это уже абстракции со всеми вытекающими минусами. Во-первых, это медлененее. И нет, не все.

Есть фундаментальные ограничения. Те, что не разрешаются вообще никак. Работа с сырой памятью, вызов внешних функций из си, работа с железом. Там многов всего. Без ансейф иногда ты просто не сможешь реализовать задачу.

Но в раст это выбор, когда в си у тебя просто всегда по сути работа в ансейф.

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

Конкретно данной уязвимости не вижу. В раст такую гонку нельзя сделать без ансейф - компилятор не даст.

Да и с ансейф случайно сделать будет сложно, скорее всего.

В раст статическая проверка владения гарантирует, что если объект освобожден, никаких ссылок на него не может остаться.

Я глянул - там эксплуатируются косяки самого языка. Да, в старых версиях раст их было больше. Там же древнейшие версии по твоей ссылке. Это все потихоньку исправляется. Это не баг логики - не косяк программиста, а косяк создателей языка, который они закрывают. (кстати работает, не закрыли еще. Всего 11 лет багу, не трубуй невозможного, давай просто подождем.)

В то время как в си - это базовая работа языка.

Никто не говорит, что раст идеален и там нет косяков. Но просто их меньше и что то продуманнее. Конкретно эта сишная уязвимость например в раст невозможна.

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

А бывает раст без ансейф?

Ходят слухи, что да, мол, бывает... ;))

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

у них у самих веселье - CVE-2026-49420 - там даже локальный не нужен для получения рута

Кстати, в связи с использованием нейросетей для поиска уязвимостей, могут начать обнаруживаться уязвимости в системах, которыми раньше особенно не интересовались. И вот сколько их там накопилось — это интересный вопрос.

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

Ненене, я вообще веб-макака. Я и с ансейф не напишу.

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

И вот сколько их там накопилось

Думаю, достаточно много «их там накопилось». Как и в любом другом софте...

Человеку вообще свойственно ошибаться, а «погромисты» - они же, всё таки, как ни крути, а тоже человеки... ;))

Вот и «наошибали» тут и там... :)

Somebody ★★★★
()

Мне интересно как внесли уязвимость. Уж очень она специфическая

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