16 лет в коде. Ошибка в Linux KVM позволяет гостевой системе обрушить физический сервер
Виртуальная машина должна оставаться изолированной от физического сервера, но ошибка в Linux KVM позволяла гостевой системе нарушить эту границу и воздействовать на ядро хоста. Уязвимость Januscape, получившая номер CVE-2026-53359, присутствовала в коде около 16 лет и затрагивала x86-системы с процессорами Intel и AMD.
Проблема находилась в механизме теневых таблиц страниц, который KVM использует при вложенной виртуализации. Гипервизор искал страницу для повторного использования только по адресу и не проверял её назначение. В результате KVM мог взять страницу другого типа, нарушить внутренние связи и начать работать с уже освобождённой памятью.
Публичная демонстрация вызывает аварийную остановку ядра хоста. Гостевая машина с правами root способна вывести из строя физический сервер, а вместе с ним и остальные виртуальные машины. Автор находки Хёнву Ким также сообщил о закрытом варианте атаки, который запускает код с правами root на хосте. Сам код не опубликован, поэтому подтверждённая публичная демонстрация показывает только отказ в обслуживании.
Для атаки нужны права root внутри гостевой системы и включённая вложенная виртуализация. Взаимодействие с QEMU или другим пользовательским компонентом не требуется, поскольку ошибка полностью находится в ядре KVM. Наибольшему риску подвергаются серверы, где недоверенным клиентам разрешают запускать собственные виртуальные машины с вложенной виртуализацией.
Исправление вошло в основную ветку Linux 19 июня этого года. Разработчики добавили проверку роли страницы, чтобы KVM повторно использовал её только при совпадении адреса и назначения. Исправленные стабильные ядра 7.1.3, 6.18.38, 6.12.95, 6.6.144, 6.1.177, 5.15.211 и 5.10.260 вышли 4 июля.
Администраторам x86-хостов с KVM рекомендуют проверить журнал изменений пакета и убедиться, что дистрибутив включил исправление из коммита 81ccda30b4e8. Если обновить ядро пока нельзя, следует отключить вложенную виртуализацию параметром kvm_intel.nested=0 или kvm_amd.nested=0. Системы ARM64 уязвимость Januscape не затрагивает.