
Prueba de concepto de exploit para CVE-2026-31431, una vulnerabilidad de escalada de privilegios local en el kernel de Linux en el módulo algif_aead, que permite a usuarios no privilegiados obtener acceso root mediante una escritura de 4 bytes en la caché de páginas.
Este repositorio contiene una prueba de concepto (PoC) del exploit para CVE-2026-31431, una vulnerabilidad de escalada de privilegios local de alta gravedad en el kernel de Linux que permite a cualquier usuario local sin privilegios obtener acceso root. El fallo, denominado «Copy Fail», reside en el módulo algif_aead y puede encadenarse con la interfaz de socket AF_ALG y la llamada al sistema splice() para realizar una escritura controlada de 4 bytes en la caché de páginas de cualquier archivo legible, como el binario setuid /usr/bin/su.
La vulnerabilidad afecta a casi todos los kernels de Linux publicados desde 2017, incluidas todas las principales distribuciones (Ubuntu, Debian, RHEL, SUSE, Amazon Linux y muchas otras). Se divulgó públicamente el 29 de abril de 2026. Se ha confirmado una corrección en el árbol principal (commit a664bf3d603d), pero muchos proveedores aún están en proceso de publicar kernels parcheados. Hasta que haya un kernel corregido disponible, se recomienda encarecidamente deshabilitar el módulo del kernel algif_aead como mitigación temporal.
⚠ Importante: Este material se proporciona estrictamente con fines educativos y de investigación de seguridad autorizada. No lo utilice contra sistemas que no sean de su propiedad ni sin permiso explícito.
El repositorio contiene dos implementaciones de PoC que demuestran la explotación desde diferentes ángulos.
copy-fail-poc-short.py — mínimo, cercano al originalUna versión condensada que se mantiene muy cerca del exploit en Python publicado originalmente. Utiliza nombres de variables de una sola letra y omite comentarios o constantes, lo que la hace extremadamente compacta (732 bytes). Esta variante:
/usr/bin/su y un socket AEAD AF_ALG en bruto.os.splice para copiar con cero copias el fragmento correspondiente de 4 bytes del archivo objetivo./usr/bin/su para obtener un shell root.copy-fail-poc.py — completamente refactorizado, exhaustivoUna versión completamente reescrita y bien documentada que sigue las mejores prácticas de Python. Esta variante:
send_data_over_crypto_socket()) para aislar la lógica central.Esta versión es ideal para quienes deseen comprender la vulnerabilidad en profundidad o adaptar el código para investigaciones posteriores.
A alto nivel, el exploit:
setuid objetivo (/usr/bin/su).AF_ALG y lo configura con los parámetros necesarios para desencadenar el fallo lógico.splice().algif_aead, el kernel escribe erróneamente 4 bytes de datos controlados por el atacante en la caché de páginas del binario objetivo./usr/bin/su parchea efectivamente el binario en tiempo de ejecución, lo que permite a un usuario sin privilegios ejecutar una versión parcheada que devuelve un shell root.El exploit es extremadamente fiable (tasa de éxito del 100 %) y no requiere ventanas de carrera ni offsets específicos por kernel.
a664bf3d603d (git.kernel.org)