
Quick mitigation and patch script for CVE-2026-31431 (Copy Fail) on Ubuntu/Debian VPS
🌐 English | Português | Español | 中文 | Íslenska
Mitigación y parche en un comando para CVE-2026-31431 — la vulnerabilidad "Copy Fail" del kernel Linux que permite escalada local de privilegios. El script deshabilita el módulo algif_aead afectado, actualiza el kernel mediante apt y (opcionalmente) instala un timer de systemd para mantener el sistema actualizado.
Diseñado para servidores Ubuntu (también compatible con sistemas basados en Debian).
⚠️ Revisa el script antes de ejecutar. Esta es una herramienta de seguridad que se ejecuta como root. Lee
copyfail.shantes de redirigirlo asudo. Siempre prefiere el proceso oficial de actualización de kernel de tu distribución cuando sea posible.
CVE-2026-31431 ("Copy Fail") es un fallo lógico en el módulo algif_aead del kernel (interfaz de socket AEAD de la API de cripto en espacio de usuario). Un usuario local sin privilegios puede disparar una escritura determinista de 4 bytes en el page cache de cualquier archivo legible — incluyendo binarios setuid — y obtener acceso root en segundos. El fallo fue introducido en 2017 (commit 72548b093ee3) y afecta a todo kernel construido entre 2017 y el parche. Este script deshabilita el módulo vulnerable mientras aplicas el parche oficial de tu distribución.
apt-get y awk disponiblessudo)wget -O copyfail.sh https://raw.githubusercontent.com/paulorlima9/copyfail-fix/main/copyfail.sh
chmod +x copyfail.sh
sudo ./copyfail.sh
En la primera ejecución, el script:
/etc/modprobe.d/disable-algif.conf para bloquear el módulo algif_aeadalgif_aead si está cargado actualmenteapt-get update && apt-get upgrade -y para descargar el kernel parcheadoSe requiere un reinicio tras la actualización para cargar el nuevo kernel.
sudo ./copyfail.sh [opciones]
| Opción | Corto | Descripción |
|---|---|---|
--help | -h | Muestra el mensaje de ayuda |
--mitigate | -m | Aplica solo la mitigación (deshabilita el módulo algif_aead) |
--upgrade | -u | Actualiza solo kernel/paquetes (apt-get upgrade) |
--check | -c | Muestra el estado actual (versión del kernel, módulo, mitigación) |
--revert | -r | Revierte la mitigación (tras parchear y reiniciar el kernel) |
--supervision | -s | Activa actualizaciones automáticas diarias mediante timer de systemd |
Corrección completa — aplica mitigación y actualiza el kernel:
sudo ./copyfail.sh
Solo verificar estado:
sudo ./copyfail.sh --check
Solo mitigación (sin actualización del kernel):
sudo ./copyfail.sh --mitigate
Revertir mitigación tras confirmar que el kernel está parcheado y reiniciado:
sudo ./copyfail.sh --revert
Activar actualización automática diaria (Supervision):
sudo ./copyfail.sh --supervision
La función Supervision instala un timer de systemd que ejecuta apt-get upgrade una vez cada 24 horas, asegurando que los parches de kernel se apliquen tan pronto como tu distribución los publique.
Cuando se activa, se crean dos unidades de systemd:
copyfail-fix-supervision.service — servicio oneshot que ejecuta el script con --upgradecopyfail-fix-supervision.timer — timer que dispara el servicio diariamente (y 5 minutos después del arranque)# Verificar estado del timer
systemctl status copyfail-fix-supervision.timer
# Ver próxima ejecución programada
systemctl list-timers copyfail-fix-supervision.timer
# Desactivar actualizaciones automáticas
sudo systemctl stop copyfail-fix-supervision.timer
sudo systemctl disable copyfail-fix-supervision.timer
# Disparar una actualización manualmente
sudo systemctl start copyfail-fix-supervision.service
install algif_aead /bin/false en /etc/modprobe.d/disable-algif.conf para impedir la carga del módulo en el próximo arranquermmod algif_aead para descargarlo del kernel en ejecución (omitido si el módulo está en uso — se requiere reinicio)apt-get update seguido de un apt-get upgrade no interactivo para instalar el paquete de kernel más reciente--check, inspecciona uname -r, lsmod, el archivo modprobe y el paquete linux-image-* más reciente--revert, elimina el archivo modprobe y recarga el módulo mediante modprobeDurante la ejecución, el script muestra indicadores de progreso:
+ (verde) — acción aplicada- (rojo) — acción revertida. (gris) — acción omitida (ya aplicada o no aplicable)! (amarillo) — advertencia (p. ej. reinicio requerido)MIT