
Spanish guide and Bash script to check whether a Linux host is exposed to CVE-2026-99999 (PwnEscape) VM-to-host kernel escape, with patch verification and mitigation steps.
Guía práctica en español para saber si un servidor Linux está expuesto a CVE-2026-99999 ("PwnEscape") y cómo mitigarla. Incluye un script que revisa el equipo y da un veredicto con la razón.
| Campo | Valor |
|---|---|
| CVE | CVE-2026-99999 |
| Nombre | PwnEscape |
| Componente | Kernel Linux, procesamiento de checksums IPv4 (skb_checksum_help()) |
| Severidad | CVSS 3.1 9.3 (Crítica) — AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| Impacto | Una VM maliciosa puede leer memoria del host, tumbarlo y, en laboratorio, tomar control con root |
| Vector | Local: el atacante necesita ejecutar código dentro de una VM |
| Descubierto por | Paulos Yibelo (pwn.ai), durante el Sandbox Challenge de Vercel |
| Publicado | 15 de octubre de 2026 |
| Fix upstream | Commit 6785011f8b16 (Michael S. Tsirkin, Red Hat) |
| Explotación activa | No reportada · No está en el catálogo KEV de CISA |
Piensa en un edificio de departamentos:
┌──────────────────────────────────────┐
│ HOST (servidor físico + hipervisor) │ ← aquí está la falla
│ Linux con KVM / QEMU / Firecracker │
│ │
│ ┌─────────┐ ┌─────────┐ ┌────────┐ │
│ │ VM A │ │ VM B │ │ VM C │ │
│ │ │ │(atacante)│ │ │ │
│ └─────────┘ └─────────┘ └────────┘ │
└──────────────────────────────────────┘
La falla está en el host, no en las VMs. Por eso:
Linux permite que los paquetes de red lleven metadatos que indican dónde empieza un checksum y dónde se escribe su resultado. Es una optimización legítima para el checksum offloading.
El problema es el orden de las operaciones:
El fix valida que el inicio del checksum no pueda apuntar dentro de un header IPv4 ya procesado. Se aplica en cinco rutas de red afectadas.
El código vulnerable existe desde el kernel 2.6.27 (2008).
| Rama | Primera versión corregida |
|---|---|
| 5.10 | 5.10.272 |
| 5.15 | 5.15.223 |
| 6.1 | 6.1.190 |
| 6.6 | 6.6.159 |
| 6.12 | 6.12.113 |
| 6.18 | 6.18.57 |
| 7.2 | 7.2.11 |
| Mainline | 7.3-rc7 |
⚠️ Ubuntu, RHEL/Rocky/Alma, SUSE y Proxmox usan numeración propia (por ejemplo
5.15.0-125-generico5.14.0-503.el9). En esas distros la versión no dice nada por sí sola: hay que revisar el aviso de seguridad de la distro o el changelog del kernel.Ramas fuera de esta lista (6.8, 6.19, 7.0, 7.1…) ya no tienen soporte upstream y no recibieron el fix.
curl -O https://raw.githubusercontent.com/alvaroguzmancode/CVE-2026-99999/refs/heads/main/check-pwnescape.sh
sudo bash check-pwnescape.sh
El script revisa tres cosas:
Ejemplo de salida en un VPS:
== VEREDICTO ==
Rol: Este equipo ES una máquina virtual; no hospeda otras VMs.
Kernel: VULNERABLE — la versión del kernel es anterior a la corregida.
NO EXPUESTO DIRECTAMENTE.
La falla solo se explota desde una VM hacia el servidor que la hospeda.
Este equipo no hospeda VMs, así que no hay a quién atacar desde aquí.
Ojo: el que SÍ debe estar parchado es el host que aloja esta VM
(tu proveedor de nube o tu servidor Proxmox/KVM). Confírmalo con ellos.
| Código de salida | Significado |
|---|---|
0 | No vulnerable o no expuesto |
1 | Vulnerable |
2 | No se pudo confirmar, hay que revisar a mano |
1. ¿Soy VM o soy host?
systemd-detect-virt # "kvm", "xen", etc. = eres una VM; "none" = físico
pgrep -a qemu-ga # si aparece, eres una VM (QEMU Guest Agent)
lsmod | grep -E 'kvm|vhost' # módulos de virtualización cargados
cat /sys/module/kvm_intel/refcnt 2>/dev/null || cat /sys/module/kvm_amd/refcnt # >0 = hay VMs usando KVM
virsh list --all 2>/dev/null # VMs de libvirt
pgrep -a '^(qemu-system|firecracker)' # VMs / microVMs corriendo
2. ¿Mi kernel tiene el parche?
uname -r
# Debian / Ubuntu
zgrep -i "CVE-2026-99999" /usr/share/doc/linux-image-$(uname -r)/changelog.Debian.gz
# RHEL / Rocky / Alma / Fedora
rpm -q --changelog kernel-core-$(uname -r) | grep -i "CVE-2026-99999"
3. ¿Falta reiniciar?
[ -f /var/run/reboot-required ] && echo "Falta reiniciar" # Debian / Ubuntu
needs-restarting -r # RHEL
# Debian / Ubuntu / Proxmox
sudo apt update && sudo apt full-upgrade
# RHEL / Rocky / Alma / Fedora
sudo dnf update kernel
Los mantenedores del kernel recomiendan instalar la versión estable completa de tu distro, no aplicar el commit suelto.
sudo reboot
# después:
uname -r
sudo bash check-pwnescape.sh
Instalar el paquete no basta: el kernel nuevo solo entra en uso después de reiniciar. En clústers, verifica cada hipervisor.
Actualizar el kernel dentro de las VMs no elimina el riesgo, porque la falla está en el host. Si eres el cliente de un VPS, confirma con tu proveedor que ya parchó sus hosts.
Si el equipo tiene KVM cargado pero no hospeda VMs, puedes reducir superficie:
sudo modprobe -r kvm_intel kvm_amd kvm 2>/dev/null
echo -e "blacklist kvm_intel\nblacklist kvm_amd\nblacklist kvm" | sudo tee /etc/modprobe.d/no-kvm.conf
Estas medidas no corrigen la falla, pero limitan lo que lograría un atacante que escape de una VM: