Threat Advisories

Escalada de privilegios local en el núcleo de Linux - CVE-2026-31431 ("Copy Fail")

Escrito por Integrity360 | 01-may-2026 7:53:08

CVE 2026 31431, comúnmente conocido como "Copy Fail", es una vulnerabilidad de escalada de privilegios local de alta gravedad que afecta al kernel de Linux. El problema afecta a los kernels distribuidos por todas las principales distribuciones de Linux desde 2017 y permite a un usuario local sin privilegios obtener ejecución a nivel de raíz en el sistema host.

La vulnerabilidad se deriva de un fallo lógico en el subsistema criptográfico del kernel de Linux, específicamente en la interfaz algif_aead expuesta a través de socketsAF_ALG. Bajo ciertas condiciones, este fallo permite la modificación controlada dela caché de páginas enmemoria del kernelparaarchivos desólolectura, incluyendo binarios raízsetuid. Cuando se ejecuta un binario modificado de este tipo, el atacante puede obtener privilegios elevados.

Impacto

Un atacante con ejecución de código local (por ejemplo, una cuenta de usuario estándar, una cuenta de servicio comprometida, un punto de apoyo de fuga de contenedor o un trabajo de CI malicioso) puede:

  • Escalar privilegios a root
  • Modificarla ruta de ejecuciónenmemoriade binarios de confianza sin alterar los archivos en disco
  • eludir los mecanismos de detección que se basan únicamente en la supervisión de la integridad de los archivos
  • Evadir potencialmente contenedores enplataformasdenúcleocompartidodebido a la naturaleza global de la caché de páginas de Linux.

A diferencia de anterioresfallos deescalada deprivilegiosdeLinux, Copy Fail:

  • No requiere condiciones de carrera
  • No depende dedesplazamientos de memoriaespecíficosdel núcleo.
  • Es determinista y portable entre distribuciones

Sistemas afectados

  • Núcleos Linux 4.14 y posteriores que incluyen laoptimización AEAD in-placede 2017en algif_aead
  • Todas las distribuciones principales que envían kernels construidos a partir de 2017 hasta que se apliquen los parches del proveedor

Recomendaciones

  • Parchee el kernel en cualquier sistema afectado como solución principal. Este comportamiento es del lado del kernel; los controles del espacio de usuario por sí solos no son suficientes.
  • Restringir el uso de AF_ALG para cargas de trabajo no fiables mediante seccomp, SELinux, AppArmor, políticas de contenedor o perfiles de refuerzo si dichas cargas de trabajo no requieren sockets criptográficos del núcleo.

Validacióndepruebade conceptoy pruebas de Integrity360

Integrity360 llevó a cabo análisis dinámicos controlados de cargas útilesdeprueba de concepto de Copy Fail disponibles públicamentepara validar la explotabilidad y evaluar el riesgo operativo.

El análisis dinámico mediante la ejecución de las cargas útiles reveló que el exploit se dirige a la ruta del fallo "Copy Fail" de Linux corrompiendo la caché de páginas de un ejecutable protegido, concretamente "su", sin abrir ese archivo para escritura. El payload abre el objetivo sólo para lectura, maneja repetidamente una interfaz criptográfica del kernel a través de "AF_ALG", mueve datos respaldados por el objetivo a través de splice, y luego informa que la caché de páginas ha sido mutada antes de ejecutar el objetivo.

No se trata de una sobreescritura de archivos normal. El exploit abusa de una ruta de copia del lado del kernel para que la imagen en memoria caché del ejecutable se altere aunque el descriptor de archivo sea de sólo lectura. El rastro del análisis dinámico muestra la ejecución pivotando a través de "sh -c su", seguido de la ejecución de "su", que ya no se comporta como elayudanteoriginal "setuid" y en su lugar cae a través de "sh". Durante la ejecución que observamos, "setgid(0)" y "setuid(0)" fallan con "EPERM", lo que es consistente con la supresión de la elevación de privilegios bajo rastreo; el comportamiento del exploit sigue siendo visible porque la ejecución se redirige a un shell.

Explicación técnica

El exploit comienza abriendo "su" con "O_RDONLY " y anunciando una carga útil de 1704 bytes (426 iteraciones). Ese número importa: el bucle parece parchear el objetivo en trozos de 4 bytes, con 426 x 4 = 1704. Cada iteración crea un nuevo socket "AF_ALG ", lo vincula a una ruta criptográfica "AEAD ", establece los parámetros del algoritmo con "setsockopt" y envía un pequeño bloque de control con "sendmsg".

El paso crítico es el par de llamadas de empalme. En primer lugar, los bytes se empalman desde el descriptor de archivo de destino de sólo lectura a una tubería. Luego se empalman desde la tubería alsocket"AF_ALG" aceptado. Esto mantiene la transferencia dentro del espacio del núcleo y evita una escritura normal en el espacio del usuario. Después de cada intento, "recvfrom" devuelve "EBADMSG", lo que indica que la operación criptográfica falló desde la perspectiva del espacio de usuario, pero el rastreo muestra claramente que el exploit se basa en un efecto secundario del lado del núcleo que sobrevive a ese fallo.

Cerca del final de la traza, el exploit realiza la transferencia completa de 1704 bytes, cierra los descriptores, imprime page cache mutated; ejecutando target, e inmediatamente ejecuta "sh -c su". Eso lleva a "execve("/usr/bin/su", ...)", luego "setgid(0)" y "setuid(0)" fallidos, y finalmente "execve("/bin/sh", ["sh"], [])". Esa secuencia indica que la imagen en caché de "su " fue modificada de modo que la ejecución ya no sigue la lógica original del programa.

 

Llamadas al sistema más críticas

  • openat:
    • Abre su como sólo lectura. Esto es importante porque muestra que el exploit no requiere acceso de escritura al archivo de destino.
  • socket(AF_ALG, SOCK_SEQPACKET, 0) seguido de bind
    • Estos seleccionan la interfaz criptográfica del kernel y la ruta de procesamiento vulnerable.
  • setsockopt:
    • Configura la operación AF_ALG para que la petición crafteada pueda ser aceptada y procesada.
  • sendmsg:
    • Suministra los datos de control y el material de parche para cada iteración.
  • tubería2:
    • Crea la ruta de búfer en el núcleo utilizada para enlazar páginas respaldadas por archivos en el socket criptográfico.
  • empalme:
    • Esta es la primitiva central del exploit en el rastreo. El exploit primero empalma desde el archivo de destino a la tubería, y luego desde la tubería al socket AF_ALG. Este es el par de llamadas al sistema más directamente relacionado con la corrupción de la caché.
  • recvfrom:
    • Devuelve repetidamente EBADMSG. Esto es importante porque muestra que el exploit tiene éxito a pesar de un aparente fallo en la operación, implicando que la corrupción ocurre antes de que el error salga a la superficie.
  • execve:
    • Confirma el resultado del exploit ejecutando inmediatamente la ruta objetivo alterada y cayendo después en sh.

Versiones del núcleo utilizadas en las pruebas de Integrity360

 

Explotación exitosa

  • Linux 5.4.0-122-generic (x86_64)

Explotación fallida

  • Linux 7.0.0-15-generic (x86_64, kernel parcheado)

Referencia de la carga útil

https:// github.com/tgies/copy-fail-c

 

Si le preocupa alguna de las amenazas descritas en este boletín o necesita ayuda para determinar qué medidas debe tomar para protegerse de las amenazas más importantes a las que se enfrenta su organización, póngase en contacto con su gestor de cuentas o, alternativamente, póngase en contactopara averiguar cómo puede proteger su organización.