
CVE-2026-31431 - Guía de Remediación y Medidas de Protección
Este repositorio documenta la vulnerabilidad CVE-2026-31431, apodada Copy Fail, y propone un procedimiento de remediación defensiva para sistemas Linux potencialmente expuestos.
⚠️ Este repositorio está estrictamente orientado a la defensa, auditoría autorizada, endurecimiento y remediación.
No proporciona un procedimiento de explotación y no debe utilizarse para comprometer sistemas de terceros.
CVE-2026-31431 / Copy Fail es una vulnerabilidad de elevación local de privilegios en el kernel de Linux.
Afecta al subsistema criptográfico del kernel, más concretamente a la interfaz de usuario AF_ALG y al módulo algif_aead. La falla está relacionada con una optimización introducida en 2017 en la ruta AEAD del kernel de Linux. En determinadas condiciones, un usuario local no privilegiado puede provocar una escritura controlada en el page cache de un archivo legible, especialmente un binario setuid, lo que puede conducir a una elevación de privilegios hacia root.
La vulnerabilidad se considera High con una puntuación CVSS v3.1 de 7.8.
| Elemento | Detalle |
|---|---|
| CVE | CVE-2026-31431 |
| Nombre público | Copy Fail |
| Tipo | Local Privilege Escalation, LPE |
| Componente | Linux kernel crypto subsystem |
| Módulo afectado | algif_aead |
| Interfaz | AF_ALG |
| Mecanismo implicado | AEAD, authencesn, splice(), page cache |
| Puntuación CVSS v3.1 | 7.8 High |
| Privilegios requeridos | Cuenta local no privilegiada |
| Interacción del usuario | Ninguna |
| Impacto | Confidencialidad, integridad y disponibilidad altas |
Las fuentes públicas indican que las distribuciones Linux que incorporan un kernel derivado de una rama vulnerable desde la optimización de 2017 pueden estar expuestas.
Ejemplos de plataformas mencionadas en las publicaciones públicas:
| Distribución | Ejemplo de versión de kernel probada públicamente |
|---|---|
| Ubuntu 24.04 LTS | 6.17.0-1007-aws |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 |
| RHEL 10.1 | 6.12.0-124.45.1.el10_1 |
| SUSE 16 | 6.12.0-160000.9-default |
| Debian | Según versión del kernel y estado de seguridad |
| AlmaLinux / Rocky Linux / Oracle Linux | Según versión del kernel y backports del proveedor |
El estado exacto depende de la versión del kernel, el proveedor, los backports de seguridad y los parches ya aplicados.
Esta vulnerabilidad es especialmente peligrosa en entornos donde usuarios o cargas de trabajo no confiables tienen acceso a un shell local o a un entorno de ejecución compartido.
Entornos a priorizar:
Riesgo principal:
root;uname -a
uname -r
lsmod | grep algif_aead || true
sudo lsof -nP | grep AF_ALG || true
dpkg -l | grep -E '^ii\\s+linux-image|^ii\\s+linux-modules'
rpm -qa | grep -E '^kernel|^kernel-core'
rpm -qa | grep -E '^kernel'
Opción prioritaria: aplicar el parche de kernel del proveedor La remediación correcta consiste en instalar un kernel parcheado proporcionado por la distribución y luego reiniciar con ese kernel.
sudo apt update
sudo apt full-upgrade -y
sudo reboot
sudo dnf update -y kernel kernel-core kernel-modules
sudo reboot
sudo zypper refresh
sudo zypper patch
sudo reboot
# Después del reinicio:
uname -r
Si aún no hay un kernel parcheado disponible o si un reinicio inmediato es imposible, aplicar una mitigación temporal.
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo modprobe -r algif_aead 2>/dev/null || true
sudo rmmod algif_aead 2>/dev/null || true
sudo update-initramfs -u
sudo dracut -f
sudo mkinitrd
sudo reboot
sudo modprobe algif_aead
echo $?
En algunos kernels, el módulo puede estar compilado directamente en el kernel y no ser cargable/descargable como módulo.
grep CONFIG_CRYPTO_USER_API_AEAD /boot/config-$(uname -r)
CONFIG_CRYPTO_USER_API_AEAD=m
El componente es un módulo. La mitigación mediante /etc/modprobe.d/ es aplicable.
CONFIG_CRYPTO_USER_API_AEAD=y
El componente está integrado en el kernel. La mitigación mediante modprobe.d no es suficiente.
En este caso, utilizar preferiblemente:
Algunas fuentes mencionan la siguiente opción de kernel como posible solución alternativa:
initcall_blacklist=algif_aead_init
Debe probarse obligatoriamente fuera de producción antes de su generalización. Esta opción puede variar según el kernel, la distribución y la configuración de arranque.
Para Docker, Podman, Kubernetes y CI/CD, es necesario reducir la posibilidad de que cargas de trabajo no confiables abran sockets AF_ALG.
sudo lsof -nP | grep AF_ALG || true
lsmod | grep algif_aead || true
find / -perm -4000 -type f 2>/dev/null
sudo ausearch -f /usr/bin/su 2>/dev/null || true
sudo auditctl -w /usr/bin/su -p x -k su_exec_monitoring
sudo ausearch -k su_exec_monitoring