Zapscape: una vulnerabilidad en KVM puede permitir escapar de máquinas virtuales anidadas
Análisis de Zapscape (CVE-2026-64561), fallo en KVM que permite escapar de máquinas virtuales anidadas. Afecta a Linux 5.9+ y se corrige en versiones específicas.
Imagen ilustrativa generada con IA
El fallo afecta a KVM/x86 Shadow MMU
La vulnerabilidad CVE-2026-64561, denominada Zapscape, afecta al componente KVM/x86 Shadow MMU del kernel de Linux. El problema reside en la gestión de las shadow page tables utilizadas para traducir la memoria en guest anidados.
Un atacante con privilegios de kernel en una máquina virtual L1, normalmente equivalentes a root en el guest, puede explotar el fallo para salir del aislamiento de KVM y ejecutar código en el host Linux con privilegios de kernel o root.
La divulgación pública tuvo lugar el 6 de agosto de 2026, a cargo del investigador Hyunwoo Kim, junto con un proof of concept. No existen indicios de explotación activa.
Un control tardío puede provocar un use-after-free
El bug se origina en el orden en que KVM comprueba el estado stale de la root durante la gestión de un page fault generado por el guest.
En determinadas condiciones, KVM puede reclamar páginas MMU e invalidar la root que todavía utiliza la ruta de gestión del error. El código no vuelve a comprobar ese estado y puede crear páginas shadow hijas bajo una root que ya no es válida.
Las páginas heredan el estado inválido del parent y permanecen entre las páginas MMU activas. Las operaciones posteriores pueden duplicar un enlace en dos listas, liberar una página dejando referencias obsoletas y provocar una escritura después de la liberación: una condición use-after-free, clasificada por Red Hat como CWE-825 — expired pointer dereference.
El PoC demuestra la primitiva creando en el host un archivo propiedad de root llamado /Zapscape. Sin embargo, no es una herramienta directamente utilizable contra entornos cloud: requiere un módulo del kernel en el guest L1 y adaptaciones en la configuración del kernel del host y del backend de memoria.
Sistemas expuestos y versiones corregidas
El riesgo afecta sobre todo a los hosts que exponen nested virtualization a guests no confiables. La NVD señala como afectadas las versiones de Linux desde la 5.9 en adelante, hasta las siguientes versiones corregidas:
- 6.6.148
- 6.12.101
- 6.18.42
- 7.1.6
- 7.2-rc5
El problema está presente en KVM/x86, no en QEMU. QEMU puede utilizarse para las pruebas, pero la vulnerabilidad reside en KVM, integrado en el kernel, y puede activarse independientemente de la emulación de QEMU.
En sistemas Intel deben exponerse al guest L1 ambas longitudes de EPT page-walk, 4 y 5. En sistemas AMD no se requiere una condición equivalente. El PoC ataca AMD nested SVM/NPT en Linux 7.1.3; para pruebas controladas, Kim recomienda QEMU TCG.
En los paquetes Debian, al 6 de agosto de 2026 eran vulnerables los kernels de bullseye, bookworm y trixie, incluidos los repositorios de seguridad, así como forky. sid ya estaba corregido en la versión 7.1.6-1. Red Hat puede distribuir correcciones backport sin modificar la cadena de versión upstream, por lo que el número de versión por sí solo no es suficiente.
Parche y medidas de contención
La corrección upstream corresponde al commit 2abd5287f083. El cambio desplaza la comprobación de la root stale después de make_mmu_pages_available(). Si el reclaim invalida la root actual, KVM reinicia la gestión del fault con RET_PF_RETRY, en lugar de continuar utilizando la estructura no válida.
Los administradores deberían:
- actualizar los hosts KVM a una versión corregida;
- instalar el paquete del proveedor que incluya el backport;
- comprobar Linux, Red Hat y Debian mediante sus respectivos trackers;
- limitar o deshabilitar nested virtualization para guests no confiables, cuando sea posible.
La gravedad preliminar indicada por Red Hat es CVSS 7.0. El impacto potencial es elevado en entornos cloud y multi-tenant, donde un guest L1 comprometido podría alcanzar el kernel del host.
El informe se envió a [email protected] el 11 de julio de 2026; el parche se publicó e integró el 21 de julio de 2026. El problema llegó a la lista linux-distros el 1 de agosto de 2026, recibió el identificador CVE-2026-64561 el 4 de agosto de 2026 y se divulgó el 6 de agosto de 2026.
Fuentes
Este artículo es una reelaboración original basada en las siguientes fuentes.
CVE tratadas en este artículo
- CVE-2026-46316Crítica9.3In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: vgic-its: Drop the translation cache reference only for the erased entry vgic_its_invalidate_cache() walks the per-ITS translation cache with xa_for_each() and drops the cache's reference on each entry with vgic_put_ir
- CVE-2026-53359Alta8.8In the Linux kernel, the following vulnerability has been resolved: KVM: x86: Fix shadow paging use-after-free due to unexpected role Commit 0cb2af2ea66ad ("KVM: x86: Fix shadow paging use-after-free due to unexpected GFN") fixed a shadow paging mismatch between stored and computed GFNs; the bug c
- CVE-2026-64561Alta8.8In the Linux kernel, the following vulnerability has been resolved: KVM: x86: Check for invalid/obsolete root *after* making MMU pages available Check for a "stale" page fault, i.e. for an invalid and/or obsolete root, after making MMU pages available for the shadow MMU. If reclaiming shadow page




