
Helper per la postura SSH per CVE-2026-31431 (Copy Fail): inventario di kernel e algif_aead
Helper Bash: rileva gli host (opzionale CIDR via nmap), quindi esegue controlli SSH di sola lettura per CVE-2026-31431 (Copy Fail / algif_aead), CVE-2026-31677 / CVE-2026-43077 (euristiche AF_ALG RX), CVE-2026-23111 (nftables + namespace utente), CVE-2026-23102 (arm64 SVE/SME). Solo euristiche — non è un exploit; conferma con il tuo distributore.
Da trattare come sensibile: file delle password su disco; l'output elenca host e postura del kernel.
| Componente | Quando |
|---|---|
bash, ssh, sshpass | Sempre |
nmap | Obiettivi CIDR: richiesto per nmap -sn -PS22. Con COPYFAIL_PREAUTH_NMAP=1 (predefinito), esegue anche nmap -p22 -sV per ogni host dopo il banner SSH — più lento, ma aiuta a individuare macOS/Windows. Imposta COPYFAIL_PREAUTH_NMAP=0 per saltare nmap per host (hai comunque bisogno di nmap per una scansione CIDR). |
sudo cp copyfail-creds.example /etc/copyfail-creds && sudo nano /etc/copyfail-credsuser:password per riga (solo il primo : separa l'utente dalla password).600 richiesta: sudo chmod 600 /etc/copyfail-credssudo (o chown al tuo utente, sempre 600).CREDS_FILE=/path/to/creds ./copyfail_scan.sh [TARGET]
TARGET: CIDR, singolo IP/hostname o percorso di un file di host (i commenti # sono ammessi). Se omesso, viene usato il target predefinito dello script (vedi TARGET= in 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
Output: solo stdout (nessun file di report). Usa tee per salvare. Dopo le righe per host: === Summary report === (a meno di COPYFAIL_SUMMARY=0) — Confermati buoni vs Da controllare; gli host che condividono la stessa riga di riepilogo vengono uniti (etichette separate da virgola).
# Esempio: nessun nmap per host, sequenziale
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] sono euristiche dello script; i campi finali 23111= / 23102= riassumono le sonde nftables/user-ns e arm64 SVE.*-pve / kernel del vendor: uname -r potrebbe non corrispondere alle tuple NVD upstream — usa gli avvisi di sicurezza distro/Proxmox e i pacchetti del kernel installati, non solo questo script.echo 'install algif_aead /bin/false' | sudo tee /etc/modprobe.d/disable-algif.conf && sudo rmmod algif_aead 2>/dev/nullMIT — vedi LICENSE.
| Variabile | Predefinito | Ruolo |
|---|
CREDS_FILE | /etc/copyfail-creds | file user:password |
COPYFAIL_PREAUTH | 1 | banner SSH TCP/22; salta i non-Linux evidenti prima del login |
COPYFAIL_PREAUTH_NMAP | 1 | nmap -p22 -sV aggiuntivo quando il banner non è conclusivo (più lento) |
COPYFAIL_PREAUTH_VERBOSE | 0 | 1 = mostra il banner troncato nei salti pre-autenticazione |
COPYFAIL_PARALLEL | 24 | Massimo di sonde concorrenti (1 = sequenziale) |
COPYFAIL_ORDERED_OUTPUT | 1 | Quando in parallelo, bufferizza le righe nell'ordine dei probe (0 = interallacciate) |
COPYFAIL_PTR_LOOKUP | 1 | DNS inverso IPv4 tramite getent quando nmap/lista non ha un nome |
COPYFAIL_SUMMARY | 1 | Stampa il riepilogo finale raggruppato (0 = salta) |
COPYFAIL_BANNER_TIMEOUT | 3 | Secondi di attesa per l'identificazione SSH sulla porta 22 |
COPYFAIL_SSH_CONNECT_TIMEOUT | 3 | ssh ConnectTimeout (secondi) |
COPYFAIL_NO_BANNER_SKIP_SSH | 1 | Se la pre-autenticazione non rileva alcun banner, salta il tentativo SSH (0 se i banner sono molto lenti) |