Zapscape: уязвимость KVM позволяет выйти из гостевой ВМ на хост Linux
Исследователь Хёну Ким раскрыл уязвимость в ядре Linux, получившую название Zapscape (CVE-2026-64561). Она затрагивает теневой блок управления памятью (shadow MMU) в KVM/x86, отвечающий за теневые таблицы страниц при трансляции памяти вложенных гостей. Атакующий, обладающий привилегиями ядра внутри гостевой машины уровня L1 (как правило, это root в госте), может вырваться из изоляции KVM и выполнить код на хосте с правами root.
В чём суть ошибки
Zapscape — это ошибка порядка проверки «устаревшего» корня в учётных структурах теневого MMU, приводящая к использованию памяти после освобождения (use-after-free). При обработке страничного отказа, инициированного гостем, KVM может освободить страницы MMU и аннулировать корневую страницу теневого MMU, которая всё ещё используется обработчиком отказа. Поскольку код повторно не проверяет корень, работа продолжается уже под недействительным корнем. Дочерние страницы наследуют некорректное состояние, но остаются в активном списке, и последующая очистка может привести к двойному связыванию, освобождению страницы и записи по «висячему» указателю.
Публичный proof-of-concept Кима использует этот примитив, чтобы создать на хосте файл /Zapscape, принадлежащий root. Демонстрация нацелена на вложенную AMD SVM/NPT на Linux 7.1.3; для безопасного тестирования автор рекомендует запуск под QEMU TCG, подчёркивая, что сам QEMU не уязвим — проблема живёт во встроенном в ядро KVM.
Условия и масштаб
На системах Intel для атаки требуется, чтобы гостю L1 были доступны длины обхода EPT 4 и 5; у AMD подобного условия нет. По данным NVD, затронуты версии Linux начиная с 5.9. Red Hat присвоила предварительную оценку CVSS 7.0 и классифицировала проблему как CWE-825 (разыменование просроченного указателя).
Ким уточняет, что это «не готовое к немедленному применению оружие»: для реальной эксплуатации в облаке действия уровня L1 пришлось бы перенести в модуль ядра гостя и адаптировать под конфигурацию хоста. О случаях эксплуатации в реальных атаках не сообщается.
Исправление
Правка уже принята в апстрим (коммит 2abd5287f083): проверка устаревшего корня перенесена после make_mmu_pages_available(), и при аннулировании корня KVM перезапускает обработку отказа вместо продолжения работы под недействительным корнем. Исправления вошли в стабильные выпуски 6.6.148, 6.12.101, 6.18.42, 7.1.6 и 7.2-rc5. Администраторам KVM-хостов, открывающих вложенную виртуализацию недоверенным гостям, рекомендуется обновиться. При этом статус пакетов зависит от трекера конкретного дистрибутива: на 6 августа Debian отмечал уязвимыми ядра в bullseye, bookworm, trixie и forky, тогда как sid уже исправлен.
Zapscape продолжает серию работ Кима по KVM — ранее он раскрыл Januscape (CVE-2026-53359) и ITScape (CVE-2026-46316).
Источник: The Hacker News
Комментарии
Войдите, чтобы комментировать.