MagnoSec
Servidores en data center representando el fallo en KVM que rompe el aislamiento en virtualización anidada y permite ejecutar código como root en Linux

MagnoSec Blog

Fallo en KVM Rompe el Aislamiento de Virtualización Anidada y Permite a un Atacante Ejecutar Código como Root en el Host Linux

Por Equipo MagnoSec8 min de lectura

KVM bajo ataque: cuando la virtualización anidada —diseñada para aislar— se convierte en el vector de escape

KVM (Kernel-based Virtual Machine) es el hipervisor nativo de Linux que impulsa la virtualización en la mayoría de los entornos cloud, desde los servidores de AWS y Google Cloud hasta los clústeres OpenStack on-premise. La virtualización anidada es una característica que permite ejecutar máquinas virtuales dentro de otras máquinas virtuales —útil para entornos de desarrollo, CI/CD, laboratorios de seguridad y sandboxing—. Un fallo en la implementación de virtualización anidada de KVM permite a un atacante que controla una VM anidada (la VM de nivel 2, ejecutándose dentro de otra VM) escapar al hipervisor KVM del host y ejecutar código con privilegios de root. El escape rompe dos capas de aislamiento: sale de la VM anidada a la VM huésped (que ya es un entorno con más privilegios), y de ahí al hipervisor del host Linux. Una vez en el host, el atacante tiene acceso a todas las VMs que se ejecutan en ese servidor físico, a los datos de todas ellas, y al propio sistema operativo del host. Es el peor escenario posible en un entorno de virtualización. La tecnología diseñada para proporcionar aislamiento adicional —ejecutar VMs dentro de VMs— se convierte en el vector que destruye todo el aislamiento del sistema. La ironía es completa: añadir más capas de virtualización para aumentar la seguridad ha creado una nueva superficie de ataque que compromete todas las capas simultáneamente.

Virtualización anidada: la tecnología que permite ejecutar VMs dentro de VMs y su superficie de ataque

La virtualización anidada funciona haciendo que el hipervisor KVM exponga capacidades de virtualización hardware (Intel VT-x, AMD-V) a la VM huésped, para que esta pueda a su vez ejecutar sus propias VMs. Es una característica avanzada que no está habilitada por defecto en la mayoría de las configuraciones, pero que se activa en entornos que necesitan ejecutar contenedores con aislamiento reforzado, laboratorios de prueba que simulan entornos de producción complejos, plataformas de CI/CD que ejecutan tests en VMs efímeras, y servicios cloud que ofrecen 'bare metal con virtualización' a sus clientes. La vulnerabilidad está en cómo KVM gestiona la traducción de direcciones de memoria entre los tres niveles: la VM anidada (L2) → la VM huésped (L1) → el hipervisor host (L0). En ciertas condiciones de carrera durante la traducción de Extended Page Tables (EPT), el hipervisor no valida correctamente que la dirección de memoria solicitada por la VM anidada pertenece realmente a su espacio de memoria asignado. Un atacante puede manipular las estructuras de page tables de la VM anidada para que el hipervisor lea o escriba en regiones de memoria que pertenecen al host. A partir de ahí, el atacante puede sobrescribir código del hipervisor, modificar configuraciones de seguridad, o inyectar una shell reversa que se ejecute en el contexto del host Linux con privilegios de root. Lo que empezó como una VM de prueba aislada termina con el atacante teniendo acceso root al servidor físico que aloja cientos de VMs de producción.

Así se rompe el aislamiento: del guest anidado al host Linux con privilegios de root

La explotación requiere un atacante que ya tenga acceso a una VM con virtualización anidada habilitada —ya sea porque ha comprometido una VM de un cliente en un entorno cloud, o porque tiene acceso legítimo a un entorno de desarrollo que utiliza virtualización anidada—. El ataque se ejecuta desde dentro de la VM anidada, donde el atacante tiene privilegios de root. Crea un programa que manipula deliberadamente las estructuras de memoria virtual de la VM anidada para generar la condición de carrera en KVM. La condición de carrera es difícil de explotar de forma fiable —requiere múltiples intentos—, pero el atacante está dentro de una VM de la que es administrador, puede reiniciarla cuantas veces quiera, y cada intento fallido no deja más rastro que un crash de la VM anidada (que es normal en entornos de desarrollo). En algún momento, la condición de carrera se alinea, el hipervisor accede a memoria del host controlada por el atacante, y el escape se completa. El atacante ahora tiene una shell en el host Linux con privilegios de root. Desde el host, puede listar todas las VMs en ejecución, acceder a sus discos virtuales, capturar su tráfico de red, modificar sus configuraciones, o crear nuevas VMs maliciosas. Es un ataque de paciencia y precisión: difícil de ejecutar, pero posible y automatizable. Y para un atacante motivado con acceso a un entorno de virtualización anidada, la recompensa —acceso root a un servidor físico lleno de VMs— justifica sobradamente el esfuerzo.

El impacto en proveedores cloud, entornos de CI/CD y laboratorios que usan virtualización anidada

El impacto es especialmente grave para proveedores cloud y entornos multi-tenant. Si un proveedor cloud ofrece a sus clientes la capacidad de ejecutar VMs con virtualización anidada (como hacen AWS con las instancias .metal, Google Cloud con las instancias N2D, o Azure con las series Ev5), un cliente malicioso podría alquilar una de estas instancias, habilitar la virtualización anidada, desplegar el exploit, y escapar al host físico subyacente. Desde el host, podría acceder a las VMs de otros clientes que comparten el mismo hardware —el escenario de pesadilla de la seguridad cloud—. Los proveedores cloud mitigan este riesgo mediante la segregación estricta de clientes en hosts físicos separados, pero la posibilidad de un escape del hipervisor siempre está presente y es el motivo por el que los proveedores invierten sumas masivas en la seguridad de sus hipervisores. Para entornos on-premise, el riesgo es diferente pero igualmente grave: un desarrollador con acceso a un entorno de pruebas con virtualización anidada podría escapar a los servidores de producción si comparten el mismo host físico (algo que una segmentación adecuada debería prevenir, pero que en la práctica ocurre con más frecuencia de la deseable). La virtualización aísla cargas de trabajo. La virtualización anidada crea un puente entre ellas. Y ese puente necesita ser tan seguro como todas las capas que conecta.

Cómo MagnoSec audita entornos de virtualización Linux, KVM y cloud

En MagnoSec, las auditorías de entornos de virtualización Linux y KVM evalúan específicamente la configuración de seguridad del hipervisor. Verificamos las versiones del kernel Linux y de KVM/QEMU y comprobamos que todos los parches de seguridad están aplicados. Revisamos si la virtualización anidada está habilitada y si es necesaria —si no lo es, debe deshabilitarse; es una superficie de ataque adicional sin beneficio de seguridad—. Comprobamos la configuración de aislamiento entre VMs: ¿están aplicadas todas las mitigaciones de CPU (Intel VT-x, AMD SEV)? ¿Las VMs tienen acceso restringido a los recursos del host? Evaluamos la segregación de cargas de trabajo en hosts físicos: ¿las VMs de desarrollo comparten host con VMs de producción? ¿Hay una política de 'no mezclar' entornos con diferentes niveles de seguridad en el mismo hardware? Revisamos la monitorización del hipervisor: ¿hay alertas para crashes de VMs, reinicios anómalos, o accesos a regiones de memoria del host desde dentro de VMs? Simulamos intentos de escape de VMs en entornos controlados para verificar que las mitigaciones son efectivas. Un hipervisor es software. Y todo software tiene bugs. La cuestión no es si existen vulnerabilidades en KVM —existen, como en cualquier software complejo—, sino si tu entorno está configurado para detectar y contener un intento de explotación antes de que un escape tenga éxito.

Mitigación: actualización del kernel Linux, restricción de virtualización anidada y hardening de KVM

La mitigación de este fallo de KVM es multicapa. Capa 1: actualizar el kernel Linux a la versión que corrige la vulnerabilidad en la gestión de EPT para virtualización anidada. Las distribuciones principales (Red Hat, Ubuntu, Debian, SUSE) han publicado kernels parcheados. Aplicar la actualización es prioritario para cualquier host Linux que utilice KVM. Capa 2: deshabilitar la virtualización anidada si no es estrictamente necesaria. El módulo kvm_intel (Intel) o kvm_amd (AMD) tiene el parámetro 'nested' que controla esta funcionalidad. Configurarlo a 'nested=0' deshabilita completamente la virtualización anidada y elimina esta superficie de ataque. Capa 3: para entornos que necesitan virtualización anidada, implementar hardening adicional del hipervisor: utilizar SELinux o AppArmor en el host Linux para restringir lo que KVM puede hacer, limitar los recursos de CPU y memoria que las VMs anidadas pueden consumir, y aislar los procesos QEMU con seccomp y namespaces. Capa 4: implementar monitorización específica para KVM: registrar y alertar sobre crashes de VMs, patrones de reinicio anómalos, intentos de acceso a regiones de memoria del host, y modificaciones de las configuraciones de virtualización. Un atacante que está intentando explotar una condición de carrera genera necesariamente intentos fallidos. Esos intentos fallidos son detectables. Hay que estar escuchando. Capa 5: aplicar el principio de que ningún host físico debe mezclar cargas de trabajo con diferentes niveles de seguridad. Las VMs de desarrollo, testing y CI/CD nunca deben compartir hardware con VMs de producción. Si un desarrollador escapa de su VM de pruebas, lo peor que debería encontrarse es un host lleno de otras VMs de pruebas. La segregación física es la última barrera. Si todas las demás fallan, que el radio de impacto sea el mínimo posible.

Temas tratados

KVM · virtualización anidada · Linux · root · VM escape · kernel · cloud security · hipervisor

¿Quieres saber si tu empresa tiene estas vulnerabilidades?

Auditamos la seguridad de empresas de toda España con alcance cerrado por escrito, informe técnico y ejecutivo, y retest de las correcciones. Presupuesto en 24 horas y primera consultoría sin coste. Si no sabes por dónde empezar, haz el test de seguridad de 15 preguntas.

¿Quieres más información?