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.
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:
A diferencia de anterioresfallos deescalada deprivilegiosdeLinux, Copy Fail:
Sistemas afectados
Recomendaciones
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.
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.
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.