Новая уязвимость в ядре Linux позволяет локально повысить привилегии до root через подсистему nftables

linux

Исследователи из Exodus Intelligence раскрыли детали опасной уязвимости в ядре Linux, которая даёт локальным пользователям возможность получить полный контроль над системой. Проблема, зарегистрированная как CVE-2026-23111, затрагивает подсистему nftables, отвечающую за фильтрацию пакетов и управление правилами межсетевого экрана. Уязвимость уже исправлена в актуальных версиях ядра, однако множество систем остаются незащищёнными.

Детали уязвимости

Ошибка относится к классу use-after-free, то есть к использованию памяти после её освобождения. Она возникает в механизме обработки так называемых карт вердиктов (структур данных, которые определяют решение о дальнейшей судьбе пакета) в nftables. В основе лежит логическая неточность в функции nft_map_catchall_activate(), которая отвечает за активацию элементов-ловушек (catch-all) во время транзакционных обновлений правил.

Ядро Linux использует поколенческий механизм для атомарного обновления наборов правил. Объекты помечаются как активные или неактивные в зависимости от поколения - "текущего" или "следующего". При откате транзакции из-за ошибки система должна вернуть все изменения. Однако из-за бага функция пропускает восстановление неактивных элементов-ловушек. В результате нарушается подсчёт ссылок: когда удаляется карта вердиктов, содержащая элемент-ловушку, ссылающийся на цепочку правил, счётчик ссылок этой цепочки уменьшается. Если в том же пакете транзакций происходит сбой, ядро пытается отменить удаление, но из-за ошибки элемент-ловушка не активируется повторно, и счётчик не восстанавливается. Таким образом, цепочка получает нулевой счётчик ссылок, хотя на неё всё ещё есть ссылки из других мест.

Такое состояние позволяет злоумышленнику преждевременно удалить цепочку, создав классическую ситуацию use-after-free: освобождённая память продолжает использоваться. Манипулируя транзакциями nftables через несколько пакетов обновлений, атакующий может надёжно воспроизвести это состояние и получить контроль над освобождёнными объектами ядра.

Эксплуатация уязвимости включает несколько этапов. Сначала злоумышленник создаёт сетевой неймспейс (пространство имён) - изолированную копию сетевого стека, которую непривилегированный пользователь может запустить при определённых условиях. Внутри этого неймспейса он формирует специальные операции nftables, которые триггерят ошибку. Затем, используя висячий указатель на освобождённую память, атакующий извлекает чувствительные данные ядра, в том числе базовый адрес самого ядра. Тем самым обходится механизм рандомизации адресного пространства ядра (KASLR), который призван затруднить атаки.

Далее происходит раскрытие адресов кучи (области динамической памяти) - злоумышленник перехватывает освобождённые регионы, заполняя их контролируемыми структурами данных. Эти утечки позволяют точно манипулировать компоновкой кучи ядра, что критически важно для надёжной эксплуатации. Финальный этап - перехват потока управления. Атакующий перезаписывает указатели на функции внутри структур ядра, чтобы при обработке пакета через nftables выполнить собственную цепочку возвратно-ориентированного программирования (ROP). К примеру, можно перезаписать указатели в перехваченной памяти так, что когда ядро обработает следующий пакет, оно перейдёт на код злоумышленника. В результате вызываются такие функции ядра, как commit_creds() с параметром init_cred, что даёт атакующему привилегии root. Более того, эксплуатация позволяет вырваться за пределы изоляции контейнеров, поскольку неймспейсы и контейнеры используют ту же подсистему nftables.

Исследователи сообщают о высокой надёжности эксплуатации: на незагруженных системах успех достигает более 99%, а при высокой нагрузке - около 80%. Такая стабильность делает уязвимость особенно опасной в реальных условиях. Проблема подтверждена на популярных дистрибутивах: Debian Bookworm, Debian Trixie, Ubuntu 22.04 LTS и Ubuntu 24.04 LTS, что указывает на широкое воздействие на корпоративные и серверные среды.

Причина уязвимости, как выяснилось, кроется в одной единственной логической ошибке - неверно расставленном операторе отрицания в условном выражении. Это лишний раз подчёркивает, насколько сложны современные подсистемы ядра вроде nftables, где даже мелкая оплошность может привести к серьёзным последствиям для безопасности.

Администраторам Linux настоятельно рекомендуется обновить ядро до версий, содержащих исправление для CVE-2026-23111. Наибольшему риску подвержены системы, где непривилегированные пользователи могут создавать свои неймспейсы или имеют доступ к функционалу nftables. Такие системы следует обновлять в первую очередь. Кроме того, специалистам по безопасности стоит отслеживать подозрительную активность в nftables, необычные взаимодействия через netlink, а также несанкционированное создание неймспейсов - эти признаки могут указывать на попытки эксплуатации уязвимости в реальной среде.

Ссылки

Комментарии: 0