
Python exploit para CVE-2026-31431, una escalada local de privilegios en el kernel de Linux mediante AF_ALG y splice() para escribir en la caché de páginas, obteniendo root en arm64 y x86.
| Elemento | Contenido |
|---|---|
| ID de CVE | CVE-2026-31431 |
| Nombre de la vulnerabilidad | Copy Fail |
| Tipo de vulnerabilidad | Escalada de privilegios local (LPE) en el kernel de Linux |
| Puntuación CVSS 3.1 | 7.8 (ALTA) |
| CWE | CWE-669: Transferencia incorrecta de recursos entre esferas |
| Alcance | Todos los kernels de Linux compilados entre 2017 y abril de 2026 |
| CISA KEV | Incluido, fecha límite de corrección 2026-05-15 |
| Fecha de divulgación | 2026-04-29 |
En 2017, el kernel introdujo una optimización de cifrado in-place en el módulo criptográfico algif_aead. Esta optimización provocó que las páginas de page-cache se colocaran incorrectamente en un scatterlist de destino escribible. Un atacante puede combinar un socket AF_ALG con la llamada al sistema splice() para escribir datos en el page cache de archivos arbitrarios, incluidos archivos de solo lectura propiedad de root.
Cadena de ataque: socket AF_ALG → splice() → primitiva de escritura en page-cache → manipulación del page cache de binarios setuid → ejecución del archivo para obtener privilegios de root
Características del ataque:
| Distribución | Versión de kernel afectada |
|---|---|
| Ubuntu 24.04 LTS | 6.17.0-1007-aws |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 |
| RHEL 10.1 | 6.12.0-124.45.1.el10_1 |
| SUSE 16 | 6.12.0-160000.9-default |
Las distribuciones Debian, Arch, Fedora, Rocky, Alma, Oracle, entre otras, también se ven afectadas en el mismo rango de kernels.
Todas las versiones de kernel inferiores a las siguientes versiones corregidas están afectadas:
uname -r
Compare la salida con las versiones corregidas de la tabla anterior; si es inferior, el sistema está afectado.
# Ver si hay conexiones AF_ALG activas
lsof | grep AF_ALG
# Ver el estado de los sockets AF_ALG
ss -xa | grep alg
lsmod | grep algif_aead
Si hay salida, el módulo está cargado y existe riesgo de explotación.
# Clonar el repositorio del PoC
git clone https://github.com/cx330zer0/CVE-2026-31431-Copy-Fail-add-arm64.git
cd CVE-2026-31431-Copy-Fail-add-arm64
# Ejecutar el PoC (requiere identidad de usuario sin privilegios)
python3 copy-fail-dual-arch.py
Si el PoC obtiene una shell de root con éxito, el sistema es vulnerable.
| Rama estable | Versión mínima corregida |
|---|
| 5.10.x | ≥ 5.10.254 |
| 5.15.x | ≥ 5.15.204 |
| 6.1.x | ≥ 6.1.170 |
| 6.6.x | ≥ 6.6.137 |
| 6.12.x | ≥ 6.12.85 |
| 6.18.x | ≥ 6.18.22 |
| 6.19.x | ≥ 6.19.12 |
| 7.0.x | ≥ 7.0-rc7 |