
Riprodotta la LPE senza file CVE‑2026‑31431 (“Copy Fail”) su Kali Linux, quindi costruiti rilevamenti auditd, Sigma e YARA per intercettare questo exploit stealth del kernel che non lascia tracce su disco.
Questo repository documenta la riproduzione end-to-end, l'ingegneria del rilevamento e la risposta agli incidenti per CVE-2026-31431 ("Copy Fail"), una critica vulnerabilità di escalation dei privilegi locale nel kernel Linux che interessa i kernel dalla versione 4.14 fino alla 7.0-rc.
Copy Fail è un difetto logico, non una corruzione di memoria. È deterministico, interessa praticamente ogni distribuzione Linux rilasciata dal 2017, ed è completamente fileless—il tradizionale monitoraggio dell'integrità dei file (AIDE, Tripwire) non può vederlo. Un proof-of-concept funzionante occupa solo 732 byte di Python.
| Componente | Dettagli |
|---|---|
| Hypervisor | VirtualBox |
| VM target | Kali Linux 2026.1 |
| Kernel | 6.18.12+kali-amd64 |
| PoC dell'exploit | theori-io/copy-fail-CVE-2026-31431 |
| Rilevamento | auditd, Sigma, YARA |
Il laboratorio inizia confermando che il target esegua un kernel vulnerabile.
Dettagli del kernel e della release Kali Linux 2026.1.
Output di uname -r che mostra il kernel vulnerabile 6.18.12+kali-amd64.
L'exploit richiede il modulo kernel algif_aead e il template crittografico authencesn.
Modulo Caricato
lsmod e modinfo confermano che algif_aead è disponibile; /proc/crypto mostra il template vulnerabile authencesn.
Il PoC utilizza os.splice, che richiede Python 3.10+. Verifichiamo l'interprete.
Versione Python Python 3.12 è installato e pronto.
Prima di eseguire l'exploit completo, un controllo sicuro conferma che il sistema è vulnerabile.
Il checker riporta "potenzialmente vulnerabile", aprendo la strada allo sfruttamento.
Viene creato un account testuser non privilegiato per simulare un attaccante senza diritti speciali.
id mostra UID 1001, confermando l'accesso non root.
Il PoC ufficiale di Theori viene clonato ed eseguito dall'account non privilegiato.
Repository dell'exploit clonato con successo.
Esecuzione Exploit
L'exploit Python sovrascrive la cache delle pagine e fa detonare il binario /usr/bin/su corrotto.
L'output di whoami e id prova l'escalation completa a root.
L'exploit corrompe solo la cache delle pagine in memoria. Il file /usr/bin/su su disco mantiene il suo checksum originale.
SHA256 Match
Il sha256sum corrisponde all'hash del pacchetto originale anche dopo lo sfruttamento, confermando l'assenza di modifiche su disco.
Copy Fail non può essere rilevato dal monitoraggio dell'integrità dei file. Invece, ci concentriamo sulle primitive a livello di syscall che utilizza.
Implementiamo regole auditd personalizzate che si attivano per:
AF_ALG (famiglia 38)splice()
Tutte le regole personalizzate sono attive, verificate con auditctl -l.
Dopo aver eseguito l'exploit una seconda volta, vediamo alert per le syscall esatte utilizzate:
ausearch mostra un evento di creazione socket AF_ALG dal processo testuser.
ausearch mostra un evento splice() dallo stesso PID, una forte correlazione.
Una regola Sigma traduce i risultati di auditd in un formato SIEM vendor-neutral.
Regola YAML Sigma che rileva la creazione di socket AF_ALG e le chiamate splice().
Una regola YARA aiuta a identificare il codice dell'exploit Copy Fail su disco.
Regola YARA che corrisponde alla stringa authencesn, alle costanti dei socket e ai riferimenti a splice() trovati nei PoC.
Un report completo di risposta agli incidenti è disponibile in reports/incident-copy-fail.md. Include:
Mitigazione immediata (senza bisogno di riavvio):
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.conf
sudo rmmod algif_aead
| Livello | Cosa Vede | Stato |
|---|
| auditd | Socket AF_ALG + syscall splice | ✅ Implementato |
| Sigma | Pattern di syscall tramite SIEM | ✅ Regola pronta |
| YARA | Codice PoC su disco | ✅ Regola pronta |
| FIM (AIDE/Tripwire) | Modifiche ai file | ❌ Cieco – nessuna scrittura su disco |