
Strumento di rilevamento e mitigazione delle vulnerabilità per i bug Copy Fail e Dirty Frag (CVE-2026-31431, CVE-2026-43284, CVE-2026-43500)
Controlla un host Linux remoto via SSH per le vulnerabilità dei moduli del kernel Copy Fail e Dirty Frag e, opzionalmente, applica le mitigazioni:
| CVE | Name | Moduli interessati |
|---|---|---|
| CVE-2026-31431 | Copy Fail | algif_aead |
| CVE-2026-43284 | Dirty Frag (IPsec) | esp4, esp6, ipcomp4, ipcomp6, xfrm_user |
| CVE-2026-43500 | Dirty Frag (RxRPC) | rxrpc, kafs |
Per ogni modulo interessato, vcheck segnala se è attualmente caricato, se è compilato nel kernel in esecuzione, se ci sono tracce passate nei log del kernel, se ci sono socket AF_ALG attivi (solo per Copy Fail) e se è già in blacklist in /etc/modprobe.d/.
Con -fix, vcheck riporta lo stato iniziale, scrive un file cve-XXXX-XXXXX-disable.conf per ogni modulo non ancora in blacklist, quindi riesegue i controlli e riporta lo stato finale. Con
-fix -unload, vcheck tenta anche di scaricare i moduli interessati già caricati prima della correzione, quindi usa la scansione finale per verificare se sono ancora caricati. Con -fix -rebuild-initramfs, vcheck
ricostruisce l'initramfs per il kernel attualmente in esecuzione (solo) dopo la scrittura di un file, in modo che la blacklist venga inclusa nella prossima immagine di avvio. Le voci del kernel meno recenti mantengono il loro initramfs originale come ripiego.
-fix solo dopo un'esecuzione di solo controlloEsegui sempre vcheck prima senza -fix. Leggi il rapporto e conferma che i moduli interessati possano essere disabilitati in sicurezza su questo host prima di rieseguire con -fix. Disabilitare moduli del kernel da cui dipendono workload legittimi può avere impatto sugli utenti e rompere le applicazioni.
In particolare:
-fix sicuro solo quando nessuno dei moduli interessati è attualmente caricato — cioè ogni modulo è segnalato come mitigated o module not blacklisted (nessuna riga VULNERABLE o
blacklisted but currently loaded). Un modulo caricato significa quasi sempre che qualcosa sull'host lo sta usando attivamente; verificalo prima di metterlo in blacklist.esp4, esp6, ipcomp4, ipcomp6, xfrm_user) sono necessari per qualsiasi implementazione IPsec/strongSwan/WireGuard-over-IPsec/IKE. I moduli ipcomp4/ipcomp6 implementano la
compressione del payload IPComp e possono essere negoziati automaticamente come parte di una SA IPsec anche se non configurati esplicitamente. Non metterli in blacklist su un gateway VPN, un endpoint IPsec o ovunque ip xfrm policy
restituisca regole. Nota che il modulo framework xfrm_algo è volutamente non in questo elenco — secondo le indicazioni dei vendor (Red Hat, Ubuntu, AWS), bloccare i moduli dei protocolli ESP e IPComp più
l'interfaccia di configurazione netlink xfrm_user è sufficiente, e mettere in blacklist xfrm_algo romperebbe ogni altra trasformazione xfrm senza alcun beneficio aggiuntivo.rxrpc, kafs) sono necessari per qualsiasi host che monta filesystem AFS. Disabilitarli romperà quei mount al prossimo avvio.algif_aead espone la crittografia del kernel tramite la famiglia di socket AF_ALG. È usato raramente direttamente dal codice delle applicazioni, ma verifica elencando i socket attivi (ss -p --af-alg) e controllando i consumatori
in spazio utente prima di metterlo in blacklist.I file di blacklist scritti da vcheck hanno effetto solo al momento del caricamento del modulo (in genere al riavvio successivo, oppure con modprobe -r <module> a sistema inattivo). Un modulo già caricato continuerà a funzionare
anche dopo -fix — vcheck lo segnalerà come blacklisted but currently loaded; run 'modprobe -r' or reboot. Passare -unload insieme a -fix chiede a vcheck di eseguire modprobe -r per i moduli interessati caricati
dopo la scrittura dei file di blacklist. Usalo solo quando hai confermato che i moduli possono essere rimossi in sicurezza dal kernel in esecuzione.
Passare -rebuild-initramfs insieme a -fix rigenera l'initramfs solo per il kernel attualmente in esecuzione (update-initramfs -u -k $(uname -r) su Debian/Ubuntu, dracut -f --kver $(uname -r) su
RHEL/Fedora). Gli altri kernel installati mantengono intatto il proprio initramfs, quindi se qualcosa va storto dopo il riavvio puoi scegliere una voce kernel meno recente dal menu di avvio e recuperare. Le future installazioni
del kernel ricostruiscono il proprio initramfs a partire dallo stato corrente di /etc/modprobe.d/, quindi la blacklist si propaga automaticamente senza dover rieseguire vcheck. Se non sono presenti né update-initramfs né dracut
(ad es. Arch, Alpine, immagini immutabili), vcheck avvisa e continua — ricostruisci manualmente con lo strumento della distribuzione prima di riavviare.
La ricostruzione può richiedere alcuni minuti (soprattutto dracut su host con molti driver), il che supererebbe il timeout diagnostico -command-timeout. Viene eseguita con un proprio -initramfs-timeout (default 10m),
così la ricostruzione ha tutto il tempo necessario mentre i controlli rapidi mantengono il loro budget ridotto. Aumenta -initramfs-timeout per hardware lento, oppure passa 0 per disabilitare completamente il timeout. Durante i comandi remoti
di lunga durata, vcheck invia richieste keepalive SSH ogni 30s di default per evitare che i timer di inattività NAT/firewall interrompano la connessione. Regola questo valore con -ssh-keepalive, oppure passa 0 per disabilitarlo.
Homebrew (macOS):
brew install --cask krisiasty/tap/vcheck
Binari precompilati per Linux, macOS e Windows sono pubblicati nella pagina delle release.
Dal sorgente (richiede Go 1.26+):
go install github.com/krisiasty/vcheck@latest
vcheck -host HOST [flags]