
Comprueba si un sistema Linux se ve afectado por CVE-2026-99999 (PwnEscape) e imprime o aplica la corrección del kernel específica de la distribución
English | 한국어
Un único script de shell que comprueba si un sistema Linux se ve afectado por CVE-2026-99999 ("PwnEscape"). Explica el veredicto y, a continuación, imprime los pasos de parcheo para esa distribución o aplica el parche y reinicia el sistema por ti.
Los datos del proveedor incluidos en el script están actualizados a 2026-10-20. Los avisos cambian rápidamente, así que confirma siempre con el rastreador de seguridad de tu distribución.
| Componente | Pila IPv4 del kernel de Linux (skb_checksum_help → ip_do_fragment) |
| Causa | checksum_start / csum_offset proporcionados a través de la cabecera virtio-net o de los packet sockets no se validan contra la cabecera IPv4. Completar la suma de comprobación puede entonces sobrescribir la longitud de cabecera ya validada (CWE-20). |
| Impacto | VM invitada → host: divulgación de memoria del host, caída del host, ejecución de código como root en el host |
| Gravedad | CVSS 3.1 9.3 Crítica (kernel CNA) · 8.8 Importante (Red Hat) |
| Afectados | Todos los kernels desde 2.6.27 |
| Corrección | Commit upstream 6785011f8b16 "ipv4: validate checksum_start before completing checksum" |
| Workaround | Ninguno publicado. La única solución es arrancar un kernel corregido. |
El riesgo principal es para los hosts de virtualización que ejecutan invitados no confiables (KVM/QEMU, Firecracker, Proxmox, hosts de nube y VPS). Aplicar el parche al kernel de un invitado no protege al host.
| Archivo | Descripción |
|---|---|
scanner-cve-2026-99999.sh | El escáner, salida en inglés |
scanner-cve-2026-99999_kr.sh | El mismo escáner, salida en coreano |
Ambos archivos contienen la misma lógica; solo difieren los mensajes y los comentarios.
| Archivo | SHA-256 | MD5 |
|---|---|---|
scanner-cve-2026-99999.sh | 65c3c226487d5bd80d436c06cc5256304cfa17011be82d8404c54355998801a6 | 8ab38c22ed737986775f6f64f5a800aa |
scanner-cve-2026-99999_kr.sh | 05d4af248ab2cab26566c81067ed35dd0a8c966f7fa8459867597c56ac43a805 | 6223f8db3c1a8dec361fe301a7193ff4 |
Verifica el archivo antes de ejecutarlo:
echo "65c3c226487d5bd80d436c06cc5256304cfa17011be82d8404c54355998801a6 scanner-cve-2026-99999.sh" | sha256sum -c
echo "8ab38c22ed737986775f6f64f5a800aa scanner-cve-2026-99999.sh" | md5sum -c
Estos valores corresponden a los archivos de la versión v1.0.0. Los archivos de commits posteriores pueden ser diferentes.
Desde la versión publicada (recomendado):
curl -LO https://github.com/sqzer-x/cve-2026-99999-scanner/releases/download/v1.0.0/scanner-cve-2026-99999.sh
echo "65c3c226487d5bd80d436c06cc5256304cfa17011be82d8404c54355998801a6 scanner-cve-2026-99999.sh" | sha256sum -c
sudo bash scanner-cve-2026-99999.sh
O desde el repositorio:
git clone https://github.com/sqzer-x/cve-2026-99999-scanner.git
cd cve-2026-99999-scanner
sudo bash scanner-cve-2026-99999.sh
Ejecútalo en el host, no dentro de un contenedor. La comprobación funciona como usuario normal; root (mediante sudo) solo es necesario para la opción 1 del menú.
Detecta la distribución (/etc/os-release) y el kernel en ejecución (/proc).
Evalúa el kernel:
Comprueba si hay un livepatch aplicado (kpatch, Canonical Livepatch, SUSE kernel-livepatch, Ksplice), si hay un kernel corregido instalado pero aún no arrancado, y si el kernel del próximo arranque está corregido.
Informa de indicadores de exposición: /dev/kvm, vhost_net, dispositivos TUN/TAP, procesos de VM (QEMU, Firecracker, kvm de Proxmox, ...), ajustes de user namespace.
Si el sistema no es seguro, ofrece un menú:
1. Patch now (install the fixed kernel and reboot)
2. Patch manually later (show the commands)
3. Exit
Cuando no se ejecuta desde una terminal (cron, tuberías, salida redirigida a un archivo), no se muestra ningún menú y se comporta como la opción 2.
| Opción | Descripción |
|---|---|
-l, --list | Imprime solo la tabla de estado por distribución |
--no-color | Desactiva la salida con colores (NO_COLOR también se respeta) |
--os-release FILE | Usa este archivo os-release en lugar de /etc/os-release |
--uname-r STRING | Evalúa esta versión del kernel en lugar de la que está en ejecución (omite las comprobaciones locales) |
--uname-v STRING | Cadena de compilación del kernel (uname -v), necesaria para los kernels de Debian con --uname-r |
-h, --help | Muestra la ayuda |
| Código | Significado |
|---|---|
| 0 | Seguro (corregido, no afectado o con livepatch) |
| 1 | Vulnerable — hay disponible un kernel corregido |
| 2 | Kernel corregido instalado — se requiere reiniciar |
| 3 | Vulnerable — aún no hay corrección del proveedor, o fin de vida útil |
| 4 | Indeterminado (kernel desconocido, ejecutándose dentro de un contenedor, ...) |
Los códigos de salida permiten usarlo desde la gestión de configuración o la monitorización:
bash scanner-cve-2026-99999.sh --no-color > report.txt; echo "exit code: $?"
El veredicto se puede calcular para valores recopilados en otro lugar, por ejemplo, desde un contenedor o un inventario:
# On the target: uname -r ; uname -v ; cat /etc/os-release > os-release.txt
bash scanner-cve-2026-99999.sh --uname-r 5.14.0-570.12.1.el9_6.x86_64 --os-release os-release.txt
bash scanner-cve-2026-99999.sh --uname-r 6.1.0-38-amd64 \
--uname-v '#1 SMP PREEMPT_DYNAMIC Debian 6.1.176-1 (2026-08-02)' --os-release os-release.txt
bash scanner-cve-2026-99999.sh --list imprime la misma tabla.