
Escáner automatizado y asistente de parcheo para CVE-2026-31431, que detecta hosts Linux vulnerables a través de SSH, verifica versiones del kernel y aplica actualizaciones del kernel o mitigaciones temporales en múltiples distribuciones.
Copy Fail es un escáner de seguridad automático y asistente de parche para detectar y corregir la vulnerabilidad CVE-2026-31431 (Escalada de Privilegios Local en el Kernel de Linux algif_aead) en su infraestructura Linux.
CVE-2026-31431 es una vulnerabilidad de Escalada de Privilegios Local (LPE) en el módulo del kernel de Linux algif_aead (Interfaz de Cifrado Asíncrono para AEAD). Esta vulnerabilidad permite a un usuario local alcanzar una escalada de privilegios a nivel de root.
Esta herramienta ayuda a:
Nota: Esta herramienta es solo para fines de auditoría y parcheo interno por parte de administradores de sistemas. Úsela únicamente en sistemas que posea o para los que tenga autorización.

algif_aead (cargado/no cargado)Actualización automática del kernel en hosts vulnerables a través del gestor de paquetes:
Opción: Reinicio automático después del parcheo
algif_aead mediante la configuración modprobe.dBase de datos de versiones de kernel ya parcheadas para:
paramiko>=3.0.0 # Biblioteca SSH
rich>=13.0.0 # Interfaz de terminal atractiva
git clone https://github.com/gagaltotal/cve-2026-31431-copy-fail.git
cd cve-2026-31431-copy-fail
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
o instalar manualmente:
pip install paramiko>=3.0.0 rich>=13.0.0
python3 copyfail_scanner.py --help
# Escanear subred con clave SSH
python3 copyfail_scanner.py --subnet <CIDR> --user <USERNAME> --key <PATH_TO_KEY>
# Escanear varios hosts específicos
python3 copyfail_scanner.py --hosts <IP1>,<IP2>,<IP3> --user <USERNAME> [--password <PASSWORD>]
# Escanear + parcheo automático
python3 copyfail_scanner.py --subnet <CIDR> --user <USERNAME> --key <PATH> --patch
# Escanear + mitigación temporal
python3 copyfail_scanner.py --subnet <CIDR> --user <USERNAME> --key <PATH> --mitigate
| Opción | Descripción | Ejemplo |
|---|---|---|
--subnet | Subred CIDR objetivo (mutuamente excluyente con --hosts) | --subnet 192.168.1.0/24 |
--hosts | Lista de IPs separadas por comas (mutuamente excluyente con --subnet) | --hosts 192.168.1.10,192.168.1.20 |
--user | Nombre de usuario SSH (obligatorio) | --user root |
--password | Contraseña SSH (opcional, usar si no hay clave) | --password secret123 |
--key | Ruta de la clave privada SSH | --key ~/.ssh/id_rsa |
--port | Puerto SSH (predeterminado: 22) | --port 2222 |
--threads | Número de hilos paralelos (predeterminado: 30) | --threads 50 |
--patch | Actualización automática del kernel en hosts vulnerables | --patch |
--reboot | Reinicio automático después del parcheo (usar con --patch) | --patch --reboot |
--mitigate | Aplicar mitigación temporal (desactivar algif_aead) | --mitigate |
--output | Exportar resultados del escaneo a un archivo JSON | --output resultados.json |
--yes | Omitir la solicitud de confirmación antes de parchear/mitigar | --yes |
python3 copyfail_scanner.py \
--subnet 192.168.1.0/24 \
--user ubuntu \
--key ~/.ssh/id_rsa
Salida: Muestra la tabla de resultados del escaneo y el resumen
python3 copyfail_scanner.py \
--hosts 10.0.1.5,10.0.1.6,10.0.1.7 \
--user admin \
--password my_password123
python3 copyfail_scanner.py \
--subnet 172.16.0.0/16 \
--user root \
--key ~/.ssh/id_rsa \
--mitigate
Acción: Escanea todos los hosts y luego desactiva el módulo algif_aead en los hosts vulnerables (solicita confirmación)
python3 copyfail_scanner.py \
--subnet 192.168.0.0/24 \
--user ubuntu \
--key ~/.ssh/id_rsa \
--patch
Acción: Actualiza el kernel, pero no reinicia automáticamente (requiere reinicio manual)