
Analysiert CVE-2026-31431, eine AF_ALG-AEAD-Schwachstelle im Linux-Kernel, und bietet einen sicheren Detektor, einen LPE-Exploit im Labor sowie ein QEMU-basiertes A/B-Kernel-Labor zur Verifizierung.
algif_aead „Copy Fail“: AnalyseSicherheitsforschung zu CVE-2026-31431 (CVSS 3.1 7.8 HOCH,
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H): drei kombinierbare Design-
Schwachstellen in der AF_ALG-AEAD-Schnittstelle verketten sich zu einem
deterministischen, race-freien 4-Byte-Seitencache-Schreibzugriff an beliebiger Offset in jeder lesbaren Datei — die Festplattenkopie bleibt sauber, sodass Prüfsummen auf der Platte nichts sehen.
Der öffentliche Exploit („Copy Fail“, Theori/Xint) verwandelt ihn mit 732 Bytes Python in lokalen Root (LPE); der Bug steckte in jedem Kernel von 2017 bis 2026.
72548b093ee3 (2017) ließ _aead_recvmsg in-place entschlüsseln,
wodurch die Tag-Seiten der Anfrage in das beschreibbare Ziel-SGL verkettet wurden.splice(Datei → Pipe → Socket) speist diese Tag-Slots mit den
Seitencache-Seiten jeder lesbaren Datei (Zero-Copy).authencesn schreibt seinen 4-Byte-ESN-Scratch — der Wert liegt in
der sendmsg-Nutzlast — exakt bei
, d. h. beim ersten Tag-Byte: deiner gewählten
Datei-Offset. Dies geschieht der Tag-Verifikation, sodass selbst eine
-Anfrage den Schreibzugriff ausführt.AAD[4..8)dst[assoclen + cryptlen]-EBADMSG| Behauptung | Beleg |
|---|---|
| Ursache aus den Fix-Commits und Kernel-Quellen abgeleitet, nicht aus Blogs | finding-sheet |
| Öffentlicher PoC-Decode Ende-zu-Ende gegen die Syscall-Sequenz verifiziert | finding-sheet |
| Labor-A/B-Kernel mit Delta = exakt der Fix-Commit, beide booten | lab/scripts/build.sh + lab/out/ab-diffstat.txt |
Verwundbarer Kernel führt authencesn-AEAD-Entschlüsselung über AF_ALG aus (Smoke) | lab/scripts/run.sh vuln → SMOKE=ok |
Revert-ohne-Begleit-Commit stürzt in crypto_authenc_esn_decrypt ab (ursprünglicher Befund) | lab/scripts/run.sh patched → NULL-Deref, reproduzierbar |
| Sicherer Detektor: VERWUNDBAR auf vuln (Schreibzugriff feuert trotz EBADMSG, Platte bleibt SAUBER), NICHT-ERKANNT auf Voll-Fix | poc/detector.c im Labor → DETECTOR-RESULT-Zeilen |
| LPE-Abschluss im Labor: uid 1000 patcht 4 Seitencache-Bytes einer SUID-Binärdatei und liest das Root-only-Flag; Plattenkopie als unversehrt per Block-Level-debugfs-Lesen nachgewiesen | poc/lpe.c + lab/rootfs/tools/secretgate.c → LPE-RESULT: ROOT-FLAG-CAPTURED, DISKCLEAN=ok |
| Reproduktion des öffentlichen Seitencache-Schreibzugriffs in einem gepinnten Labor, mit Quellenangabe | Detektor-Ausgabe oben + lab README |
| SGL-Stresstest: 5 Formen auf beiden Kernen — kein Absturz, kein Kernel-Hänger (ehrliches Negativ) + zwei dokumentierte AF_ALG-Vertrags-Eigenheiten | poc/sgl-stress.c im Labor → SGL-STRESS-Zeilen |
# die drei Kernel + Werkzeuge + Sonden-Platte in Docker bauen (~15 min beim ersten Lauf)
lab/scripts/build.sh
# die A/B/C-Orakel booten (QEMU in Docker, KVM falls verfügbar)
lab/scripts/run.sh vuln # DETECTOR VULNERABLE + LPE ROOT-FLAG-CAPTURED + DISKCLEAN=ok
lab/scripts/run.sh patchedfull # DETECTOR NOT-DETECTED + LPE NOT-VULNERABLE
lab/scripts/run.sh patched # authencesn NULL-Deref (Begleit-Fix-Lücke)
Die vollständige Seitencache-Schreibkette folgt dem veröffentlichten Ansatz von
Theori / Xint Code („Copy Fail“, die als Urheber genannten Melder) mit
Quellenangabe — siehe den Abschnitt zu früheren Arbeiten im finding-sheet. Originelle Arbeit in diesem Repo: die auf Fix-Commits verankerte Mechanik-Karte, der Befund zur unvollständigen Fix-Serie (der Revert-ohne-Begleit-Commit-authencesn-Panik und sein Stable-Release-Fenster), der sichere Seitencache-vs.-Platte-Differenzialdetektor, der niemals Dateien berührt, die uns nicht gehören, der LPE-Abschluss im Labor gegen ein zweckgebautes SUID-Ziel
(secretgate — es wird niemals eine reale Binärdatei angegriffen), die SGL-Randfall-Erkundung (ehrliches Negativergebnis plus zwei dokumentierte AF_ALG-Vertrags-Eigenheiten) sowie die verifizierte Branch-Zuordnung aller acht Fix-Commits.
| Dokument | Was es ist |
|---|---|
| docs/finding-sheet.md | Einseitiges Datenblatt: Versionen, CVSS, Ursache, Fix-Commits, Angriffsfläche |
| docs/report-ptes.md | PTES-strukturierter Bericht (7 Phasen) mit Laborbelegen |
| docs/research-writeup.md | Die Untersuchungserzählung — Methodik, Sackgassen, übertragbare Lehren, Vergleich mit früheren Arbeiten |
docs/ finding sheet · PTES-Bericht · Research-Writeup
poc/ detector.c (sicheres Orakel) · lpe.c (LPE im Labor) · sgl-stress.c (SGL-Erkundung)
lab/ QEMU-Kernel-Labor: 5.15.203 ± Fix (A/B) + nach-Begleit-Commit 5.15.y (C)
lab/rootfs/ secretgate.c — zweckgebautes SUID-Ziel (das Einzige, das je angegriffen wird)
72548b093ee3 „crypto: algif_aead - copy AAD from src to dst“ (2017)a664bf3d603d „crypto: algif_aead - Revert to operating out-of-place“
(+ 8 Stable-Backports — siehe finding-sheet)Forschungsobjekt zu Bildungszwecken. Nur gegen Systeme ausführen, die dir gehören oder für die du ausdrücklich autorisiert bist. Die Schwachstelle ist gepatcht — führe einen aktuellen Kernel aus den Stable-Zweigen von 2026 oder später aus.