
Linux lokaler Privilege-Escalation-Exploit für CVE-2026-31431, der die AF_ALG-Krypto-API mit splice() missbraucht, um den Page Cache zu modifizieren und eine Root-Shell zu starten.
Dieses Repository enthält einen kleinen Linux-PoC zur lokalen Privilegienerweiterung für CVE-2026-31431, auch bekannt als „Copy Fail".
Der Exploit zielt auf den Linux-Kernel-Pfad algif_aead in der AF_ALG-Userspace-
Crypto-API ab. Er verwendet AF_ALG zusammen mit splice(), um den Kernel dazu zu bringen,
in 4-Byte-Blöcken in den Page Cache von /usr/bin/su zu schreiben, und führt anschließend su aus,
nachdem der Page Cache modifiziert wurde.
Der PoC in copy_fail_exp.py erledigt vier Dinge:
AF_ALG-Socket für aead mit der Transformation
authencesn(hmac(sha256),cbc(aes)).setsockopt()-Werten, die im
ursprünglichen Proof of Concept verwendet wurden.splice()-Aufrufe, um Daten aus der Zieldatei in den AF_ALG-
Anforderungspfad zu verschieben, was der fehlerhafte Kernel-Pfad ist./bin/sh enthält.Der zlib-Blob ist keine zufälligen Daten. Es handelt sich um eine kompakte Payload, die den
Anfang von /usr/bin/su im Page Cache ersetzen soll, sodass die nächste Ausführung von su
eine Root-Shell startet.
Der anfällige Code wurde in den algif_aead-Änderungen aus der Linux-Kernel-4.14-Ära
eingeführt und blieb bis zum Upstream-Fix vorhanden, der die In-Place-Optimierung
zurücknimmt.
algif_aead-In-Place-Pfad enthalten.AF_ALG-Crypto-API aktiviert ist, was bei den meisten
Allzweck-Linux-Distributionen der Standard ist.| Distribution | Kernel |
|---|---|
| Ubuntu 24.04 LTS | 6.17.0-1007-aws |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 |
| RHEL 10.1 |
6.18.226.19.127.0Downstream-LTS-Zweige sind erst sicher, nachdem der Vendor-Backport im tatsächlich ausgeführten Kernel-Paket enthalten ist.
Verwenden Sie eine Labor-VM oder einen Container-Host, der Ihnen gehört. Führen Sie dies nicht auf Produktionssystemen aus.
/usr/bin/su existiert und setuid-root ist.python3 copy_fail_exp.py
/usr/bin/su und ruft anschließend
su auf. Sie sollten je nach Umgebung in einer Root-Shell landen oder eine Root-Eingabeaufforderung sehen.Das Skript hat keine zusätzlichen Abhängigkeiten außer der Python-3-Standardbibliothek.
python3 copy_fail_exp.py
Wenn Sie das Ziel zuerst untersuchen möchten, verwendet das Skript derzeit standardmäßig
/usr/bin/su.
Wenn Sie einen Downstream-Kernel pflegen, besteht der korrekte Fix darin, den Upstream-Revert zurückzuportieren, der die In-Place-AEAD-Optimierung entfernt:
a664bf3d603dc3bdcf9ae47cc21e0daec706d7a572548b093ee3 zurück.Empfohlener Workflow für einen Downstream-Kernel-Baum:
git cherry-pick a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5
make olddefconfig
make -j"$(nproc)"
make modules_install
make install
reboot
Wenn Sie Kernel nicht selbst neu bauen, installieren Sie das Vendor-Kernel-Paket, das den Backport enthält, und booten Sie in dieses.
Wenn das Patchen verzögert wird, deaktivieren Sie den Modulpfad als vorübergehende Maßnahme:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null
Dies ist eine Abschwächung, kein Fix.
6.12.0-124.45.1.el10_1 |
| SUSE 16 | 6.12.0-160000.9-default |