Vulnerabilidad en KVM permite escapar de VMs a hosts en sistemas x86

Publicado el

Introducción

Una vulnerabilidad crítica en el hipervisor KVM de Linux, conocida como Januscape y registrada como CVE-2026-53359, ha sido identificada y permite a las máquinas virtuales (VMs) invitadas escapar al sistema host. Este fallo, que ha permanecido sin ser detectado durante aproximadamente 16 años, afecta a los sistemas basados en arquitecturas Intel y AMD x86.

Descripción del fallo

La vulnerabilidad se origina en un error de uso después de liberar que puede ser activado desde una VM invitada, lo que corrompe el estado de la tabla de páginas del kernel del host. Este defecto ha sido descubierto y reportado por el investigador de seguridad Hyunwoo Kim, quien lo clasifica como el primer exploit de invitado a host que puede ser ejecutado en ambas arquitecturas, según el conocimiento público. Según Kim, el exploit fue presentado como un zero-day en el programa de recompensas kvmCTF de Google, que ofrece hasta 250.000 dólares por escapes completos de invitado a host.

Mecanismo de la explotación

Para ejecutar una VM, KVM mantiene un conjunto privado de tablas de páginas que reflejan el diseño de memoria de la VM invitada. Cuando se necesita una de estas páginas de seguimiento, KVM busca reutilizar una existente. El problema radica en que solo se comparan las direcciones de memoria, ignorando el tipo de página que se está utilizando. Esto puede llevar a que KVM reutilice una página incorrecta, desordenando los registros internos y provocando un panic en el host.

La demostración pública del exploit muestra que una VM invitada puede hacer que todo el sistema host se bloquee, afectando a todas las demás VMs en esa máquina. En el peor de los casos, si una página de seguimiento liberada se reasigna antes de que se complete la limpieza por parte del kernel, un atacante puede escribir en una dirección de memoria que ya no le pertenece. Aunque el atacante solo controla la ubicación de la escritura, este acceso limitado puede ser explotado para ejecutar código en el host.

Afectados

El código vulnerable ha estado presente desde el commit 2032a93d66fa en agosto de 2010, en la era del kernel 2.6.36, y fue corregido el 19 de junio de 2026. Para que se produzca el ataque, el atacante necesita tener privilegios de root dentro de la VM, una condición común en instancias de nube alquiladas, y que la virtualización anidada esté habilitada por el host. Esto significa que cualquier entorno x86 que aloje invitados no confiables con virtualización anidada activada es susceptible.

Kim ha señalado que el exploit completo permite ejecutar código como root en el host, lo que expondría a otras VMs en la misma máquina. En distribuciones como RHEL, donde /dev/kvm tiene permisos de escritura global, la misma vulnerabilidad podría también ser utilizada para escalar privilegios a root de manera local, aunque el camino de invitado a host es el de mayor impacto.

Acciones recomendadas

La solución para esta vulnerabilidad consiste en una simple adición de línea en kvm_mmu_get_child_sp(). Ahora, la condición de reutilización verifica tanto el número de marco como el rol, asegurando que una página de seguimiento solo se reutilice cuando ambos coincidan. El mantenedor de KVM, Paolo Bonzini, ha escrito el parche. Las versiones estables corregidas fueron lanzadas el 4 de julio de 2026.

Los administradores de hosts KVM x86 que aceptan invitados multi-inquilinos con virtualización anidada deben verificar que su kernel incluya el commit 81ccda30b4e8. Si no es posible aplicar el parche de inmediato, se recomienda desactivar la virtualización anidada (mediante kvm_intel.nested=0 o kvm_amd.nested=0) para mitigar el riesgo hasta que se aplique la solución.

Fuente

Ver noticia original