
CVE-2026-31431 Copy Fail — tester LPE del kernel Linux tramite MCP
📖 Guida all'installazione — avvio rapido, configurazione manuale e risoluzione dei problemi
CVE-2026-31431 — La peggiore vulnerabilità Linux mai scoperta. Ora controllabile tramite MCP.
732 byte di Python. Nessuna compilazione. Nessuna race condition. Nessun offset per distro. Un colpo solo, root universale su ogni kernel Linux compilato dal 2017.
Questo strumento è un server MCP + dashboard web che verifica qualsiasi sistema Linux raggiungibile per la vulnerabilità. È stato creato perché il PoC originale è già banale da usare — questo aggiunge solo una UI, la scansione di rete e il monitoraggio della flotta.
AVVERTENZA: Questa è una vera LPE del kernel. Usala solo su sistemi di tua proprietà o per i quali hai esplicita autorizzazione scritta al test. L'uso non autorizzato è un reato nella maggior parte delle giurisdizioni.
1. È stata scoperta da un'AI in un'ora.
La piattaforma Xint Code di Theori ha scansionato il sottosistema Linux crypto/ con un
singolo prompt dell'operatore. Un'ora dopo, aveva una LPE universale che era sfuggita a
ogni revisore umano, strumento di analisi statica e fuzzer per nove anni. Il bug esisteva
dal 2017 e richiedeva un ragionamento cross-sottosistema (provenienza della socket AF_ALG +
comportamento di scrittura scratch di authencesn) — esattamente il tipo di connessione in
cui gli strumenti nativi LLM eccellono. Il costo della scoperta è stato trascurabile. Le
implicazioni per il panorama delle vulnerabilità sono esistenziali.
2. L'exploit è di 732 byte di Python puro, senza dipendenze. Nessuna toolchain di compilazione necessaria. Nessuna libreria da installare. Nessun offset specifico per architettura. Funziona in modo identico su server x86_64, router aarch64, dispositivi NAS ARM e qualsiasi altro hardware Linux con Python 3.10+. Puoi incollarlo in una web shell, inviarlo via netcat o scriverlo da una chiavetta USB. La barriera alla weaponizzazione è di fatto zero.
3. Non lascia tracce su disco.
L'exploit corrompe solo la page cache in memoria del kernel. Il binario su disco di
/usr/bin/su non viene mai modificato. Ogni strumento di integrità dei file che funziona
confrontando i checksum su disco — AIDE, Tripwire, dm-verity — non vede nulla di anomalo.
La corruzione scompare al riavvio. L'unico modo per rilevare che un exploit è stato
eseguito è catturarlo in volo tramite auditd o eBPF. Ai fini forensi, l'exploit è invisibile.
4. Miliardi di dispositivi non verranno mai patchati.
Le principali distribuzioni (Ubuntu, RHEL, Debian, SUSE) hanno rilasciato patch entro 72 ore.
Ma il bug del kernel è incorporato in ogni dispositivo Linux costruito dal 2017 che ha
CONFIG_CRYPTO_USER_API_AEAD=y — che è praticamente tutti. Router OpenWrt (nessuna patch al
2026-05-02). Telecamere IP con kernel del vendor del 2019. Smart TV con rami firmware congelati.
Pompe per infusione medica che richiedono una nuova certificazione FDA per ogni aggiornamento.
Controller industriali con cicli di supporto di 10 anni. I dispositivi Android sono protetti
da una restrizione accidentale dei criteri SELinux — non da una correzione del kernel — e i
dispositivi rooted/con ROM personalizzata, i vecchi Fire tablet e le Android TV stick sono
completamente esposti. Il numero complessivo non è di milioni. È di miliardi. E per la maggior
parte di essi, la patch non arriverà mai.
Questo è uno strumento di test di sicurezza e sensibilizzazione costruito attorno al PoC pubblico. Non fa nulla che lo script originale di 732 byte non faccia già. Ciò che aggiunge:
L'exploit stesso è pubblico, banalmente copiabile e non si può fare come se non fosse mai stato trovato. Questo strumento esiste per rendere i test rapidi e sicuri per chi ha l'autorizzazione a testare.
git clone https://github.com/sandraschi/copy-fail-mcp
cd copy-fail-mcp
just
Questo apre una dashboard interattiva che mostra tutti i comandi disponibili. Esegui
just bootstrap per installare le dipendenze, poi just serve o just dev per avviare.
Se non hai just installato:
pip install copy-fail-mcp
copy-fail check --host 192.168.1.100
copy-fail serve --http --port 10955
User → AF_ALG socket (authencesn) → splice() target file → HMAC fails
↓
4 bytes written past AEAD boundary
↓
Into page cache of /usr/bin/su
↓
su is now corrupted in memory
↓
Run su → root shell
Il bug: due comportamenti dei sottosistemi che erano innocui singolarmente diventano letali quando combinati. Il percorso splice di AF_ALG espone le pagine della page cache come output scrivibile. authencesn scrive 4 byte oltre il legittimo limite AEAD come spazio scratch. Mettili insieme e puoi corrompere la rappresentazione in memoria di qualsiasi file leggibile con dati controllati con precisione. L'exploit prende di mira il controllo dei permessi di /usr/bin/su.
MIT. Lo script dell'exploit è di Taeyang Lee / Theori / Xint Code Research Team (PoC originale).
| Proprietà | Copy Fail | Dirty COW (2016) | Dirty Pipe (2022) |
|---|
| Dimensione exploit | 732 byte (stdlib Python) | ~200 righe di C | ~100 righe di C |
| Compilazione necessaria | No — Python puro | Sì — compila C | Sì — compila C |
| Race condition | No — deterministico | Sì — finestra di race | No |
| Offset per distro | Nessuno — stesso script ovunque | Nessuno | Nessuno |
| Traccia su disco | No — solo page cache, checksum puliti | No | No |
| Evasione dal container | Sì — page cache condivisa | Sì | Sì |
| Versioni del kernel | >= 4.14 (2017–presente) | >= 2.6.22 (2007–2018) | >= 5.8 (2020–2022) |
| Dispositivi interessati | Miliardi (in continua crescita) | Corretto nel 2018 | Corretto nel 2022 |
| Non verranno mai patchati | Miliardi di router IoT/embedded | Per lo più patchati | Per lo più patchati |
| Scoperto da | AI (Xint Code, scansione di 1 ora) | Ricercatore umano | Ricercatore umano |
| Costo della scoperta | ~$6 di calcolo cloud | Mesi di lavoro umano | Mesi di lavoro umano |
| Tool | Descrizione | Accesso |
|---|
cf_scan_network | Sonda la sottorete /24 per host SSH, identifica Linux | Diretto (TCP asincrono) |
cf_check_target | Controlla kernel, configurazione AEAD, stato delle patch della distribuzione | SSH agent |
cf_run_exploit | Distribuisce il PoC via SSH, esegue, riporta root | SSH agent |
cf_assess | Controllo + exploit in un solo passaggio | SSH agent |
cf_apply_mitigation | Blacklist del modulo o blacklist initcall | SSH agent |
cf_get_exploit_script | Restituisce il PoC grezzo di 732 byte come testo | Qualsiasi canale |
cf_exploit_local | Scrive il PoC in un percorso locale per la distribuzione manuale | Shell locale |