Problema
En muchos homelabs y entornos de pruebas se combina KVM con Proxmox y se habilita nested virtualization para ejecutar máquinas virtuales dentro de otras máquinas virtuales. Esta configuración abre la puerta a vulnerabilidades específicas del hipervisor. La reciente CVE‑2026‑53359, conocida como “Januscape”, afecta al código de shadow paging de KVM cuando la anidación está activada. Un exploit público puede forzar un panic del kernel y derribar el host sin necesidad de privilegios dentro de la VM invitada. El patrón que se repite en varios entornos es: kernel vulnerable + nested = posible caída del host. Cuando el parche aún no está disponible o la actualización es imposible por restricciones de versión, la única defensa práctica es desactivar la anidación para las VMs que no son de confianza.
Causa
El fallo se origina en la gestión de páginas de memoria compartida entre el hipervisor y la VM anidada. KVM mantiene una tabla de “shadow pages” que traduce direcciones de la VM huésped a direcciones físicas del host. Con nested virtualization esa tabla se vuelve una capa adicional y el código que la actualiza no valida correctamente ciertos estados de la página. Un atacante que controle una VM anidada puede provocar una condición de carrera que lleva a un acceso fuera de límites, desencadenando un kernel oops y, en última instancia, un reinicio del host.
Variaciones comunes que exacerban el problema:
- Versiones de kernel sin backport – Distribuciones que utilizan kernels LTS antiguos pueden no recibir el parche rápidamente.
- Módulos de terceros – Algunas extensiones de QEMU o módulos de gestión de hardware pueden interactuar con la misma estructura de páginas y amplificar la vulnerabilidad.
- Configuraciones de CPU – Habilitar extensiones como EPT (Intel) o NPT (AMD) sin los parches adecuados aumenta la superficie de ataque.
Solución
La estrategia se divide en dos líneas paralelas: parchear el kernel y reducir la superficie de ataque desactivando la anidación donde no sea estrictamente necesaria.
1. Aplicar el parche del kernel
- Identificar la versión mínima parcheada – Los mantenedores de la distribución publican una versión que incluye la corrección de CVE‑2026‑53359. Busca en los changelogs oficiales o en los boletines de seguridad la referencia a “Januscape”.
- Actualizar el paquete del kernel – Usa el gestor de paquetes de tu distribución (apt, dnf, pacman, etc.). En Proxmox, la actualización del paquete
pve-kerneltambién actualiza los módulos de KVM. - Reiniciar – El parche solo se activa después de un arranque con el nuevo kernel.
2. Desactivar nested virtualization para VMs no confiables
Si la actualización no es factible de inmediato, desactivar la anidación es una mitigación eficaz.
En KVM (a nivel de host)
bash
# Verificar estado actual
cat /sys/module/kvm_intel/parameters/nested # “Y” = habilitado, “N” = deshabilitado
# Desactivar globalmente (requiere reinicio)
modprobe -r kvm_intel
modprobe kvm_intel nested=0
# Persistir en /etc/modprobe.d/kvm.conf
echo "options kvm_intel nested=0" > /etc/modprobe.d/kvm.conf
En Proxmox (por VM)
- Accede a la GUI o usa
qm set. - Desactiva la opción Nested virtualization para la VM:
qm set <VMID> -cpu host,flags=-+nesting - Guarda y reinicia la VM.
3. Alternativas cuando el parche no está disponible
- Compilar un kernel custom con la corrección backport. Descarga el parche desde el repositorio de Linux, aplícalo y recompila.
- Usar QEMU con
-machineque desactiva la emulación de shadow paging:Esta opción es útil para pruebas rápidas, pero no cubre todos los caminos de KVM.qemu-system-x86_64 -machine type=pc,accel=kvm,nested=off …
Cuándo aplicar esta solución
Se recomienda aplicar la solución completa (parche + desactivación) cuando:
- El host ejecuta KVM/Proxmox con la opción nested activada.
- Se ejecutan VMs de usuarios externos, CI/CD, o laboratorios donde el código no está bajo control total.
- Se observa cualquier kernel panic inesperado, especialmente después de ejecutar código no privilegiado dentro de una VM anidada.
- El entorno está expuesto a internet o a redes no confiables.
No es necesario si:
- La anidación está permanentemente desactivada.
- El kernel ya está actualizado a una versión que incluye la corrección.
- Solo se usan VMs de confianza y el host está aislado físicamente.
Código
bash
# 1. Comprobar versión del kernel
uname -r
# 2. Verificar flag de nested (Intel)
cat /sys/module/kvm_intel/parameters/nested
# 3. Desactivar nested globalmente (persistente)
modprobe -r kvm_intel
modprobe kvm_intel nested=0
echo "options kvm_intel nested=0" > /etc/modprobe.d/kvm.conf
# 4. Desactivar nested por VM en Proxmox
qm set 101 -cpu host,flags=-+nesting
Verificación
-
Confirmar versión parcheada
grep Januscape /usr/share/doc/linux-*/changelog.Debian.gzo revisa el changelog de la distribución.
-
Comprobar que el flag está desactivado
cat /sys/module/kvm_intel/parameters/nested # debe devolver “N” -
Ejecutar un test de carga ligera dentro de una VM anidada (por ejemplo,
stress --vm 2 --vm-bytes 256M) y observar que el host no se reinicia. -
Revisar dmesg para asegurarse de que no aparecen mensajes de oops relacionados con shadow paging.
Notas adicionales
- Desactivar nested reduce la capacidad de ejecutar contenedores Docker dentro de VMs o de probar hipervisores de nivel 2, así que evalúa el impacto en tus flujos de trabajo antes de aplicar la medida global.
- En entornos de alta disponibilidad, programa la actualización del kernel durante una ventana de mantenimiento y verifica que los nodos secundarios ya estén parcheados antes de reiniciar el nodo primario.
- Mantén una copia de seguridad de la configuración de Proxmox (
/etc/pve) antes de modificarqm set, para poder revertir rápidamente en caso de problemas. - Si utilizas CPUs AMD, el parámetro es
kvm_amden lugar dekvm_intel; el proceso es idéntico.
Con estos pasos, cualquier homelab o pequeño clúster que dependa de KVM/Proxmox y nested virtualization queda protegido contra la vulnerabilidad Januscape mientras se espera la disponibilidad de parches oficiales.