
Checker di sola lettura per CVE-2026-31431 (root locale algif_aead). Riporta lo stato del kernel/modulo e suggerisce mitigazioni.
Controllo in sola lettura per la vulnerabilità locale di root algif_aead (CVE-2026-31431). Esamina la configurazione del kernel, lo stato del modulo, la raggiungibilità dei socket AF_ALG e le eventuali mitigazioni che hai implementato, quindi stampa un verdetto. Non esegue codice di exploit.
Complementare a dirty-frag-check (CVE-2026-43284 / CVE-2026-43500).

Attenzione: si tratta di un'euristica. Un verdetto verde non è una garanzia. Confronta con l'avviso della tua distribuzione prima di dichiarare un host sicuro. MIT, senza garanzie.
curl -fsSL https://github.com/haydenjames/CVE-2026-31431-check/releases/latest/download/cve-2026-31431.sh | bash
Leggilo prima se non ti fidi del piping verso bash:
curl -fsSLO https://github.com/haydenjames/CVE-2026-31431-check/releases/latest/download/cve-2026-31431.sh
less cve-2026-31431.sh
chmod +x cve-2026-31431.sh && ./cve-2026-31431.sh
Fissa un tag di release per il controllo delle modifiche: https://raw.githubusercontent.com/haydenjames/CVE-2026-31431-check/v1.0.3/cve-2026-31431.sh.
-q per un output su una riga per host. -h per l'aiuto. Codice di uscita 0 ok, 1 vulnerabile, 2 sconosciuto.
-q stampa una riga per host, quindi puoi passarlo tramite pipe a qualsiasi esecutore remoto che già usi:
# parallel-ssh
parallel-ssh -h hosts.txt -i 'bash -s -- -q' < cve-2026-31431.sh
# ansible
ansible all -m script -a "cve-2026-31431.sh -q"
Anche i codici di uscita (0 ok, 1 vulnerabile, 2 sconosciuto) funzionano se i tuoi strumenti aggregano per stato.
bash 4+, oltre ai soliti awk/grep/sed/lsmod/modprobe. Se python3 è disponibile, testerà anche la raggiungibilità dei socket AF_ALG; altrimenti quel controllo viene saltato. Il controllo in sé non richiede root. L'applicazione della mitigazione sì.
algif_aead. Integrato, modulo caricabile, caricato o assente. Legge /boot/config-* o /proc/config.gz, con fallback su lsmod.
1b. Stato di authencesn. Secondo l'avviso upstream, questo è il modulo che contiene effettivamente il bug — algif_aead è un percorso di raggiungimento, IPsec un altro. Rilevato tramite lsmod/modinfo e la configurazione.modprobe -n -v. Segnala anche il trucco DefaultRestrictAddressFamilies di systemd [Manager] rotto che sta circolando — quella direttiva funziona solo sulle unità, non in system.conf.d. Riporta lo stato di SELinux e AppArmor.algif_aead è integrato. Verdetto best-effort; si basa sui codici di uscita di dnf check-update, che possono essere diversi da zero per motivi non correlati (rete, metadati obsoleti). Non dare per scontato di dover attendere senza controllare il tracker della tua distribuzione.Secondo l'avviso upstream, il bug vive in realtà nel modulo crittografico authencesn — algif_aead è solo uno dei percorsi di raggiungimento. Metti in blacklist entrambi per sicurezza:
sudo tee /etc/modprobe.d/disable-cve-2026-31431.conf <<'EOF'
install algif_aead /bin/false
install authencesn /bin/false
EOF
sudo rmmod authencesn algif_aead 2>/dev/null || true
Se rmmod dice "module is in use", qualcosa sulla macchina usa attivamente AF_ALG o IPsec (alcune VPN, crittografia del disco, strumenti di crittografia nello spazio utente). Non forzare lo scaricamento. Applica la patch e riavvia.
Se il codice vulnerabile è compilato nel tuo kernel, la blacklist non aiuta. Solo un aggiornamento del kernel lo risolve.
AlmaLinux 8, AlmaLinux 9.7, CentOS 7 (TuxCare ELS), Ubuntu 22.04, Ubuntu 24.04.
Segnalazioni di bug alla base della v1.0.1:
kmod di Ubuntu non veniva rilevato, causando falsi verdetti VULNERABLE su host Ubuntu aggiornati.MIT — vedi LICENSE.