
# Copy Fail (CVE-2026-31431) Exploit LPE. Una reimplementación limpia en Python multiarquitectura dirigida a la vulnerabilidad de caché de páginas AF_ALG del kernel de Linux.
Escalada de privilegios local en kernels de Linux desde 4.11 hasta (sin incluir) las versiones parcheadas 6.18.
El fallo reside en la interfaz de sockets AF_ALG del kernel, específicamente en cómo authencesn maneja las listas scatter-gather durante el descifrado AEAD in-place. El resultado: un usuario sin privilegios puede sobrescribir 4 bytes a la vez en la cache de páginas de cualquier archivo legible.
Sobrescribe un binario setuid como /usr/bin/su con shellcode, ejecútalo, y eres root. Sin condiciones de carrera, sin símbolos del kernel, sin recompilación. El mismo payload AArch64 de 172 bytes (o 160 para x86-64, 126 para i386, 138 para ARMv7) funciona en todas las distribuciones.
La vulnerabilidad fue descubierta por Taeyang Lee & Theori / Xint Code y publicada el 29 de abril de 2026. Este repositorio es una reimplementación independiente basada en clases destinada a pruebas autorizadas.
| Comprobación de vulnerabilidad | Explotación y obtención de root |
|---|---|
![]() | ![]() |
allowPrivilegeEscalation: true (el valor predeterminado de Kubernetes) puede escapar.Cualquier sistema que ejecute un kernel entre 4.11 y aproximadamente 6.17.x, lo que incluye:
Kernels parcheados: mainline ≥ 6.18.22 / 6.19.12 / 7.0, además de backports a ramas estables.
# Comprueba si el sistema es vulnerable
python3 exploit.py --check
# Ejecuta el exploit (requiere usuario no root)
python3 exploit.py
os.splice nativo desde 3.10)authencesn(hmac(sha256),cbc(aes))/usr/bin/su es el predeterminado; usa --scan para encontrar alternativas)Si la comprobación se queja del algoritmo, carga los módulos necesarios:
sudo modprobe algif_aead authencesn hmac cbc
Algunas distribuciones incluyen un bloqueo temporal (/etc/modprobe.d/disable-algif_aead.conf). El script lo elimina automáticamente cuando se ejecuta como root, o puedes borrarlo manualmente.
Permanente: Actualiza tu kernel. En Ubuntu/Debian:
sudo apt update && sudo apt upgrade linux-image-generic
Solución alternativa (no afecta a IPsec/XFRM):
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null
Nota: IPsec/XFRM no se ve afectado por este bloqueo porque usa la API criptográfica del kernel directamente, no AF_ALG.
Contenedores:
La mitigación principal es bloquear el socket AF_ALG con un perfil seccomp. Además, establece allowPrivilegeEscalation: false en el contexto de seguridad de tu pod para habilitar no_new_privs, lo que impide que el kernel respete los bits setuid en execve().
Esta herramienta es para pruebas de seguridad educativas y autorizadas. No la ejecutes en sistemas que no poseas o para los que no tengas permiso por escrito para probar.