В стеке изоляции контейнеров Kata Containers обнаружена критическая уязвимость, получившая идентификатор CVE-2026-47243. Она позволяет злоумышленнику, имеющему права суперпользователя (root) внутри гостевой виртуальной машины, выполнять произвольный код на хост-системе с теми же привилегиями. Проблема затрагивает конфигурации, использующие runtime-rs - компонент управления контейнерами, и демон virtiofsd для организации общего доступа к файлам между хостом и гостем. Уязвимость уже устранена в выпуске Kata Containers 3.31.0, и всем, кто применяет runtime-rs, настоятельно рекомендуется обновить свои установки.
Уязвимость CVE-2026-47243
Kata Containers представляет собой проект, который запускает каждый контейнер внутри отдельной легковесной виртуальной машины. Такая архитектура даёт более сильную изоляцию по сравнению с традиционными контейнерными рантаймами, поскольку границей между приложением и хостом служит гипервизор. Для обмена файлами между хост-системой и виртуальной машиной Kata Containers использует технологию virtio-fs. Её реализация на стороне хоста - демон virtiofsd - обрабатывает все файловые запросы от гостя. В проблемной конфигурации, которую применяет runtime-rs, этот демон запускается от root-пользователя и без включённых песочницы и фильтрации системных вызовов (ключи "--sandbox none --seccomp none").
Суть уязвимости кроется в том, что штатный механизм virtio-fs предусматривает обработку файловых операций через гостевой клиент - часть ядра виртуальной машины. Он проверяет корректность путей и не позволяет выходить за пределы общей директории. Однако злоумышленник, получивший root-доступ внутри контейнера, может обойти этот клиент и напрямую обращаться к виртуальному устройству VirtIO PCI. С помощью прямых запросов к очереди сообщений (virtqueue) из пользовательского пространства он способен отправлять произвольные FUSE-запросы (интерфейс файловой системы пользовательского пространства) непосредственно на хост-демон virtiofsd. Ключевой примитив - запрос "FUSE_SYMLINK". Он создаёт символическую ссылку, причём в атакуемом варианте демон принимает абсолютный путь в качестве имени новой ссылки, не ограничиваясь общей директорией.
Таким образом, злоумышленник может сформировать запрос, который создаст символическую ссылку в каталоге "/etc/cron.d" на хосте. Целью ссылки выбирается файл с полезной нагрузкой, расположенный в гостевой файловой системе, доступной через procfs одного из процессов runtime-rs. В результате хост-демон cron, обрабатывающий задачи в каталоге "/etc/cron.d", считывает эту ссылку, переходит к гостевому файлу и исполняет записанный злоумышленником сценарий от имени root на хосте.
В доказательство концепции исследователи продемонстрировали, как внутри привилегированного контейнера (с гостевыми root-правами) создаётся cron-задание, затем отправляется прямой FUSE-запрос на создание ссылки, а после срабатывания cron на хосте появляется файл "/run/kata-go-escape.proof", созданный уже не внутри гостевой системы, а самим хост-процессом с uid 0. Это однозначно свидетельствует о полном преодолении изоляции Kata Containers и достижении удалённого выполнения кода на уровне хоста.
Уязвимость классифицирована как критическая. Она проявляется только при использовании компонента runtime-rs в Kata Containers версиями до 3.30.0 включительно и при активации режима standalone virtio-fs. Разработчики уже выпустили патч в версии 3.31.0. Проблема не затрагивает классический рантайм Kata Containers (на основе Go) и конфигурации, где включён rootless-режим, а также те, где для virtiofsd применяются иные настройки песочницы.
Последствия эксплуатации этой уязвимости крайне серьёзны. Атакующий, получивший root внутри контейнера, может полностью скомпрометировать хост-систему: украсть данные, установить вредоносное ПО, нарушить работу других контейнеров и сервисов. Поскольку Kata Containers часто применяется для изоляции критичных рабочих нагрузок в мультиарендных средах, облачных провайдерах и платформах Kubernetes, это делает уязвимость особенно опасной.
Специалистам по безопасности и администраторам платформ контейнеризации следует в первую очередь проверить, используется ли в их конфигурации runtime-rs. Если это так, необходимо немедленно обновить Kata Containers до версии 3.31.0. Дополнительно стоит убедиться, что в конфигурационном файле не установлены флаги "--sandbox none" и "--seccomp none" для virtiofsd, а также включён режим rootless, если это возможно. Однако основная защита - своевременное применение обновления.
Уязвимость CVE-2026-47243 ещё раз напоминает, что даже самые современные механизмы изоляции могут содержать ошибки в реализации, а кажущаяся безопасность виртуализации не должна успокаивать. Вдумчивый аудит конфигураций, регулярное обновление компонентов и следование рекомендациям разработчиков - необходимые меры для поддержания надёжной защиты контейнерных инфраструктур.
Ссылки