⚠️ Amenaza Activa — Divulgado Públicamente el 29 de Abril, 2026. El código del exploit está público. Cada sistema Linux sin parchear corriendo kernel 4.14 hasta 6.17 está afectado. Verifica tu versión del kernel ahora. Ver pasos de mitigación abajo.
¿Qué es “Copy Fail”?
CVE-2026-31431, denominado “Copy Fail” por los investigadores que lo encontraron, es una vulnerabilidad de escalación de privilegios local en el subsistema criptográfico del kernel Linux. CVSS score: 7.8. El impacto práctico: cualquier usuario local — sin permisos especiales requeridos — puede obtener una root shell en un sistema sin parchear. Confiable, determinista, sin necesidad de offsets de kernel, sin fuerza bruta, sin bypass de KASLR.
El bug fue descubierto por investigadores de Theori usando su plataforma de investigación de vulnerabilidades Xint AI . Lo reportaron al equipo de seguridad del kernel Linux el 23 de marzo de 2026. Un parche llegó upstream en una semana. La divulgación pública llegó el 29 de abril — el día en que el código del exploit funcional y el writeup técnico completo cayeron simultáneamente.
Antes de eso, todas las distribuciones principales enviaban el bug durante nueve años.
La Ruta de Código Vulnerable
El bug vive en crypto/authencesn.c — la implementación del kernel del template de cifrado autenticado authencesn. Este es un rincón algo oscuro del subsistema crypto que maneja operaciones combinadas de autenticación + cifrado con números de secuencia extendidos.
Llegó en 2017, con el kernel 4.14, como parte de una optimización que permitió ciertas operaciones criptográficas trabajar “en el lugar” — modificando el buffer original en lugar de copiarlo. Optimización razonable. Bug lógico escondido dentro de ella.
El Primitivo: Una Escritura de 4 Bytes en la Page Cache
Esto es lo que el bug realmente hace, explicado sin el assembly:
- Un usuario abre un socket AF_ALG — la interfaz crypto a nivel kernel de Linux, disponible para cualquier usuario sin privilegios.
- Lo configura para usar el template
authencesn. - Usa el system call
splice()para canalizar contenido de archivos directamente al buffer kernel del socket AF_ALG sin copiar al userspace primero. - Debido a la optimización “en el lugar” de 2017, el código crypto del kernel escribe datos modificados de vuelta en la entrada de page cache para el archivo fuente — la misma página respaldada en memoria que el kernel usa como “copia maestra” del contenido de ese archivo en disco.
- Resultado neto: cuatro bytes de datos controlados por el atacante escritos en la vista en caché del kernel de cualquier archivo que el atacante pueda leer.
Ese es el primitivo. Una escritura determinista y confiable de 4 bytes en la page cache de cualquier archivo legible. Sin race condition, sin spray-and-pray, sin bypass de SMAP/SMEP requerido.
De una Escritura de 4 Bytes a Root
La cadena de ataque de “escritura de 4 bytes en un archivo legible” a root es directa si el archivo objetivo es un binario setuid-root.
/usr/bin/sudo, /usr/bin/su, /usr/bin/passwd, /usr/bin/newgrp — cualquier binario setuid que puedas leer (la mayoría de ellos) es candidato. El exploit:
- Identifica el binario setuid objetivo y mapea dónde vive una instrucción útil en el archivo.
- Usa el primitivo Copy Fail para sobrescribir esos 4 bytes en la page cache.
- Ejecuta el binario.
- El kernel carga el binario desde la page cache (ahora corrompida).
- El shellcode corre como root.
El código de exploit publicado por Theori son 732 bytes de Python. Corre en segundos. No tiene offsets específicos a ninguna distribución o build de kernel. Funciona porque la corrupción de page cache es agnóstica al layout — el exploit apunta a bytes de instrucción que son estables entre builds, no offsets de structs del kernel que varían.
Los investigadores de Theori lo describieron como “más portable que Dirty Pipe.” Eso no es marketing. Dirty Pipe (CVE-2022-0847) requería conocer los internos del buffer de pipe. Copy Fail no requiere nada — solo la interfaz del socket AF_ALG y un binario setuid. Un script, cada distro, nueve años de exposición.
Sistemas Afectados Confirmados
Theori confirmó que el exploit funciona en:
- Ubuntu 24.04 LTS (kernel 6.8)
- Amazon Linux 2023 (kernel 6.1)
- RHEL 10.1 (kernel 6.12)
- SUSE Linux Enterprise 16 (kernel 6.12)
Cualquier sistema Linux corriendo kernel 4.14 hasta 6.17 está afectado. Si no estás seguro de lo que estás corriendo:
uname -r
El bug fue introducido en el kernel 4.14 y parcheado en:
- 6.18.22
- 6.19.12
- 7.0
El parche upstream aterrizó el 1 de abril de 2026. Los paquetes de distribución están siendo lanzados ahora, pero la propagación de parches a través de entornos empresariales y cloud toma tiempo — y esa ventana es lo que hace esto peligroso en la práctica.
Quién Debería Preocuparse Ahora Mismo
Esta es una escalación de privilegios local, no ejecución remota de código. El atacante necesita un shell en la caja primero. Esa restricción importa — pero en 2026, obtener un shell local en un host Linux no es la parte difícil para la mayoría de actores de amenaza. La pregunta es qué hacen después.
Entornos de amenaza prioritarios:
Hosts Linux multi-tenant — Cualquier entorno donde múltiples usuarios comparten el mismo kernel es una kill chain esperando suceder. Compromiso de tenant con bajos privilegios → Copy Fail → root → host completo.
Clusters Kubernetes y de contenedores — Los container escapes son ya un riesgo conocido, pero Copy Fail reduce la complejidad usual. Si un atacante aterriza en un contenedor privilegiado o escapa al nodo, Copy Fail les da root en el host subyacente sin ningún bypass de KASLR o heap spray de kernel.
Runners CI/CD — Runners de GitHub Actions, runners de GitLab, agentes Jenkins corriendo en infraestructura Linux compartida. Código malicioso en un paso de build (compromiso de supply chain, PR malicioso, dependencia comprometida — hemos visto todo esto recientemente) corre como usuario restringido en un runner compartido. Copy Fail escala eso a root.
SaaS Cloud ejecutando código de usuarios — Cualquier producto que ejecuta código enviado por usuarios en Linux — notebooks, compute sandboxeado, plataformas serverless — es un host potencial para este exploit si ese código corre en un contexto de kernel compartido.
La Comparación con Dirty Pipe
Dirty Pipe (CVE-2022-0847) fue el último LPE de kernel que generó este nivel de atención. Vale ser preciso sobre cómo se diferencia Copy Fail:
| Dirty Pipe (CVE-2022-0847) | Copy Fail (CVE-2026-31431) | |
|---|---|---|
| Introducido | 2020 (kernel 5.8) | 2017 (kernel 4.14) |
| Mecanismo | Bypass de flag de buffer de pipe → escritura en page cache | AF_ALG splice() → escritura en page cache |
| Tamaño del exploit | ~400 LOC C | 732-byte Python |
| Offsets de kernel requeridos | No | No |
| Funciona en RHEL/Amazon Linux | No | Sí |
| Ventana de exposición | ~2 años | ~9 años |
| Confiabilidad | Alta | Determinista |
Copy Fail cubre una superficie más grande. Golpea cada distribución empresarial importante, incluyendo las que corren kernels de la era 4.x y 5.x. Dirty Pipe se perdió RHEL completamente porque RHEL se quedó en kernels 4.x más tiempo que upstream. Copy Fail no se pierde nada en el rango 4.14+.
Mitigación
La solución permanente es parchear. Las versiones del kernel 6.18.22, 6.19.12 y 7.0 contienen el fix upstream. Verifica el tracker de seguridad de tu distribución para un parche backporteado si estás en un kernel LTS.
Mientras esperas el parche:
Deshabilita el módulo kernel algif_aead. Esta es la interfaz de userspace que habilita el acceso AF_ALG al template authencesn. Bloquearlo elimina el vector de ataque completamente sin romper operaciones criptográficas estándar.
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf && rmmod algif_aead
El primer comando crea una regla persistente que previene que el módulo se cargue al reiniciar. El segundo lo descarga inmediatamente si está cargado actualmente. Si rmmod falla con “module not in use”, el módulo no estaba cargado — estás bien, pero mantén la regla en su lugar.
Esto no rompe TLS, cifrado de disco, ni ninguna operación criptográfica estándar. El módulo algif_aead es la interfaz AEAD accesible desde userspace del kernel — no es usado por el stack crypto propio del kernel para operaciones normales.
Verifica que el módulo está detenido:
lsmod | grep algif_aead
Sin output = módulo no cargado = superficie de ataque eliminada.
Detección
Si buscas intentos de explotación en tu entorno, observa:
- Procesos llamando
socket(AF_ALG, ...)seguido desplice()en binarios setuid - Ejecución inesperada de binarios setuid desde procesos padre inusuales
- Modificaciones en
/etc/modprobe.d/(un atacante re-habilitando el módulo post-mitigación) - Eventos de
auditd:syscall=socketcona0=0x26(AF_ALG = 38 = 0x26), seguido desyscall=splice
Si estás corriendo auditd, agrega:
auditctl -a always,exit -F arch=b64 -S socket -F a0=38 -k af_alg_use
Esto marca cualquier proceso abriendo un socket AF_ALG. Establece una línea base de lo que es normal en tu entorno — algún tooling legítimo de crypto usa AF_ALG — luego alerta en desviaciones.
Nota OPSEC para Red Teamers
Si ejecutas engagements contra objetivos que pueden estar usando infraestructura cloud compartida, haz VPN de tu egress antes de tocar cualquier cosa. Los proveedores cloud registran IPs fuente en tráfico de exploit, y un intento de Copy Fail desde una IP residencial o cloud que se rastrea hasta ti es un mal día. NordVPN es lo que usamos para aislamiento de egress en engagements cloud — confiable, sin logs, y no es marcado por los bloqueos de GeoIP de proveedores cloud como algunas alternativas.
Timeline
| Fecha | Evento |
|---|---|
| 2017 | Kernel 4.14 introduce optimización “en el lugar” en crypto/authencesn.c — bug introducido |
| 2026-03-23 | Theori reporta CVE-2026-31431 al equipo de seguridad del kernel Linux |
| ~2026-03-30 | Parche upstream mergeado (dentro de una semana del reporte) |
| 2026-04-01 | Fix disponible en kernels 6.18.22, 6.19.12 y 7.0 |
| 2026-04-29 | Theori publica writeup completo + exploit PoC. Divulgación pública. |
| 2026-04-30 | Parches de distribución siendo lanzados. Exploit disponible públicamente. |
Estado Actual
Al 30 de abril de 2026:
- El exploit es público. Un PoC funcional de Python de 732 bytes está disponible. Asume que cualquiera con un foothold local en un sistema sin parchear puede escalar.
- Los parches están en kernels upstream (6.18.22, 6.19.12, 7.0). Los paquetes de distribución están en progreso.
- Ubuntu, RHEL, Amazon Linux, SUSE todos confirmados afectados.
- Sin reportes de explotación en la naturaleza al momento de la divulgación, pero el exploit es trivial de ejecutar — esa ventana será corta.
- Xint AI de Theori fue usado para descubrir la vulnerabilidad — la investigación de vulnerabilidades de kernel asistida por IA está produciendo resultados reales.
Parchea primero. Deshabilita algif_aead si el parcheo se retrasa. No esperes el aviso de tu distribución si estás en un entorno de alto riesgo — el fix del kernel está upstream ahora.
Fuentes: Theori — Writeup Completo CVE-2026-31431 · Linux Kernel Security Advisory · NVD — CVE-2026-31431
¿Necesitas contenido así para tu blog de seguridad o newsletter interno? CipherWrite entrega escritura de seguridad de nivel profesional a tiempo — artículos de blog, whitepapers, contenido para LinkedIn. Ver el gig.
