
Analyse - POC - Minderung
Nur zu Bildungszwecken. Nicht auf Systemen ohne ausdrückliche Genehmigung verwenden.
| Feld | Wert |
|---|---|
| CVE | CVE-2026-31431 |
| Alias | Copy Fail |
| CVSS | 7.8 (High) |
| Typ | Local Privilege Escalation (LPE) |
| Betroffener Kernel | 2017 – 2026 (commit 72548b093ee3 und später) |
| Upstream-Fix | commit a664bf3d603d (Rücknahme von 2017) |
| Veröffentlichung | 29. April 2026 (Theori / Xint Code) |
Copy Fail ist ein deterministischer logischer Fehler (keine Race Conditions erforderlich) im kryptografischen Subsystem des Linux-Kernels. Er erlaubt einem unprivilegierten Benutzer, 4 kontrollierte Bytes in den Page Cache jeder lesbaren Datei des Systems zu schreiben, einschließlich setuid-Binärdateien wie su oder sudo.
Linux kernel — crypto/authencesn.c
└── algif_aead (AF_ALG-Modul)
└── In-Place-Optimierung (Commit 72548b093ee3, 2017)
└── AEAD-Scratch-Schreiben → überschreitet Scatterlist-Grenze
└── schreibt 4 Bytes in den Page Cache einer externen Datei
Betroffene Distributionen: Ubuntu, Debian, RHEL, Amazon Linux, SUSE, Fedora, Arch, AlmaLinux — jede Distribution mit Kernel ≥ 2017.
Im Jahr 2017 wurde eine Optimierung eingeführt, die bewirkt, dass req->src und req->dst auf dieselbe kombinierte Scatterlist zeigen. Dies führt dazu, dass die Seiten des Page Cache (von splice() stammend) direkt in der beschreibbaren Ziel-Scatterlist verkettet werden.
splice() verwenden, um Seiten des Page Cache des Ziel-Binärs in den AF_ALG-Socket zu speisen (z.B. /usr/bin/sudo)authencesn verwendet den Zielpuffer als Scratch-Pad → schreibt seqno_hi (4 kontrollierte Bytes) AUSSERHALB der legitimen Ausgabe und überschreitet die Scatterlist-GrenzeDas Schreiben umgeht den normalen VFS-Schreibpfad. Die Datei auf der Platte bleibt intakt. Tools wie sha256sum, aide, tripwire oder inotify erkennen die Änderung nicht, da sie auf der Datei auf der Platte oder dem Inode arbeiten, nicht auf dem Page Cache im Speicher.
Das Lab verwendet einen verwundbaren Kernel, um die Korruption des Page Cache zu demonstrieren. In Docker-Umgebungen hängt die vollständige Privilegieneskalation von der Host-Konfiguration ab (gemeinsamer Kernel).
# Repository klonen
cd cve-2026-31431
# Verwundbares Image erstellen
docker build -t copyfail-lab -f docker/Dockerfile.vulnerable .
# Lab ausführen
docker run --rm -it \
--cap-add=NET_ADMIN \
--security-opt seccomp=unconfined \
copyfail-lab bash
# Innerhalb des Containers:
cd /lab
python3 exploit/poc.py
os.splice)Siehe exploit/poc.py und exploit/README.md.
Der PoC demonstriert:
Siehe mitigation/README.md für detaillierte Anweisungen.
TL;DR — Sofortige Mitigation (ohne Neustart):
# Betroffenes Modul deaktivieren
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.conf
sudo modprobe -r algif_aead 2>/dev/null || true
Endgültige Lösung: Kernel auf eine gepatchte Version aktualisieren (nach a664bf3d603d).
cve-2026-31431/
├── README.md ← diese Datei
├── docs/
│ ├── technical-analysis.md ← tiefgehende technische Analyse
│ └── affected-kernels.md ← Tabelle der betroffenen/gepatchten Versionen
├── exploit/
│ ├── README.md ← Dokumentation des PoC
│ └── poc.py ← Proof of Concept (Python 3.10+)
├── mitigation/
│ ├── README.md ← Mitigationsanleitung
│ ├── disable-algif.conf ← modprobe-Konfiguration
│ └── check-vulnerable.sh ← Erkennungsskript
├── docker/
│ ├── Dockerfile.vulnerable ← verwundbares Lab
│ └── Dockerfile.patched ← Lab mit angewendeter Mitigation
└── scripts/
└── setup-lab.sh ← Lab-Automatisierung
a664bf3d603d| Angriff | Typ | Race erforderlich? | Portabel? | Exploit-Größe |
|---|
| Dirty Cow (CVE-2016-5195) | CoW-Race | Ja | Teilweise | ~KB |
| Dirty Pipe (CVE-2022-0847) | Pipe-Puffer | Nein | Eingeschränkt | ~KB |
| Copy Fail (CVE-2026-31431) | Logisch | Nein | Vollständig | 732 bytes |
| Datum | Ereignis |
|---|
| 2017 | Commit 72548b093ee3 führt den Fehler im Kernel ein |
| ~2025 | Theori/Xint Code beginnt Analyse des Crypto-Subsystems |
| 28. Apr. 2026 | Koordination mit Distributionen |
| 29. Apr. 2026 | Öffentliche Offenlegung + PoC veröffentlicht |
| 1. Mai 2026 | Gepatchte Kernel in Produktions-Repos verfügbar |
| 1. Mai 2026 | Zum CISA-KEV-Katalog hinzugefügt |