
Эксплойт для побега из гостевой системы на хост в KVM/x86 (CVE-2026-53359), использующий use-after-free в эмуляции теневого MMU. Включает PoC для вызова паники ядра хоста и полного побега на архитектурах Intel/AMD.

В этом документе описывается уязвимость Januscape (CVE-2026-53359), обнаруженная и сообщённая Hyunwoo Kim (@v4bel). Это уязвимость побега из KVM, позволяющая гостю вырваться на хост в среде KVM/x86. Насколько известно общественности, это первое исследование эксплойта "гость-хост", которое можно запустить как на Intel, так и на AMD, а не ограничиваться одной архитектурой.
Januscape — это уязвимость использования после освобождения (use-after-free) в эмуляции shadow MMU в KVM/x86. Она позволяет вызвать ошибку только действиями со стороны гостя, чтобы повредить теневую страницу ядра хоста, и может угрожать изоляции гостя и хоста на хостах KVM/x86, которые принимают недоверенных гостей и предоставляют вложенную виртуализацию, особенно в мультитенантных общедоступных облаках x86 (GCP, AWS и т.д.).
Фактически, Januscape был успешно использован как 0-day эксплойт в Google kvmCTF.
За подробной технической информацией обращайтесь сюда.
[!NOTE] После сообщения об этой уязвимости в [email protected], согласованный эмбарго истёк, поэтому эксплойт опубликован в oss-security, а этот документ Januscape опубликован. За временной шкалой раскрытия обращайтесь к техническому документу.
Запуск PoC внутри гостевой ВМ может вызвать панику ядра хоста. Полный эксплойт побега, работающий в контролируемой среде, также существует, но в настоящее время не публикуется и запланирован к публикации в очень отдалённом будущем.
В дистрибутивах, таких как RHEL, /dev/kvm доступен для записи всем (0666), поэтому непривилегированный пользователь также может превратить эту уязвимость в надёжное LPE для получения root. Тем не менее, это было бы как платить золотом за мусор, так что я не буду утруждать себя описанием этого.
# sudo apt-get install -y build-essential linux-headers-$(uname -r)
# make
[Intel]
# sudo rmmod kvm_intel; sudo insmod poc.ko
[AMD]
# sudo rmmod kvm_amd; sudo insmod poc.ko amd=1
[*] poc step 4/4: race live -- host DoS triggering
...
kernel BUG at arch/x86/kvm/mmu/mmu.c (pte_list_remove)
Comm: qemu-kvm
Этот PoC предназначен для предоставления точной информации. Не используйте его на системах, которые вам не разрешено тестировать.
Januscape (CVE-2026-53359) охватывает диапазон от 2032a93d66fa (2010-08-01) до 81ccda30b4e8 (2026-06-16).
Другими словами, эта уязвимость оставалась незамеченной около «16 лет».
Всего имеется два последствия:
/dev/kvm доступен для записи всем (0666), поэтому непривилегированный пользователь также может использовать эту уязвимость как надёжное LPE для получения root.Если вы управляете хостом KVM x86, который принимает мультитенантных гостей и поддерживает вложенную виртуализацию, или используете экземпляр поверх такого хоста, проверьте, что патч 81ccda30b4e8 применён к ядру хоста.
Нет. Уязвимость срабатывает только на архитектурах Intel и AMD. Тем не менее, если вы ещё не применили патч для ранее опубликованного ITScape (CVE-2026-46316), ваши хосты arm64 также уязвимы, поэтому примените патч незамедлительно.
Нет. В отличие от часто публикуемых уязвимостей побега из QEMU, Januscape возникает в KVM внутри ядра, поэтому он срабатывает независимо от эмуляции QEMU. Из-за этого он также может угрожать крупным общедоступным облакам, которые реализуют и используют собственный стек виртуализации.
Да. Вставка модуля требует привилегий ядра гостя. Когда вам выделяют экземпляр в общедоступном облаке, у вас обычно есть root в вашей собственной ВМ, так что это условие выполняется. В сценарии без root в гостевой системе его необходимо комбинировать с LPE, таким как Dirty Frag.