Cada tanto aparece un bug de kernel que hace ruido y después se olvida. Copy Fail (CVE-2026-31431) no es de esos. Se publicó el 29 de abril de 2026 y en cuestión de días tenía proof-of-concept público, exploit de menos de 800 bytes y confirmación de que funciona en casi cualquier distro de Linux con un kernel compilado desde 2017. Lo que lo vuelve peligroso no es una hazaña técnica exótica, sino todo lo contrario: es determinista, no depende de ninguna race condition y convierte a un usuario común y corriente en root en segundos. Si administrás un Cloud Server, esto te toca directamente.

Copy Fail (CVE-2026-31431) es una vulnerabilidad de escalada de privilegios local en el kernel de Linux, con puntaje CVSS 7.8 (alto). Vive en algif_aead, el módulo que expone el cifrado del kernel a espacio de usuario vía la interfaz de sockets AF_ALG. Un usuario sin privilegios la usa para escribir 4 bytes controlados dentro de la page cache de cualquier archivo legible —típicamente un binario setuid como /usr/bin/su— y así ganar acceso root en la máquina.

¿Por qué un bug de 2017 recién explota ahora?

Copy Fail (CVE-2026-31431): root en tu Linux desde 2017

La raíz del problema no es nueva: viene de una optimización que se metió en el kernel en julio de 2017 (el commit 72548b093ee3). En ese momento se cambiaron las operaciones AEAD del subsistema de criptografía para que trabajaran in-place —es decir, reutilizando la memoria de origen como destino en lugar de copiar a un buffer aparte—. Era una mejora de rendimiento razonable. El detalle que nadie vio en su momento es que, bajo ciertas condiciones, esa reutilización de memoria permite que el kernel escriba sobre páginas que vienen de la page cache de un archivo, salteándose los permisos del archivo en disco.

Durante casi nueve años el bug estuvo ahí, dormido. Lo que cambió ahora es que alguien conectó los puntos y publicó cómo dispararlo de forma confiable. Por eso el aviso habla de "cualquier Linux desde 2017": no es una exageración de marketing, es literalmente el rango de kernels que arrastran esa optimización. Según el análisis de Sysdig, el disparo usa el algoritmo authencesn(hmac(sha256),cbc(aes)), que escribe cuatro bytes de scratch en un offset controlado, y ahí está la puerta.

¿Cómo llega alguien a root con solo 4 bytes?

La idea de fondo es elegante y por eso da miedo. No hace falta corromper el kernel ni ganar una carrera contra el planificador. El exploit encadena tres pasos con syscalls que están disponibles por defecto:

  • Abre un socket AF_ALG y lo liga al algoritmo AEAD vulnerable. Esto es una operación de crypto perfectamente legítima que cualquier proceso puede pedir.
  • Usa splice() para inyectar la page cache del binario objetivo en el pipeline de cifrado. Por ejemplo, las páginas en memoria de /usr/bin/su, que corre con setuid root.
  • Ejecuta recvmsg() para depositar 4 bytes controlados en el offset elegido. El atacante controla el archivo destino, el offset de escritura y el payload de 4 bytes.

El truco es que las lecturas posteriores del archivo se sirven desde la page cache, no desde el disco. Así que la versión "en memoria" de su queda modificada aunque el archivo en disco esté intacto. Con cuatro bytes bien puestos alcanza para inyectar un salto a shellcode y quedarse con una shell root. Todo esto en un script diminuto —los distintos análisis hablan de exploits de alrededor de 730 bytes— que anda igual en Ubuntu, Debian, Fedora o cualquier otra distro sin tocarlo.

¿Por qué esto rompe el aislamiento entre contenedores?

Acá viene la parte que más importa si tenés Docker o cualquier runtime de contenedores sobre tu servidor. La page cache es del kernel del host y se comparte entre el host y todos los contenedores. Los contenedores no tienen su propio kernel: usan el del anfitrión.

  • Un proceso sin privilegios dentro de un contenedor puede disparar el bug. Las syscalls involucradas (AF_ALG, splice, recvmsg) están habilitadas en la configuración por defecto de la mayoría de los contenedores.
  • Si dos contenedores comparten una capa de imagen base, se contaminan entre sí. Al modificar en la page cache un binario de esa capa compartida, el cambio afecta a todo lo que la use, incluido el host.
  • El resultado es un escenario de container escape. Lo que empieza como un usuario limitado adentro de un contenedor termina siendo root en la máquina física.

Si en su momento leíste sobre DirtyClone (CVE-2026-43503) o Bad Epoll (CVE-2026-46242) en este blog, Copy Fail es de la misma familia: escalada local que en un entorno multi-tenant se vuelve un problema de aislamiento serio. La diferencia es que este ni siquiera necesita timing.

¿Qué versiones del kernel están afectadas y cuáles ya tienen parche?

La respuesta corta es incómoda: si tu kernel es posterior a mediados de 2017 y no lo actualizaste en las últimas semanas, asumí que estás afectado. Las versiones donde ya se corrigió el problema (revirtiendo la operación AEAD a un modo out-of-place) son:

  • Linux 7.0 — la rama estable ya trae el fix.
  • 6.19.12 — para quienes están en la serie 6.19.x.
  • 6.18.22 — para la serie 6.18.x.

Para saber en qué kernel estás, corré:

uname -r

El detalle importante es que tener el parche en el kernel mainline no significa que tu distro ya lo haya empaquetado. Al momento del aviso, el rollout de las distros venía desparejo: algunas ramas de desarrollo con fix, muchas estables todavía esperando el backport. La única fuente de verdad es el tracker de seguridad de tu distribución. No confíes en "seguro ya salió": verificá. El aviso de CERT-EU y la nota de Wiz tienen el detalle por distro.

¿Qué podés hacer HOY en tu Cloud Server?

Lo primero y más obvio: actualizá el kernel y reiniciá. Si tu distro ya publicó el paquete corregido, esto cierra el tema de raíz.

# Debian / Ubuntu
sudo apt update && sudo apt upgrade

# RHEL / Fedora / Rocky / Alma
sudo dnf update kernel

Si todavía no hay kernel parchado para tu distro, la mitigación provisoria oficial es deshabilitar el módulo algif_aead. Salvo que corras algo muy específico que use el crypto API por sockets AF_ALG (la mayoría de las apps no lo hace), no vas a extrañarlo:

# Bloquear la carga futura del módulo
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.conf

# Descargarlo si ya está cargado
sudo rmmod algif_aead

Verificá si el módulo está en uso antes y después:

lsmod | grep algif_aead

Como capa extra, en entornos con contenedores conviene restringir la creación de sockets AF_ALG vía seccomp en los perfiles de tus contenedores, y sumar detección: monitorear la aparición de sockets AF_ALG en runtime (con reglas de Falco, por ejemplo) es una señal barata de que alguien está probando el exploit. Un usuario legítimo rara vez abre uno.

Si venís haciendo el hardening inicial de un Cloud Server —SSH, UFW, Fail2Ban— vale recordar que esos controles no frenan una escalada local como esta: el atacante ya está adentro con un usuario válido. La defensa real acá es el parche del kernel más el principio de mínimo privilegio en quién tiene shell en tu servidor.

Preguntas frecuentes

¿Copy Fail se explota de forma remota?

No. Es una escalada de privilegios local: el atacante necesita ya poder ejecutar código en la máquina con un usuario común. El riesgo real aparece cuando ese acceso existe —una cuenta comprometida, un usuario de bajo privilegio, un proceso de una web app o un contenedor—, y desde ahí salta a root.

¿Con desactivar el módulo alcanza como solución definitiva?

No, es solo una mitigación temporal. Deshabilitar algif_aead cierra el vector conocido mientras esperás el kernel corregido, pero la solución de fondo es actualizar a una versión parchada (7.0, 6.19.12, 6.18.22 o el paquete equivalente de tu distro) y reiniciar.

¿Cómo sé si mi servidor ya fue explotado?

No hay una señal infalible, pero conviene revisar los logs de autenticación en busca de registros de su con usuario invocante ausente o inconsistente, procesos que abran sockets AF_ALG sin motivo, y descargas o binarios extraños en directorios temporales. Ante la duda en una máquina expuesta, tratala como comprometida: parchá, rotá credenciales y reconstruí desde una base limpia.

¿Los contenedores me aíslan de este bug?

No por sí solos. Como los contenedores comparten el kernel del host, un proceso sin privilegios adentro de un contenedor puede disparar Copy Fail y, si hay imágenes base compartidas, contaminar a otros contenedores o al anfitrión. La única barrera efectiva es el kernel parchado, más seccomp para bloquear AF_ALG donde no se use.

¿De verdad afecta a todas las distribuciones?

Prácticamente sí, siempre que corran un kernel compilado entre 2017 y comienzos de 2026 con el módulo AEAD del crypto API disponible. El exploit público se demostró funcionando sin cambios entre distintas distros, justamente porque el bug vive en el kernel común y no en algo específico de cada una. La cobertura de Unit 42 lo resume como uno de los LPE de mayor alcance de los últimos años.

Cloud Serversby Donweb

Todo el poder de la nube a tus proyectos y aplicaciones.
Alojamiento ultra rápido, escalable y con alta disponibilidad.

  • Performance que te sorprenderá
  • Rápida escalabilidad y sin limitaciones
  • Arquitectura de alta disponibilidad
  • Soporte experto y ejecutivos de cuenta
  • Pagos en tu moneda y facturación local

Descubre la mejor solución de Cloud Hosting