GhostLock, BadEpoll и Januscape — уязвимости в ядре Linux, позволяющие получить права root и обойти изоляцию KVM

Раскрыта информация об уязвимости (CVE-2026-43499) в ядре Linux, получившей кодовое имя GhostLock и позволяющая непривилегированному локальному пользователю получить права root в системе, а также выйти из изолированных контейнеров. При использовании в сочетании с другими уязвимостями в браузерах, выявленная проблема может применяться для удалённого выполнения кода с правами root при открытии специально оформленной web-страницы. Проблема проявляется начиная с ядра Linux 2.6.39 (2011 год).

Утверждается, что уязвимость может быть эксплуатиована во всех дистрибутивах, выпущенных за последние 15 лет. Имеется рабочий эксплоит, создатели которого получили от Google премию в $92337 за успешное повышение привилегий в окружении с ядром KernelCTF (Capture the Flag), включающем дополнительные патчи для блокирования типовых методов работы эксплоитов. Степень успешности работы эксплоита оценивается в 97%. Уязвимость выявлена при помощи AI-инструментария VEGA.

Патч с исправлением принят в кодовую базу ядра 21 апреля и вошёл в состав выпусков ядра 7.1.0,
6.18.36,
6.12.95,
6.6.144 и
6.1.177. Статус устранения уязвимостей в дистрибутивах можно оценить на данных страницах: Debian, Ubuntu, SUSE/openSUSE, RHEL, AlmaLinux, Gentoo, Arch,
Fedora. Обходные пути блокирования проблемы отсутствуют.

Уязвимость присутствует в реализации блокировок futex и вызвана обращением к памяти после её освобождения, возникающем при работе механизма наследования приоритетов, предотвращающем инверсию приоритетов (блокировка высокоприоритетной задачи из-за ожидания освобождения ресурса, занятого низкоприоритетной задачей). В ситуации, когда установка блокировки завершается ошибкой, ядро откатывает состояние и вызывает функцию очистки. При определённом стечении обстоятельств функция очистки вызывается не в тот момент и освобождает структуру данных другой задачи, после чего остаётся висячий указатель (dangling pointer), ссылающийся на уже освобождённую память.

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

В предложенном эксплоите осуществляется перезапись
указателя в таблице функций inet6_protos[IPPROTO_UDP], после чего на loopback-интерфейс по IPv6 отправляется UDP-пакет, при обработке которого осуществляется вызов обработчика, указатель на который был подменён на прошлом этапе. Для получения root-доступа получивший управление код эксплоита прописывает в /proc/sys/kernel/core_pattern
свой обработчик, вызываемый с правами root при крахе процессов.

Помимо рассмотренной проблемы в ядре Linux выявлено ещё несколько опасных уязвимостей:

  • Januscape (CVE-2026-53359) —
    обращение к памяти после её освобождения (use-after-free) в компонентах гипервизора KVM, выполняемых на стороне виртуальной машины для эмуляции блока управления памятью (MMU) и трансляции адресов между хостом и гостевой системой. Уязвимость проявляется на системах с процессорами Intel и AMD и позволяет получить доступ с правами root к хост-окружению при наличии доступа с правами root в гостевой системе.

    Для загрузки доступен прототип экспоита, повреждающий содержимое структуры данных на стороне хост-системы, применяемой при трансляции адресов. Опубликованный эксплоит приводит к аварийному завершению хост-системы, но по заявлению выявившего проблему исследователя, он также создал эксплоит для выполнения кода на стороне хост-окружения с правами root, но пока не публикует его, чтобы дать время на установку обновлений.

    Проблема вызвана ошибкой, допущенной 16 лет назад, и устранена в обновлениях 7.1.3,
    6.18.38,
    6.12.95,
    6.6.144 и
    6.1.177. Статус устранения уязвимостей в дистрибутивах можно оценить на данных страницах: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
    Fedora. За выявление уязвимости исследователь получил от Google вознаграждение в 250 тысяч долларов в рамках инициативы kvmCTF.

    Для выхода из гостевой системы на серверах на процессорами ARM64 тем же исследователем выявлена другая уязвимость ITScape (CVE-2026-46316), вызванная состоянием гонки в коде эмуляции vGIC-ITS (Interrupt Translation Service) в KVM. Для данной проблемы также опубликован прототип эксплоита.

  • Bad Epoll (CVE-2026-46242) — состояние гонки, приводящее к обращению к памяти после её освобождения, в подсистеме ядра epoll. Уязвимость позволяет локальному непривилегированному пользователю выполнить код с правами root. Проблема примечательна тем, что даёт возможность атаковать не только классические Linux-дистрибутивы, но и прошивки на базе платформы Android, а также не блокируется sandbox-изоляцией в Chrome.
    Рабочий эксплоит был продемонстрирован на соревновании
    kernelCTF (Google выплатил автору $71337). Надёжность работы эсплоита оценена в 99%.

    Проблема проявляется начиная с ядра Linux 6.4 (2023 год). О проблеме было сообщено разработчикам ядра 17 февраля, но исправление удалось разработать после нескольких неудачных попыток только 24 апреля. Проблема устранена в ядрах
    6.18.24,
    6.12.83,
    6.6.136. Статус устранения уязвимостей в дистрибутивах можно оценить на данных страницах: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
    Fedora.

  • CVE-2026-46215 — обращение к памяти после её освобождение в реализации ioctl DRM_IOCTL_GEM_CHANGE_HANDLE в подсистеме DRM (Direct Rendering Manager). Локальный пользователь, имеющий доступ к устройствам /dev/dri/renderD* (сервис systemd-logind предоставляет доступ всем пользователям при запуске графического сеанса во всех крупных дистрибутивах), может получить права root в системе. Имеется эксплоит. Проблема проявляется начиная с ядра 6.18 и устранена в обновлениях 7.0.9 и 6.18.32. Статус устранения уязвимостей в дистрибутивах можно оценить на данных страницах: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
    Fedora.

Источник: http://www.opennet.ru/opennews/art.shtml?num=65880