- Pubblicato il
Copy Fail CVE-2026-31431: cosa fa davvero il workaround su algif_aead
- Autori

- Nome
- Alessandro Iannacone
- Profilo X
Copy Fail, tracciata come CVE-2026-31431, e una vulnerabilita del kernel Linux resa pubblica il 29 aprile 2026. Il punto importante non e il nome, ma il tipo di rischio: un utente locale non privilegiato puo arrivare a privilegi root sfruttando il percorso AF_ALG / algif_aead.
Non e una vulnerabilita remota da sola. Diventa pero molto seria su:
- server dove un attaccante puo gia eseguire codice come utente applicativo
- host multiutente
- nodi Docker/Kubernetes
- runner CI/CD
- ambienti di hosting o staging dove girano workload non completamente fidati
La correzione definitiva è aggiornare il kernel a una versione che include il fix upstream e poi riavviare nel kernel corretto. Il workaround:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true
serve invece a ridurre il rischio prima della patch o mentre si pianifica il reboot.
Il problema in breve
algif_aead e un modulo del kernel collegato all'interfaccia crypto userspace AF_ALG. La vulnerabilita nasce da una gestione insicura delle operazioni AEAD in-place: in certe condizioni, pagine provenienti dalla page cache possono finire in una lista di destinazione scrivibile.
Tradotto in modo operativo: un processo locale puo ottenere una primitiva di scrittura limitata ma sufficiente a corrompere in memoria parti di file leggibili, inclusi binari setuid. Da li il salto a root diventa realistico.
Il dettaglio che rende Copy Fail pericolosa e che la modifica avviene nella page cache, non necessariamente sul file a disco. Questo significa che strumenti basati solo su checksum del file system possono non vedere subito la manomissione, perche il contenuto persistente del file puo rimanere invariato.
Cosa fa la prima riga del workaround
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
Questa riga crea una regola per modprobe.
Quando qualcuno prova a caricare il modulo algif_aead, invece di eseguire il caricamento normale, modprobe esegue:
/bin/false
/bin/false termina sempre con errore. Risultato: il caricamento del modulo fallisce.
Quindi questa riga non rimuove il modulo se e gia attivo. Impedisce i caricamenti futuri gestiti tramite modprobe.
E una mitigazione persistente rispetto al riavvio, perche il file resta in /etc/modprobe.d/. Al reboot, se qualche applicazione o servizio prova ad attivare algif_aead, la richiesta viene bloccata.
Cosa fa la seconda riga
rmmod algif_aead 2>/dev/null || true
Questa riga prova a rimuovere il modulo gia caricato dal kernel.
La parte:
2>/dev/null
nasconde gli errori su standard error.
La parte:
|| true
fa in modo che lo script non fallisca anche se rmmod non riesce.
Questo e comodo in automazione, ma ha un limite: puo nascondere un problema reale. Ad esempio rmmod puo fallire se:
- il modulo non e caricato
- il modulo e in uso
- il comando non viene eseguito con privilegi sufficienti
- il kernel o la distribuzione hanno dipendenze/caricamenti particolari
Per questo, dopo il workaround, bisogna sempre verificare lo stato del modulo.
Verifica dopo il workaround
Controllo minimo:
grep -qE '^algif_aead ' /proc/modules && echo "algif_aead e caricato" || echo "algif_aead non e caricato"
Oppure:
lsmod | grep '^algif_aead'
Se non viene restituita alcuna riga, il modulo non risulta caricato.
Conviene anche verificare la regola:
cat /etc/modprobe.d/disable-algif.conf
Output atteso:
install algif_aead /bin/false
Se algif_aead resta caricato, pianifica un reboot o verifica quali processi lo stanno usando. Su sistemi critici, non dare per applicata la mitigazione solo perche il comando non ha stampato errori.
Patch batte workaround
Il workaround e utile, ma non va confuso con il fix.
La priorita corretta e:
- aggiornare i pacchetti kernel della distribuzione
- riavviare nel kernel corretto
- verificare con
uname -ae con gli advisory del vendor - mantenere il workaround solo se consigliato dal vendor o se serve come controllo temporaneo
Il fix upstream citato nei bollettini riporta algif_aead a un comportamento out-of-place, eliminando la complessita introdotta dalla vecchia ottimizzazione in-place. In pratica: non si cerca di "convivere" con il bug, si rimuove la condizione che lo rende sfruttabile.
Impatto operativo: cosa puo rompersi?
Disabilitare algif_aead puo impattare software che usa direttamente l'interfaccia kernel AF_ALG per operazioni AEAD. Nella maggior parte dei server applicativi comuni, l'effetto pratico dovrebbe essere limitato o nullo, perche molte applicazioni usano librerie crypto in userspace come OpenSSL, GnuTLS o librerie equivalenti.
Non va pero trattato come comando "universale e invisibile". Prima di applicarlo in massa:
- testa su un nodo non critico
- controlla servizi VPN, appliance software, stack storage e componenti custom
- monitora errori crypto o fallback dopo il reboot
- mantieni una finestra di rollback
Se il vendor della distribuzione ha gia rilasciato una mitigazione via pacchetto kmod o kernel aggiornato, usa quella strada invece di creare varianti manuali diverse su ogni host.
Dove intervenire prima
La priorita non e uguale su tutti i sistemi.
Partirei da:
- nodi Kubernetes e Docker che eseguono workload non fidati
- runner CI/CD self-hosted
- bastion host e server multiutente
- web server dove una RCE applicativa diventerebbe accesso locale
- ambienti shared hosting
Su laptop personali e server single-user il rischio puo essere piu basso, ma non nullo: se un malware o un processo compromesso gira come utente normale, una LPE affidabile cambia rapidamente il perimetro.
Checklist pratica
# 1. Verifica kernel attuale
uname -a
# 2. Applica aggiornamenti kernel dal vendor
# Esempio Debian/Ubuntu:
apt update && apt upgrade
# 3. Se non puoi patchare subito, disabilita il caricamento del modulo
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
# 4. Prova a scaricare il modulo gia attivo
rmmod algif_aead 2>/dev/null || true
# 5. Verifica
grep -qE '^algif_aead ' /proc/modules && echo "algif_aead e caricato" || echo "algif_aead non e caricato"
# 6. Riavvia appena possibile dopo patch o mitigazione
reboot
Nota: su sistemi Ubuntu, Canonical ha documentato anche una mitigazione tramite aggiornamento del pacchetto kmod che disabilita il modulo vulnerabile. Quando disponibile, e preferibile applicare il percorso ufficiale della distribuzione.
Conclusione
Copy Fail va trattata come una vulnerabilita da correggere velocemente, non come un semplice "alert da backlog". Il workaround con:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true
ha senso come contenimento immediato per bloccare algif_aead, ma richiede verifica. La prima riga impedisce caricamenti futuri, la seconda prova a rimuovere il modulo gia caricato. Se il modulo resta attivo, il rischio non e mitigato.
La soluzione corretta resta: aggiornare il kernel, riavviare, verificare.