
Utilità per Linux che verifica la disponibilità di `AF_ALG`/`algif_aead` e aiuta a valutare il rischio relativo a `CVE-2026-31431`.
Utilità diagnostica per Linux che verifica:
AF_ALG / algif_aead e aiuta a valutare il rischio relativo a CVE-2026-31431 (copy-fail);xfrm-ESP Page-Cache Write + RxRPC Page-Cache Write) tramite i componenti esp4, esp6, rxrpc e stampa le misure di mitigazione.Lo strumento è pensato per verifiche difensive e non è un exploit.
socket + bindAF_ALG AEAD/proc/modules, modules.builtin, modules.builtin.modinfo;rpm/changelog Debian);AF_ALG (/proc/*/fd, best effort);In aggiunta per Dirty Frag:
esp4, esp6, rxrpc (loaded / built-in / unknown);socket(AF_NETLINK, NETLINK_XFRM) e socket(AF_RXRPC) senza modificare la configurazione di sistema;1.24+;/proc/*/fd è meglio eseguire come root.L'entrypoint si trova nella radice del progetto, la compilazione viene eseguita dalla radice:
go build -o itsumma-afalg-check .
./itsumma-afalg-check
All'avvio:
Itsumma Security Check — AF_ALG / CVE-2026-31431
Successivamente:
AF_ALG (socket + bind);modules.builtin;af_alg e algif_aead (loaded / built-in / unknown);CVE-2026-31431 (incluso il tentativo di rilevare il backport vendor);AF_ALG (se trovati);cat /proc/cmdline
echo 3 | sudo tee /proc/sys/vm/drop_caches
modprobe -n -v algif_aead
lsmod | grep '^algif_aead\b' || echo 'algif_aead not loaded'
./itsumma-afalg-check
Per lo scenario built-in, invece di modprobe/lsmod, è utile verificare anche:
dmesg | grep -i 'algif_aead\|initcall_blacklist'
Comando tratto dal runbook pubblico Dirty Frag (disabilita il caricamento di esp4, esp6, rxrpc e tenta di scaricare i moduli già caricati).
Se IPSec / XFRM è in uso (ad esempio tramite strongSwan), prima di scaricare i moduli si consiglia di eseguire un flush:
sudo ip xfrm state flush
sudo ip xfrm policy flush
echo 3 | sudo tee /proc/sys/vm/drop_caches
Se esp4/esp6/rxrpc sono compilati come built-in (visibili solo in modules.builtin), modprobe blacklist e rmmod non li disabiliteranno: in questo caso è necessario un aggiornamento/ricompilazione del kernel.
Per strongSwan, dopo l'installazione di libcharon-extra-plugins, abilitare kernel-libipsec:
sudo sed -i 's/^\s*load\s*=\s*no/load = yes/' /etc/strongswan.d/charon/kernel-libipsec.conf
sudo systemctl restart strongswan || sudo systemctl restart strongswan-starter
lsmod | egrep '^(esp4|esp6|rxrpc)\b' || echo 'esp4/esp6/rxrpc not loaded'
sudo modprobe esp4 esp6 rxrpc || true
sudo modprobe -r esp6 rxrpc
sudo modprobe -r esp4 || true
sudo rmmod -f esp4
sudo sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp6 rxrpc 2>/dev/null; rmmod -f esp4 2>/dev/null; true"
Post-verifica:
modprobe -n -v esp4 esp6 rxrpc
lsmod | egrep '^(esp4|esp6|rxrpc)\b' || echo 'esp4/esp6/rxrpc not loaded'
./itsumma-afalg-check
algif_aead indica una superficie d'attacco, ma la conclusione finale dipende dalla versione del kernel e dalle patch backport della distribuzione.AF_ALG AEAD non riesce, nell'ambito di questa verifica il vettore è considerato non disponibile.