Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-31431-Report-Copy-fail-Vulnerability- — Detaillierte Analyse der Copy-Fail-Schwachstelle (CVE-2026-31431) im Linux-Kernel, einschließlich des Mechanismus der Speicherkorruption, des Ablaufs der Privilegienausweitung und der Sicherheitsauswirkungen. | Kitploit
Tools/GitHubGitHub/krish-foren6/cve-2026-31431-report-copy-fail-vulnerability-
Privilege EscalationSpeicherforensikSchwachstellenanalyseExploitationLernen & BildungIncident ResponseContainer-Ausbruch
GitHubkrish-foren6/cve-2026-31431-report-copy-fail-vulnerability-

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-31431-Report-Copy-fail-Vulnerability-

Detaillierte Analyse der Copy-Fail-Schwachstelle (CVE-2026-31431) im Linux-Kernel, einschließlich des Mechanismus der Speicherkorruption, des Ablaufs der Privilegienausweitung und der Sicherheitsauswirkungen.

Repository anzeigen
129vor 5 MonatenNoch nicht geprüft

CVE-2026-31431 — Copy Fail: Linux-Kernel-Privilege-Eskalation

CVE CVSS Kernel Type Purpose

Bildungsanalyse der Copy-Fail-Schwachstelle im Linux-Kernel.
Behandelt den Speicherkorruptionsmechanismus, den Privilege-Escalation-Ablauf, den Container-Ausbruch und defensive Gegenmaßnahmen.


⚠️ Haftungsausschluss

Dieses Repository dient ausschließlich Bildungs- und Forschungszwecken.
Verwenden Sie diese Informationen nicht auf Systemen, die Ihnen nicht gehören oder für die Sie keine ausdrückliche schriftliche Testgenehmigung haben.
Alle Codeausschnitte und Befehle dienen ausschließlich dem Verständnis der Interna des Linux-Kernels.


Inhaltsverzeichnis

  • Überblick
  • Schwachstellen-Steckbrief
  • Hintergrundkonzepte
  • Wie der Fehler funktioniert
  • Vollständiger Angriffsablauf
  • Warum es so gefährlich ist
  • Sichere praktische Beobachtung
  • Verteidigung & Erkennung
  • Vergleich mit ähnlichen CVEs
  • Glossar
  • Kurzreferenz

Überblick

CVE-2026-31431, auch bekannt als Copy Fail, ist eine Schwachstelle im Linux-Kernel, bei der ein nicht privilegierter lokaler Benutzer ohne besondere Berechtigungen zu root aufsteigen kann.

Der Angriff findet vollständig im RAM statt. Die Datei auf der Festplatte wird nie berührt — das bedeutet, dass Datei-Hashes sauber bleiben, Zeitstempel unverändert sind und Audit-Logs nichts aufzeichnen. Beim Neustart des Systems verschwinden alle Beweise.

Normaler Benutzer  →  algif_aead-Fehler ausnutzen  →  Page Cache überschreiben  →  root

Wichtige Eigenschaften:

  • ✅ Keine Race Condition — funktioniert zuverlässig jedes Mal
  • ✅ Festplatte unberührt — Forensik findet nichts
  • ✅ Erfordert nur ein normales lokales Benutzerkonto
  • ✅ Ermöglicht Container-Ausbruch über gemeinsamen Page Cache

Schwachstellen-Steckbrief

FeldWert
CVE-IDCVE-2026-31431
Allgemeiner NameCopy Fail / algif_aead Page-Cache-Korruption
CVSS v3.1-Score7.8 — KRITISCH
AngriffsartLokale Privilege-Eskalation (LPE)
Betroffene Kernel-VersionenLinux 5.10 bis 6.8 (ca.)
Verwundbare Komponentecrypto/algif_aead.c — AF_ALG-Socket-Schnittstelle
AusbeutungszuverlässigkeitHOCH — Keine Race Condition erforderlich
Festplatten-BeweiseKEINE — Nur RAM-Modifikation
Container-AuswirkungJA — Host-Ausbruch über gemeinsamen Page Cache
Patch-StatusVerfügbar (Upstream-Kernel-Patch veröffentlicht)

Hintergrundkonzepte

/usr/bin/su — Das Ziel-Binary

su (Switch User) ermöglicht einem Benutzer, zu einem anderen Konto zu wechseln — typischerweise zu root. Es ist ein SetUID-Binary:

ls -l /usr/bin/su
# -rwsr-xr-x 1 root root 68208 Jan 1 2026 /usr/bin/su
#   ^-- 's' = SetUID-Flag

Das s-Flag bedeutet: Wenn irgendein Benutzer dieses Binary ausführt, wird es mit root-Berechtigungen ausgeführt. Das macht es zu einem Ziel von hohem Wert.

Seine interne Logik (vereinfacht):

if (password_correct()) {
    give_root_access();
} else {
    deny_access();
}

Das Angriffsziel: die password_correct()-Prüfung vollständig überspringen.


RAM und Page Cache

Wenn Linux eine Datei von der Festplatte liest, behält es eine Kopie im RAM, den sogenannten Page Cache.

KomponenteBeschreibung
FestplatteOriginaldatei auf der Festplatte (das Bücherregal)
Page CacheRAM-Kopie der Datei (die Fotokopie auf Ihrem Schreibtisch)
CPULiest und führt aus dem Page Cache aus — schnell
AngreiferModifiziert die RAM-Kopie; die Festplatte bleibt unberührt
cat /proc/meminfo | grep Cached
# Cached: 1234567 kB  ← dies ist der Page Cache

Puffer und sicherer Puffer

TypSicherheit
Sicherer Puffer — vom Kernel zugewiesen, Größe und Grenzen kontrolliert✅ OK
Page Cache — dateigestützte RAM-Kopie, gemeinsam genutzt, ausführbar⚠️ GEFÄHRLICH, wenn beschrieben
Falscher Zeiger — durch Fehler verursachte Adresse, die überall hin zeigen kann🔴 KRITISCH

AF_ALG und algif_aead

AF_ALG (Algorithm Family) ist eine Linux-Socket-Schnittstelle, die es Benutzerprogrammen ermöglicht, Kernel-Kryptofunktionen (AES, SHA, AEAD) zu nutzen.

socket(AF_ALG, SOCK_SEQPACKET, 0);  // Krypto-Socket öffnen

algif_aead ist das Kernel-Modul, das AEAD-Verschlüsselung (z. B. AES-GCM) über AF_ALG verarbeitet. Die Schwachstelle liegt in seinem Datenkopierschritt.

AF_ALG  →  algif_aead  →  AES-GCM-Engine  →  Ausgabepuffer
                                ↑
                           FEHLER IST HIER

Wie der Fehler funktioniert

Der Fehler liegt nicht in der Verschlüsselungslogik. Er liegt in der Speicherverwaltung — während eines Datenkopiervorgangs wird der falsche Speicherbereich ausgewählt.

Normaler Ablauf (kein Fehler):

destination = safe_output_buffer;       // korrekte Position
memcpy(destination, user_data, size);   // Daten sicher geschrieben

Verwundbarer Ablauf (mit Fehler):

destination = buffer + WRONG_OFFSET;    // FEHLER: falscher Zeiger!
memcpy(destination, user_data, size);   // Daten landen im Page Cache

Der Kernel sollte in den sicheren Ausgabepuffer schreiben. Aufgrund eines falsch berechneten Offsets schreibt er in den Page Cache — der die RAM-Kopie von /usr/bin/su enthält.

Was der Angreifer im Speicher ändert

Das Binary enthält x86-64-Maschinencode. Der Angreifer zielt auf den bedingten Sprung, der die Authentifizierungsfehler auslöst:

Vor dem Angriff:

cmp  eax, 0     ; Rückgabewert prüfen
jne  0x1234     ; wenn Fehler → Sprung zu deny
call give_root  ; root gewähren

Nach dem Angriff (2 Bytes im RAM geändert):

cmp  eax, 0     ; gleich
90 90           ; NOP NOP ← Sprung ersetzt, Prüfung übersprungen!
call give_root  ; CPU landet hier direkt

NOP = No Operation. Die CPU tut nichts und fährt fort — die Authentifizierungsprüfung wird vollständig übersprungen.


Vollständiger Angriffsablauf

Denkweise vor dem Angriff

„Ich brauche nur ein normales Benutzerkonto. Der Kernel wird den Fehler selbst machen.
Die Festplatte bleibt sauber. Keine Logs. Funktioniert jedes Mal."

Schritt 0 — Aufklärung

whoami && id
# uid=1000(user) gid=1000(user) ← normaler Benutzer

uname -r
# 6.1.0-generic ← im verwundbaren Bereich

ls -la /usr/bin/su
# -rwsr-xr-x root root ← SetUID bestätigt

python3 -c "import socket; s = socket.socket(socket.AF_ALG); print('AF_ALG verfügbar')"

Schritt 1 — Datei in den Page Cache laden

cat /usr/bin/su > /dev/null
# /usr/bin/su ist jetzt im Page Cache geladen ✓

Schritt 2 — Das Binary reverse-engineeren

xxd /usr/bin/su | head -50
objdump -d /usr/bin/su | grep -A 20 'check\|auth\|pass'
readelf -h /usr/bin/su

Gesucht werden: die Adresse der Auth-Funktion, der bedingte jne/jnz-Sprung und sein exakter Byte-Offset.

Schritt 3 — AF_ALG-Socket öffnen

import socket, struct

sock = socket.socket(socket.AF_ALG, socket.SOCK_SEQPACKET, 0)
sock.bind(('aead', 'gcm(aes)', 0, 16))
sock.setsockopt(socket.SOL_ALG, socket.ALG_SET_KEY, b'A' * 16)

Schritt 4 — Präparierte Nutzlast senden

Tool herunterladen