Уязвимость OVSwrap в ядре Linux позволяет локальному пользователю получить root-доступ

linux

Ошибка в обработке внутренних действий Open vSwitch (OVS) в ядре Linux, получившая идентификатор CVE-2026-64531 и название OVSwrap, позволяет непривилегированному локальному пользователю повысить привилегии до root. Разработчики выпустили исправления для затронутых веток ядра, а исследователь, обнаруживший проблему, опубликовал детали и прототип эксплойта.

Уязвимость CVE-2026-64531

Уязвимость кроется в целочисленном переполнении при работе с внутренними потоками действий, которые OVS генерирует из пользовательских команд. Из-за ошибки длина вложенного атрибута Netlink может быть записана некорректно, что приводит к искажению последующего разбора данных. Атакующий может контролировать отдельные поля, что позволяет подменить структуры действий и в конечном счёте получить полный контроль над системой.

Open vSwitch - это программный виртуальный коммутатор, широко применяемый в облачных, виртуализированных и контейнерных средах, а также в решениях для программно-конфигурируемых сетей (SDN). В Linux функциональность OVS разделена между пользовательским процессом ovs-vswitchd и модулем ядра, который обрабатывает потоки пакетов. Именно модуль ядра содержит уязвимый код.

Для эксплуатации не требуется наличие существующего моста OVS, работающего демона или привилегий CAP_NET_ADMIN (полномочий на управление сетью) на уровне хоста. Достаточно, чтобы система разрешала создание непривилегированных пользовательских пространств имён. Локальный пользователь может создать изолированное пространство, получить в нём права администратора сети и поднять собственный экземпляр OVS-датапаса. Во многих дистрибутивах загрузка модуля openvswitch происходит автоматически при обращении к соответствующему семейству Generic Netlink, так что модуль не обязательно должен быть запущен заранее.

Проблема возникает при преобразовании действий OVS во внутреннее представление. Каждый вложенный атрибут имеет 16-битное поле длины, и его значение не должно превышать 65 535 байт. Однако до исправления ядро не проверяло это ограничение. Если суммарный размер вложенного действия, например, CLONE с сотнями операций conntrack, превышает 64 КБ, длина записывается с переполнением. В результате последующий код интерпретирует данные из середины полезной нагрузки как новое действие.

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

Исследователь, сообщивший об уязвимости, отметил, что из-за привязки смещений к конкретной сборке ядра эксплуатация unusually reliable и не требует каких-либо подготовительных действий с кучей. Прототип включает данные для сотен сборок x86-64. Практическая эксплуатация стала возможной после изменения в ядре от марта 2025 года, которое убрало ограничение в 32 КБ на суммарный размер потока действий OVS. Это изменение устранило непредсказуемые сбои, но одновременно сняло защитный барьер, не позволявший вложенным атрибутам достигать точки переполнения. Опасное присваивание длины существовало в коде около 13 лет.

Уязвимость затрагивает ядра серий 5.15 (с 5.15.180 по 5.15.211), 6.1 (с 6.1.132 по 6.1.177), 6.6 (с 6.6.84 по 6.6.144), 6.12 (с 6.12.20 по 6.12.96), 6.18 (с 6.18.0 по 6.18.39) и 7.1 (с 7.1.0 по 7.1.4). Первые исправленные версии - 5.15.212, 6.1.178, 6.6.145, 6.12.97, 6.18.40 и 7.1.5. Ветки 6.13-6.17, 6.19 и 7.0 не получат исправлений из-за завершения поддержки. Пользователям рекомендуется как можно скорее установить обновлённый пакет ядра от своего дистрибутива. Некоторые проприетарные ядра, в частности отдельные сборки RHEL и SUSE, могут иметь отличные от upstream характеристики, поэтому важно сверяться с рекомендациями производителя.

Исправление вводит проверку длины вложенных атрибутов и отклоняет слишком большие действия с ошибкой. Дополнительно разработчики позаботились о корректном освобождении частично созданных структур при обнаружении переполнения. Если установка патча невозможна, администраторам следует выгрузить и заблокировать загрузку модуля openvswitch, когда он не используется, ограничить доступ к непривилегированным пользовательским пространствам имён и пересмотреть выдачу контейнерам прав CAP_NET_ADMIN в рамках их пространств.

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

Ссылки

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