Copy Fail (CVE-2026-31431): nueva vulnerabilidad crítica de escalada de privilegios en el kernel de Linux

CyberSecureFox

Una nueva vulnerabilidad en el kernel de Linux, denominada Copy Fail y catalogada como CVE-2026-31431 con una puntuación CVSS de 7,8, permite que un usuario local sin privilegios obtenga acceso completo de root en la mayoría de sistemas Linux modernos. El fallo, analizado por los equipos de investigación de Xint.io y Theori, se suma al creciente conjunto de vulnerabilidades de escalada de privilegios locales que afectan directamente a la seguridad de servidores, estaciones de trabajo y entornos de contenedores.

Qué es la vulnerabilidad Copy Fail CVE-2026-31431 en Linux

Copy Fail pertenece a la clase de vulnerabilidades de escalada de privilegios local (Local Privilege Escalation, LPE). En términos prácticos, permite que un usuario no privilegiado escriba cuatro bytes controlados en la caché de páginas (page cache) de cualquier archivo legible en el sistema. Con esa capacidad mínima de escritura es posible manipular binarios sensibles y, en consecuencia, ejecutar código con privilegios de superusuario.

El origen del problema es una falla lógica en la infraestructura criptográfica del kernel de Linux, concretamente en el módulo algif_aead, encargado de exponer algoritmos AEAD a través de la interfaz de sockets AF_ALG. El código vulnerable fue introducido mediante un commit de agosto de 2017, lo que explica el amplio espectro de versiones y distribuciones de Linux potencialmente afectadas.

Cómo funciona el exploit: page cache y AF_ALG en el kernel de Linux

La page cache es una capa de caché de archivos mantenida por el kernel y compartida por todos los procesos. Cuando un archivo se lee desde disco, sus bloques suelen permanecer en esta caché. Si un atacante logra modificar una página de la caché, en la práctica está alterando el contenido del archivo “en vuelo” para cualquier proceso que lo lea, sin necesidad de modificar el archivo en disco.

En Copy Fail, una optimización interna de algif_aead permite que una página procedente de la page cache termine incluida en la lista de destino escribible (scatterlist) durante una operación criptográfica AEAD iniciada a través de un socket AF_ALG. Los investigadores han demostrado que un proceso local sin privilegios puede explotar esta condición utilizando la llamada al sistema splice() para inyectar cuatro bytes arbitrarios en la caché de páginas de un archivo que solo tiene abierto en modo lectura.

Abuso de binarios setuid y ejecución como root

Este primitivo de escritura, aunque limitado a unos pocos bytes, es extremadamente potente. En particular, permite modificar binarios con el bit setuid activado (programas que se ejecutan con privilegios elevados, a menudo como root) sin tocar el archivo subyacente en disco. Cambiar unos pocos bytes de código máquina o de una tabla de saltos puede redirigir el flujo de ejecución y inyectar código arbitrario con privilegios de superusuario, reproduciendo patrones de ataque observados históricamente en vulnerabilidades como Dirty COW o Dirty Pipe.

Sistemas Linux afectados e impacto en entornos de contenedores

Dado que el código vulnerable está presente desde 2017, se ven afectados prácticamente todos los grandes distribuidores de Linux con kernels de ese periodo en adelante: Amazon Linux, Red Hat Enterprise Linux (RHEL), SUSE, Ubuntu y numerosas variantes derivadas. Esto incluye tanto sistemas bare-metal como infraestructuras virtualizadas y despliegues en la nube.

Copy Fail no es una vulnerabilidad remota por sí misma: el atacante necesita acceso local (por ejemplo, mediante una cuenta comprometida por phishing, un servicio web vulnerable o credenciales débiles). Sin embargo, una vez obtenido ese primer punto de apoyo, el exploit permite escalar de un usuario estándar a root en un único paso, reduciendo drásticamente el tiempo necesario para comprometer por completo un servidor.

El riesgo se agrava en entornos de contenedores. La page cache es global al kernel y se comparte entre host y contenedores. Esto significa que un proceso dentro de un contenedor con recursos limitados puede llegar a modificar binarios fuera de su propio espacio aislado, romper el sandboxing y escapar al nivel del host. En entornos Docker o Kubernetes con múltiples contenedores compartiendo el mismo host, un ataque exitoso podría impactar a varias cargas de trabajo simultáneamente.

Relación entre Copy Fail y Dirty Pipe: mismo tipo de ataque, distinto vector

Copy Fail guarda una estrecha relación conceptual con la vulnerabilidad Dirty Pipe (CVE-2022-0847), que igualmente permitía escribir en la page cache de archivos abiertos solo en modo lectura. La diferencia fundamental reside en el subsistema explotado: mientras que Dirty Pipe se apoyaba en errores en la gestión de pipes, Copy Fail se basa en defectos de la subsystema criptográfica AF_ALG y el módulo algif_aead.

Los investigadores destacan varios factores que incrementan la criticidad de Copy Fail: no requiere condiciones de carrera complejas ni conocimiento detallado de direcciones del kernel, el exploit puede implementarse en un script de Python muy compacto (en torno a 700 bytes), funciona de forma altamente portable entre distribuciones y deja huellas mínimas en los registros, dificultando la detección forense. Este patrón encaja con la tendencia observada en los últimos años: vulnerabilidades lógicas aparentemente menores en subsistemas especializados pueden transformarse en poderosos primitivos de escritura en memoria compartida.

Recomendaciones de seguridad para mitigar Copy Fail en Linux

Tras la divulgación de Copy Fail, los proveedores de distribuciones Linux han comenzado a publicar actualizaciones de kernel y boletines de seguridad. Para reducir la superficie de ataque, los administradores y equipos de seguridad deberían priorizar las siguientes acciones:

  • Actualizar el kernel de Linux a las versiones corregidas disponibles en los repositorios oficiales (RHEL, Ubuntu, SUSE, Amazon Linux y otros derivados), integrando estas actualizaciones en los pipelines de patch management y CI/CD.
  • Restringir y monitorizar el acceso local, endureciendo políticas de autenticación, revisando cuentas de servicio y minimizando el número de usuarios con acceso interactivo a sistemas críticos.
  • Inventariar y reducir binarios setuid, deshabilitando el bit setuid en herramientas innecesarias y aplicando controles de integridad sobre binarios sensibles de sistema.
  • Reforzar la seguridad de contenedores: evitar contenedores privilegiados, aplicar perfiles seccomp y AppArmor/SELinux, y asumir que la namespaces isolation no protege frente a vulnerabilidades del kernel.
  • Mejorar la detección con soluciones de EDR y monitorización que alerten de usos anómalos de interfaces como AF_ALG o de modificaciones inesperadas en binarios de sistema.

Copy Fail pone de manifiesto que una única falla lógica en un módulo especializado del kernel puede desembocar en compromisos de alto impacto: desde la toma completa de un servidor hasta la ruptura de la segregación entre contenedores. Mantener los kernels actualizados, aplicar de forma estricta el principio de mínimo privilegio y revisar de manera continua la arquitectura de seguridad de la infraestructura Linux son pasos esenciales para mitigar no solo esta vulnerabilidad, sino también las futuras variantes que puedan surgir en la misma clase de ataques.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.