
Prueba de concepto del exploit para CVE-2026-31431 (Copy Fail), una escalada de privilegios local (LPE) en el kernel de Linux mediante la corrupción de la caché de páginas en algif_aead, con guía de detección, laboratorio y mitigación.
██████╗ ██████╗ ██████╗ ██╗ ██╗ ███████╗ █████╗ ██╗██╗
██╔════╝██╔═══██╗██╔══██╗╚██╗ ██╔╝ ██╔════╝██╔══██╗██║██║
██║ ██║ ██║██████╔╝ ╚████╔╝ █████╗ ███████║██║██║
██║ ██║ ██║██╔═══╝ ╚██╔╝ ██╔══╝ ██╔══██║██║██║
╚██████╗╚██████╔╝██║ ██║ ██║ ██║ ██║██║███████╗
╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝
algif_aead⚠️ SOLO PARA USO AUTORIZADO — Este repositorio está estrictamente destinado a probadores de penetración, investigadores de seguridad y defensores que operan bajo autorización legal. El uso indebido es un delito penal.
| # | Sección | Descripción |
|---|---|---|
| 1 | ¿Qué es Copy Fail? | Resumen de la vulnerabilidad |
| 2 | Análisis Técnico Profundo | Análisis de la causa raíz |
| 3 | Sistemas Afectados | Matriz de distribuciones y kernels |
| 4 | Estructura del Repositorio | Organización de archivos |
| 5 | Configuración del Laboratorio | Reproducir de forma segura |
| 6 | Uso del Exploit | Flujo de trabajo de pentest |
| 7 | Detección | YARA, Sigma, scripts |
| 8 | Mitigación | Parche y endurecimiento |
| 9 | Informes de Pentest | Plantillas de informes |
| 10 | Legal y Ética | Descargo de responsabilidad |
| 11 | Referencias | CVEs, avisos, blogs |
Copy Fail es una vulnerabilidad de escalada local de privilegios (LPE) divulgada el 29 de abril de 2026, que afecta prácticamente a todas las principales distribuciones de Linux que ejecutan kernels desde 2017.
Usuario sin privilegios ──► AF_ALG + splice() ──► Escritura de 4 bytes en el caché de páginas ──► ROOT
| Propiedad | Detalle |
|---|---|
| ID CVE | CVE-2026-31431 |
| Apodo | Copy Fail |
| CVSS v3.1 | 7.8 (ALTA) |
| Vector de Ataque | Local |
| Privilegios Requeridos | Bajos (cualquier usuario sin privilegios) |
| Interacción del Usuario | Ninguna |
| Descubridor | Xint Code (Theori) |
| Divulgado | 29 de abril de 2026 |
| Tamaño del Exploit | 732 bytes (PoC en Python) |
| Estado del Parche | ✅ Disponible — revertir el commit a664bf3d603d |
La vulnerabilidad proviene de una optimización in situ defectuosa introducida en 2017 (commit 72548b093ee3) dentro del módulo algif_aead de la API criptográfica de espacio de usuario del kernel de Linux (AF_ALG).
AF_ALG (API criptográfica de espacio de usuario)
└── módulo algif_aead
└── plantilla authencesn ◄── VULNERABLE
└── optimización in situ (2017)
└── req->src == req->dst ◄── páginas de splice() encadenadas en una lista de dispersión de dst escribible
Paso 1: Abrir socket AF_ALG AEAD
socket(AF_ALG, SOCK_SEQPACKET, 0)
Paso 2: Enviar páginas de splice() que referencian el archivo objetivo
(páginas del caché de páginas de un binario privilegiado, p.ej. /usr/bin/sudo)
Paso 3: Activar escritura temporal de authencesn
authencesn usa el buffer dst como área de trabajo →
escribe 4 bytes controlados MÁS ALLÁ de la región de salida legítima
Paso 4: La entrada del caché de páginas para el archivo objetivo ahora está corrupta
(archivo en disco intacto — solo se modificó la copia en memoria)
Paso 5: Ejecutar el binario modificado → ROOT
El caché de páginas del kernel de Linux respalda las copias en memoria de los archivos. Cuando se lee un archivo, sus páginas se almacenan en caché. La llamada al sistema splice() puede referenciar directamente estas páginas cacheadas. Al alimentar páginas del caché de páginas en la lista de dispersión de AF_ALG AEAD, la escritura temporal de authencesn cae dentro de esas páginas cacheadas, parcheando efectivamente la copia en memoria de cualquier archivo legible — incluyendo binarios privilegiados como sudo, pkexec o passwd.
El parche ascendente revierte la optimización defectuosa de 2017:
# Corregido en el commit: a664bf3d603d
git show a664bf3d603d
| Rama del Kernel | ¿Afectado? | Versión Corregida |
|---|---|---|
| 4.9.x (LTS) | ✅ Sí | 4.9.340+ |
| 5.4.x (LTS) | ✅ Sí | 5.4.295+ |
| 5.10.x (LTS) | ✅ Sí | 5.10.239+ |
| 5.15.x (LTS) | ✅ Sí | 5.15.185+ |
| 6.1.x (LTS) | ✅ Sí | 6.1.132+ |
| 6.6.x (LTS) | ✅ Sí | 6.6.83+ |
| 6.12.x (LTS) | ✅ Sí | 6.12.19+ |
| < 4.9 (pre-2017) | ❌ No | N/A — optimización no presente |
| Distribución | Versiones Afectadas | ¿Parcheado? | Aviso |
|---|---|---|---|
| Ubuntu | < 26.04 (todas las versiones) | ✅ Parcheado | USN |
| Ubuntu 26.04 (Resolute) | ❌ No afectado | — | — |
| RHEL / CentOS | 7, 8, 9 | ✅ Parcheado | RHSA-2026 |
| Amazon Linux | 2, 2023 | ✅ Parcheado | ALAS |
| SUSE / openSUSE | Todas afectadas | ✅ Parcheado | SUSE-SU |
| Debian | Bullseye, Bookworm | ✅ Parcheado | DSA |
| CloudLinux | 8, 9 | ✅ Parcheado | Aviso |