В гипервизоре KVM ядра Linux обнаружена уязвимость типа use-after-free (CVE-2026-53359), позволяющая из гостевой виртуальной машины повредить состояние теневых страниц хостового ядра. Уязвимый код присутствовал в ядре с 2010 года — около 16 лет. Публичный PoC-эксплойт под названием Januscape демонстрирует надёжный крах хоста, что приводит к отказу в обслуживании для всех виртуальных машин на физическом сервере. Проблема затрагивает x86-хосты на процессорах Intel и AMD с включённой вложенной виртуализацией. Исправление доступно — администраторам мультитенантных KVM-сред следует применить патч в приоритетном порядке.
Техническая суть уязвимости
Ошибка находится в коде shadow MMU — механизме теневых таблиц страниц, который KVM использует для отслеживания памяти гостевых машин. При необходимости повторно использовать существующую теневую страницу KVM сопоставлял её только по адресу кадра памяти (GFN), но не проверял тип (роль) этой страницы. Два разных типа теневых страниц могут иметь один и тот же адрес, но выполнять совершенно разные функции. Это приводило к тому, что KVM мог подставить страницу неверного типа, нарушая внутреннюю целостность своих структур данных.
В большинстве случаев ядро обнаруживает повреждение и аварийно завершает работу — это и демонстрирует публичный PoC Januscape: загружаемый модуль ядра в гостевой VM вызывает панику хоста за секунды или минуты гонки. Однако существует и более опасный сценарий: если освобождённая теневая страница успевает быть выделена под другие нужды до очистки, процедура очистки записывает значение в уже не принадлежащую ей память. По данным исследователя, атакующий контролирует куда происходит запись, хотя и не контролирует записываемое значение, — но даже этого ограниченного примитива может быть достаточно для дальнейшей эскалации.
Уязвимый код был внесён коммитом 2032a93d66fa в августе 2010 года (эпоха ядра 2.6.36). Исправление — коммит 81ccda30b4e8 — было принято в основную ветку 19 июня 2026 года. Автор патча — мейнтейнер KVM Паоло Бонцини (Paolo Bonzini). Исправление представляет собой однострочное дополнение к функции kvm_mmu_get_child_sp(): условие повторного использования теперь проверяет role.word наряду с GFN.
Условия эксплуатации и масштаб угрозы
Для эксплуатации необходимы два условия со стороны гостевой машины:
- Привилегии root внутри VM — распространённое условие для арендованных облачных инстансов.
- Вложенная виртуализация (nested virtualization), включённая на хосте. Даже если хост по умолчанию использует аппаратные EPT (Intel) или NPT (AMD), вложенная виртуализация вынуждает KVM задействовать устаревший путь через shadow MMU, где и находится ошибка.
Эксплойт не требует взаимодействия с QEMU или иным пользовательским VMM — это чисто внутриядерная ошибка KVM. Практический риск сосредоточен на x86-средах, обслуживающих недоверенных арендаторов с доступом к вложенной виртуализации. Атакующий, арендовавший один такой инстанс, способен обрушить хост и вывести из строя все соседние виртуальные машины на том же физическом сервере.
По данным исследователя, на дистрибутивах вроде RHEL, где /dev/kvm имеет права доступа 0666 (доступен всем пользователям), та же ошибка потенциально может быть использована для локальной эскалации привилегий до root, хотя основной вектор угрозы — побег из гостевой машины.
Стоит отметить, что CVE-2026-53359 — уже вторая уязвимость типа use-after-free в shadow MMU за два месяца. В мае 2026 года была исправлена схожая, но отдельная проблема CVE-2026-46113, связанная с несовпадением rmap в том же устаревшем коде. Это указывает на системную хрупкость legacy-пути shadow MMU.
Контекст: серия раскрытий одного исследователя
Januscape — третье раскрытие уязвимости ядра Linux от исследователя Hyunwoo Kim (@v4bel) за примерно два месяца. В мае 2026 года он опубликовал Dirty Frag (CVE-2026-43284 / CVE-2026-43500) — цепочку уязвимостей записи в кэш страниц. В июне последовал ITScape (CVE-2026-46316) — первый публично продемонстрированный побег из гостевой машины на KVM/arm64 через состояние гонки в виртуальном контроллере прерываний. Januscape дополняет картину со стороны x86.
По утверждению Кима, эксплойт был подан как находка нулевого дня в программу Google kvmCTF, запущенную в 2024 году и предлагающую вознаграждения до $250 000 за полный побег из гостевой машины. Однако это утверждение не подтверждено Google в открытых источниках.
Практические рекомендации
Стабильные версии ядра с исправлением были выпущены 4 июля 2026 года:
- 7.1.3, 6.18.38, 6.12.95, 6.6.144, 6.1.177, 5.15.211, 5.10.260
Приоритетные действия:
- Проверьте наличие патча. Убедитесь, что ядро содержит коммит
81ccda30b4e8. Дистрибутивные бэкпорты могут нести исправление под другим номером версии — проверяйте changelog пакета, а не только выводuname -r. - Если немедленное обновление невозможно, отключите вложенную виртуализацию для недоверенных гостей параметрами модуля:
kvm_intel.nested=0илиkvm_amd.nested=0. Это полностью устраняет вектор атаки. - Оцените конфигурацию доступа к /dev/kvm. На системах, где этот файл устройства доступен всем пользователям, рассмотрите ограничение прав доступа.
NVD пока не присвоила оценку CVSS для CVE-2026-53359. Хосты ARM64 не затронуты данной уязвимостью — ITScape (CVE-2026-46316) представляет собой отдельную проблему для KVM/arm64.
Публичный PoC демонстрирует надёжный крах хоста, а две уязвимости shadow MMU за два месяца сигнализируют о накопленном техническом долге в устаревшем коде KVM. Администраторам x86 KVM-хостов с вложенной виртуализацией и мультитенантным доступом следует рассматривать обновление ядра до исправленной версии как задачу с высоким приоритетом, не дожидаясь присвоения CVSS.