
Strumento diagnostico passivo che verifica se un sistema Linux è vulnerabile a CVE-2026-31431 testando la raggiungibilità dei socket AF_ALG, fornendo indicazioni di mitigazione e codici di uscita adatti all'integrazione CI.
Uno script Python semplice e sicuro che determina se un sistema Linux è vulnerabile a CVE-2026-31431 ("Copy Fail"), un'escalation di privilegi locale che colpisce tutte le principali distribuzioni dal kernel 4.14.
CVE-2026-31431 è un bug logico lineare nel modulo socket crittografico algif_aead del kernel Linux. Utilizzando i socket AF_ALG in combinazione con splice(), un attaccante non privilegiato può sovrascrivere 4 byte nella cache delle pagine di un binario setuid e ottenere i privilegi di root.
| Proprietà | Dettaglio |
|---|
| Condizione di race richiesta | ❌ No – lo sfruttamento è deterministico |
| Offset del kernel richiesti | ❌ No – non sono necessari offset specifici per versione |
| Complessità dello sfruttamento | Un singolo script Python di 732 byte è sufficiente per ottenere root |
| Questo verificatore | Solo diagnostica passiva – non attiva la vulnerabilità |
Lo script tenta di creare e associare un socket AF_ALG utilizzando il modello di algoritmo esatto su cui si basa la vulnerabilità:
authencesn(hmac(sha256),cbc(aes))
| Risultato | Significato |
|---|---|
| Socket creato e associato | Il percorso di codice vulnerabile è raggiungibile – applicare la patch immediatamente |
EAFNOSUPPORT (errno 97) | Modulo non caricato – superficie di attacco non disponibile |
Permission denied | La policy MAC (SELinux/AppArmor) blocca l'accesso – sicuro |
Lo script non attiva la vulnerabilità in alcun modo. È completamente passivo e sicuro da eseguire.
Clona il repository o scarica check_copyfail.py, quindi esegui:
python3 check_copyfail.py
____ _____ _ _
/ ___|___ _ __ _ _| ___|_ _(_) |
| | / _ \| '_ \| | | | |_ / _` | | |
| |__| (_) | |_) | |_| | _| (_| | | |
\____\___/| .__/ \__, |_| \__,_|_|_|
|_| |___/
CVE-2026-31431 "Copy Fail" – Verificatore di Raggiungibilità
Phalanx CCS / d_0_4 | Solo uso difensivo
-------------------------------------------------------
Versione kernel: 6.1.0-28-amd64
Intervallo versioni: Intervallo potenzialmente interessato
Target AF_ALG : authencesn(hmac(sha256),cbc(aes))
[!!!] SUPERFICIE DI ATTACCO VULNERABILE RAGGIUNGIBILE
Socket creato e associato – AF_ALG raggiungibile
Mitigazione immediata:
echo 'install algif_aead /bin/false' | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null
Quindi aggiorna il kernel appena le patch saranno disponibili.
Fix a monte: commit a664bf3d603d
Lo script termina con codice 1 se la superficie di attacco è raggiungibile e 0 se il sistema è sicuro — rendendolo adatto all'uso in script di shell, playbook Ansible e pipeline CI.
Fino a quando non sarà disponibile un aggiornamento del kernel, disabilita il modulo vulnerabile:
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null
Il fix ufficiale è il commit a664bf3d603d nel kernel principale. Aggiorna tramite il gestore pacchetti della tua distribuzione appena le patch saranno disponibili.
Questo verificatore segnalerà sempre "sicuro" sui moderni dispositivi Android (incluso Termux). Il socket AF_ALG non è disponibile per le app non privilegiate a causa delle policy SELinux obbligatorie, quindi la vulnerabilità non è sfruttabile sulle build Android standard.
Questo progetto è concesso in licenza sotto la MIT License – consulta LICENSE per i dettagli. Sentiti libero di usarlo, modificarlo e distribuirlo.
Disclaimer: Questo strumento è destinato esclusivamente a scopi di diagnostica difensiva.
Non utilizzarlo su sistemi che non possiedi o senza un'autorizzazione scritta esplicita.