
CVE-2026-31431 Script de detección de vulnerabilidad Copy Fail en el kernel de Linux
CVE-2026-31431 (Copy Fail) es una vulnerabilidad de escalada de privilegios local en el kernel de Linux que, mediante sockets AF_ALG (address family 38) combinados con la llamada al sistema de copia cero splice(), elude los permisos de escritura de archivos para manipular la caché de páginas (page cache), logrando alterar binarios SUID sin permisos de escritura y obteniendo así privilegios de root.
socket(AF_ALG, SOCK_SEQPACKET, 0) # Crear socket AF_ALG
-> bind(authesn(hmac(sha256),cbc(aes))) # Vincular plantilla de cifrado AEAD
-> sendmsg(operación AEAD) # Activar la ruta de cifrado del kernel
-> splice(-> archivo objetivo) # Escritura de copia cero, eludiendo la verificación de permisos
-> Alterar archivos SUID como /usr/bin/su # Escalar privilegios a root
| Rama del kernel | Rango afectado | Versión corregida |
|---|---|---|
| mainline / 6.19.x | < 6.19.12 | >= 6.19.12 |
| 6.18.x (stable) | < 6.18.22 | >= 6.18.22 |
| 6.12.x (LTS) | < 6.12.23 | >= 6.12.23 |
| 6.6.x (LTS) | < 6.6.87 | >= 6.6.87 |
| 6.1.x (LTS) | < 6.1.130 | >= 6.1.130 |
| 4.14 ~ < 7.0 | Todas afectadas | Actualizar a una versión segura |
| < 4.14 | No afectadas | - |
| >= 7.0 | Corrección incluida | - |
# Descargar el script
wget https://raw.githubusercontent.com/tangjie1/CVE-2026-31431-Check/main/cve-2026-31431-check.sh
# Otorgar permisos de ejecución y ejecutar (requiere root)
chmod +x cve-2026-31431-check.sh
sudo ./cve-2026-31431-check.sh
# Modo no interactivo (para automatización/CI)
sudo ./cve-2026-31431-check.sh --non-interactive
| N.º | Elemento de detección | Descripción |
|---|---|---|
| [1.0] | Tabla de rangos de versiones afectadas | Muestra la comparación de versiones afectadas/corregidas por rama |
| [1.1] | Versión del kernel | Comparación con los rangos afectados conocidos y las líneas base corregidas |
| [1.2] | Estado del módulo algif_aead | Cuatro estados: integrado / cargado / disponible para carga bajo demanda / no presente |
| [1.3] | Plantilla de cifrado authencesn | Disponibilidad en /proc/crypto |
| [1.4] | Medidas de mitigación | initcall_blacklist + lista negra de modprobe.d |
| [1.5] | Determinación integral | Conclusión safe/medium/high/critical mediante factores cruzados |
| N.º | Elemento de detección | Descripción |
|---|---|---|
| [2.1] | Detección de caché de páginas SUID | Comparación de hash entre dd direct I/O y caché |
| [2.2] | Historial de carga de módulos | dmesg + tiempo de carga de lsmod |
| [2.3] | Escaneo del historial de Shell | Coincidencia de palabras clave en .bash_history de todos los usuarios |
| [2.4] | Detección de archivos del sistema | Usuarios anómalos con UID=0 / tiempo de modificación de passwd y SUID |
| [2.5] | Escaneo de directorios temporales | Archivos sospechosos en /tmp /var/tmp /dev/shm en las últimas 24h |
| [2.6] | Auditoría de registros del sistema | Registros de fallos de su + palabras clave de vulnerabilidad de sudo |
| [2.7] | Detección de escape de contenedores | Entorno Docker + seccomp + /proc/1/root |
| Método | Principio | ¿Requiere reinicio? | Escenario de aplicación |
|---|---|---|---|
| Método uno | Lista negra de modprobe.d + rmmod | No | CONFIG=m (modo módulo) |
| Método dos | Parámetro de kernel initcall_blacklist | Sí | CONFIG=y (modo integrado) o defensa en profundidad |
| Método tres | Actualizar el kernel a una versión segura | Sí | Corrección permanente (recomendado) |
Ubuntu / Debian / Kali / CentOS / RHEL / Rocky / AlmaLinux / Fedora / openSUSE / Arch Linux / Alpine Linux
Licencia MIT
Esta herramienta está destinada únicamente a la investigación de seguridad y pruebas de penetración autorizadas. El usuario debe asegurarse de cumplir con las leyes y regulaciones locales y utilizarla únicamente en sistemas objetivo con autorización explícita. El desarrollador no se hace responsable de las consecuencias del uso no autorizado.