Bad Epoll: уязвимость в ядре Linux с 99% успехом эксплуатации, которую пропустил ИИ

Исследователь Jaeyoung Chung обнаружил в ядре Linux уязвимость под названием Bad Epoll (CVE-2026-46242). Это классический use-after-free, вызванный состоянием гонки: два компонента ядра одновременно пытаются освободить один и тот же внутренний объект, один из них освобождает память, пока второй ещё пишет в неё. Итог — повреждение памяти ядра и повышение привилегий от обычного пользователя до root. Chung передал уязвимость как zero-day в программу Google kernelCTF, а полный технический разбор опубликовал в открытом доступе.
Bad Epoll: уязвимость в ядре Linux с 99% успехом эксплуатации, которую пропустил ИИ
Изображение носит иллюстративный характер

Уязвимость затрагивает Linux-десктопы, серверы и устройства на Android. Под угрозой ядра версии 6.4 и новее без уже применённого исправления. Ядра на базе 6.1 не пострадали — баг появился именно в 6.4. Например, Google Pixel 8 уязвимости не подвержен. Epoll — стандартный механизм Linux, позволяющий программам отслеживать множество файлов и сетевых соединений одновременно. Его используют серверы, сетевые службы, браузеры. Отключить его нельзя.
Окно гонки составляет всего около шести машинных инструкций. При случайных попытках эксплуатация почти никогда не срабатывает. Chung разработал технику, которая расширяет это окно и повторяет попытки без краша системы. Результат — успешная эксплуатация примерно в 99% случаев на тестируемых системах. Это делает баг практически детерминированным, несмотря на его природу состояния гонки.
У уязвимости два свойства, которые выделяют её на фоне большинства похожих багов. Первое: эксплуатация возможна изнутри sandbox renderer'а Chrome, который блокирует почти все остальные уязвимости ядра. Второе: баг достигает Android, тогда как большинство Linux-привилегированных уязвимостей до мобильных устройств не добираются. Реальных атак пока не зафиксировано, в списке Known Exploited Vulnerabilities от CISA уязвимость на момент публикации отсутствует. Работающий код — только proof of concept из kernelCTF. Версия эксплойта для Android ещё в разработке.
Bad Epoll и родственный баг CVE-2026-43074 восходят к одному изменению в коде epoll, внесённому в 2023 году. CVE-2026-43074 нашла Mythos — наиболее мощная языковая модель Anthropic. Исправление этого бага появилось раньше, в 2026 году. С Bad Epoll всё оказалось сложнее: первый патч оказался недостаточным, на правильное исправление ушло около двух месяцев. Финальный фикс — коммит a6dc643c6931 в upstream-ветке.
Именно здесь история приобретает неожиданный поворот. Mythos нашла соседний баг в том же участке кода epoll, но Bad Epoll пропустила. Anthropic отдельно подтвердила, что Mythos обнаружила ряд Linux-уязвимостей с повышением привилегий, однако публично не связала эту работу с Bad Epoll. Chung предложил два объяснения, почему ИИ прошёл мимо. Во-первых, точная последовательность событий крайне сложна для представления даже при внимательном чтении кода. Во-вторых, после патча первого бага ошибка памяти в Bad Epoll почти не триггерит KASAN — основной детектор багов ядра. Когда инструментарий молчит, нет никаких сигналов, что что-то идёт не так.
Параллельно в 2026 году накопилась и более широкая картина уязвимостей в ядре. CVE-2026-31431 (Copy Fail) — детерминированный баг записи в кеш страниц — появился в апреле 2026 года и уже попал в список CISA Known Exploited Vulnerabilities. CVE-2026-31694 — баг в FUSE-файловой системе, найденный компанией Bynario, занимающейся AI-driven-исследованиями. Локальный пользователь с доступом к FUSE может скормить ядру вредоносную файловую систему, повредить память, получить root, слить данные или уронить систему. Риск актуален прежде всего для серверов и контейнеров, где FUSE-доступ распространён, а не для мобильных устройств. Кроме того, Mythos и Anthropic нашли и проэксплуатировали 17-летний баг в NFS-сервере FreeBSD (CVE-2026-4747) с удалённым выполнением кода.
Отдельного внимания заслуживает цепочка Dirty Frag — Fragnesia, DirtyClone, pedit COW, — пришедшая следом за Copy Fail и использующая тот же класс детерминированной записи в кеш страниц. Это продолжение линии, у которой есть предшественники: Dirty Pipe в 2022 году и Dirty Cow в 2016-м.
Никаких обходных путей для Bad Epoll не существует: epoll отключить невозможно. Единственное решение — применить коммит a6dc643c6931 или дождаться бэкпорта от своего дистрибутива. Уязвимы все ядра версии 6.4 и новее без уже интегрированного исправления.
Bad Epoll наглядно показывает, что состояния гонки остаются одним из самых трудоёмких классов уязвимостей на каждом этапе: их сложно найти, сложно починить, и даже при шестиинструкционном окне гонки Chung сумел довести надёжность эксплуатации до 99%. Баг, мимо которого прошла модель Anthropic, в итоге поймал человек.


Новое на сайте

Ссылка