
Detector no destructivo para CVE-2026-31431 (Copy Fail) de escalada de privilegios local en XCP-ng 8.3 Dom0, que valida la vulnerabilidad del kernel mediante una prueba de corrupción de caché de páginas.
Un script detector seguro y no destructivo para CVE-2026-31431 ("Copy Fail"), validado contra XCP-ng 8.3 LTS anterior a la actualización de seguridad del 5 de mayo de 2026.
⚠️ Solo uso autorizado. Ejecute este script exclusivamente en sistemas que le pertenezcan o para los que tenga autorización explícita de prueba.
CVE-2026-31431, apodado "Copy Fail", es una vulnerabilidad de escalada de privilegios local (LPE) en la interfaz criptográfica algif_aead del kernel de Linux. Una falla lógica en la plantilla authencesn — introducida en 2017 — permite a un usuario local sin privilegios realizar una escritura controlada de 4 bytes en la caché de páginas del kernel de cualquier archivo legible, lo que permite escalar privilegios a root.
a664bf3d603d de Herbert XuEl dominio de control Dom0 de XCP-ng se ejecuta sobre un kernel de Linux y es la capa de gestión del hipervisor. Cualquier usuario sin privilegios con acceso a shell en Dom0 — incluidas cuentas de servicio creadas para pipelines de CI/CD, agentes de monitoreo, herramientas de respaldo o automatización — puede explotar esta vulnerabilidad para obtener root. Desde root en Dom0, todas las máquinas virtuales invitadas en ese host quedan comprometidas.
Una instalación predeterminada de XCP-ng tiene una exposición mínima, ya que muy pocos procesos se ejecutan como usuarios no root. El riesgo real se acumula con el tiempo a medida que los operadores agregan cuentas de servicio con fines legítimos sin restringir el acceso a shell.
Audite las cuentas de servicio de su Dom0:
awk -F: '$7 ~ /bash|sh/' /etc/passwd
Este es un detector de laboratorio, no una herramienta de escalada de privilegios. El script:
algif_aead / authencesn contra ese archivoLos binarios del sistema, /etc/passwd y otros archivos del sistema nunca se tocan. La corrupción de la caché de páginas es solo en memoria — no se escribe nada de vuelta al disco.
os.splice)python3 xcp_ng_cve_2026_31431_tester.py
| Código | Significado |
|---|---|
0 | No se observó corrupción — el sistema probablemente está parcheado o algif_aead está deshabilitado |
1 | Error de activación — algif_aead puede no estar disponible o estar bloqueado |
2 | Vulnerable — corrupción de la caché de páginas confirmada |
Nota: El código de salida
1en un sistema parcheado es un comportamiento esperado, no un error del script. Siauthencesnse ha deshabilitado a nivel de kernel (como en la corrección de XCP-ng del 5 de mayo), el enlace del socket fallará y el script saldrá con el código1.
| Fecha | Evento |
|---|---|
| 29 de abril de 2026 | CVE-2026-31431 divulgado públicamente |
| 4 de mayo de 2026 | VATES publica VSA-2026-013 |
| 5 de mayo de 2026 | Actualización de seguridad de mayo de XCP-ng 8.3 LTS publicada — corrección del kernel disponible |
Actualice sus hosts XCP-ng y reinicie:
yum update
reboot
Después del reinicio, verifique que el kernel actualizado esté en ejecución:
uname -r
Vuelva a ejecutar este script detector después de parchear. Un sistema parcheado devolverá el código de salida 1 (error de activación), ya que la plantilla vulnerable authencesn ya no está disponible.
Nota: La corrección de XCP-ng deshabilita el soporte IPSec ESN como consecuencia de eliminar el componente vulnerable
authencesn. Para la mayoría de los entornos esto no tiene impacto práctico. VATES ha indicado que un parche futuro podría restaurar esta funcionalidad con una corrección adecuada.
Antes de aplicar mitigaciones, confirme si algif_aead está compilado como módulo (=m) o integrado en el kernel (=y):
grep CONFIG_CRYPTO_USER_API_AEAD /boot/config-$(uname -r)
=m — Basado en módulo; la lista negra de modprobe funcionará=y — Integrado en el kernel; la lista negra de modprobe fallará silenciosamente y no proporcionará protecciónPara kernels de la familia RHEL con =y, use el parámetro de arranque grubby en su lugar:
grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"
reboot
Este script es un derivado modificado del trabajo original de rootsecdev. Verifique la licencia del repositorio upstream antes de redistribuir y asegúrese de que su uso cumpla con sus términos.
Este script fue validado en XCP-ng 8.3 LTS ejecutando un kernel sin parchear al 5 de mayo de 2026. Aplique la actualización de seguridad oficial de VATES de inmediato si aún no lo ha hecho.