
Asistente de postura SSH para CVE-2026-31431 (Copy Fail): inventario del kernel y algif_aead
Ayudante de Bash: descubre hosts (opcionalmente CIDR mediante nmap), luego realiza comprobaciones SSH de solo lectura para CVE-2026-31431 (Copy Fail / algif_aead), CVE-2026-31677 / CVE-2026-43077 (heurísticas AF_ALG RX), CVE-2026-23111 (nftables + espacios de usuario), CVE-2026-23102 (arm64 SVE/SME). Solo heurísticas — no es un exploit; confirme con su distribuidor.
Tratar como sensible: archivo de contraseñas en disco; la salida lista hosts y estado del kernel.
| Componente | Cuándo |
|---|---|
bash, ssh, sshpass | Siempre |
nmap | Objetivos CIDR: necesario para nmap -sn -PS22. Con COPYFAIL_PREAUTH_NMAP=1 (por defecto), también nmap -p22 -sV por host después del banner SSH — más lento, pero ayuda a detectar macOS/Windows. Establezca COPYFAIL_PREAUTH_NMAP=0 para omitir nmap por host (aún necesita nmap para un barrido CIDR). |
sudo cp copyfail-creds.example /etc/copyfail-creds && sudo nano /etc/copyfail-credsusuario:contraseña (solo el primer : separa usuario de contraseña).600 requerido: sudo chmod 600 /etc/copyfail-credssudo (o chown a su usuario, aún 600).CREDS_FILE=/path/to/creds ./copyfail_scan.sh [TARGET]
TARGET: CIDR, IP única/nombre de host, o ruta a una lista de hosts (# comentarios válidos). Si se omite, usa el valor por defecto del script (ver TARGET= en copyfail_scan.sh).
chmod +x copyfail_scan.sh
sudo CREDS_FILE=/etc/copyfail-creds ./copyfail_scan.sh
sudo CREDS_FILE=/etc/copyfail-creds ./copyfail_scan.sh 192.168.1.0/24
CREDS_FILE=~/creds ./copyfail_scan.sh ./hosts.txt
Salida: solo stdout (sin archivo de informe). Use tee para guardar. Después de las líneas por host: === Summary report === (a menos que COPYFAIL_SUMMARY=0) — Confirmado bueno vs Requiere revisión; los hosts que comparten la misma línea de resumen se fusionan (etiquetas separadas por comas).
# Ejemplo: sin nmap por host, secuencial
COPYFAIL_PREAUTH_NMAP=0 COPYFAIL_PARALLEL=1 sudo ./copyfail_scan.sh 192.168.54.93
31431 PATCHED, 31431 VULN - MITIGATED, 31431 NO algif_aead - VERIFY, [SKIP] / [SKIP - PRE-AUTH] son heurísticas del script; 23111= / 23102= campos finales resumen sondas nftables/user-ns y arm64 SVE.*-pve / de proveedor: uname -r puede no coincidir con los tuplas NVD ascendentes — use avisos de seguridad de la distribución/Proxmox y paquetes de kernel instalados, no solo este script.echo 'install algif_aead /bin/false' | sudo tee /etc/modprobe.d/disable-algif.conf && sudo rmmod algif_aead 2>/dev/nullMIT — vea LICENSE.
| Variable | Valor por defecto | Función |
|---|
CREDS_FILE | /etc/copyfail-creds | archivo user:password |
COPYFAIL_PREAUTH | 1 | banner SSH TCP/22; omitir no-Linux obvio antes del inicio de sesión |
COPYFAIL_PREAUTH_NMAP | 1 | Extra nmap -p22 -sV cuando el banner no es concluyente (más lento) |
COPYFAIL_PREAUTH_VERBOSE | 0 | 1 = mostrar banner truncado en omisiones de pre-autenticación |
COPYFAIL_PARALLEL | 24 | Máximo de sondeos concurrentes (1 = secuencial) |
COPYFAIL_ORDERED_OUTPUT | 1 | Cuando es paralelo, almacenar líneas en orden de sondeo (0 = intercalado) |
COPYFAIL_PTR_LOOKUP | 1 | DNS inverso IPv4 mediante getent cuando nmap/lista no tiene nombre |
COPYFAIL_SUMMARY | 1 | Imprimir resumen final agrupado (0 = omitir) |
COPYFAIL_BANNER_TIMEOUT | 3 | Segundos de espera para identificación SSH en el puerto 22 |
COPYFAIL_SSH_CONNECT_TIMEOUT | 3 | ssh ConnectTimeout (segundos) |
COPYFAIL_NO_BANNER_SKIP_SSH | 1 | Si pre-autenticación no ve banner, omitir intento SSH (0 si los banners son muy lentos) |