
Proof-of-Concept-Exploit für CVE-2026-31431 (Copy Fail), eine Linux-Kernel-LPE über algif_aead-Page-Cache-Korruption, mit Erkennungs-, Labor- und Minderungsanleitung.
██████╗ ██████╗ ██████╗ ██╗ ██╗ ███████╗ █████╗ ██╗██╗
██╔════╝██╔═══██╗██╔══██╗╚██╗ ██╔╝ ██╔════╝██╔══██╗██║██║
██║ ██║ ██║██████╔╝ ╚████╔╝ █████╗ ███████║██║██║
██║ ██║ ██║██╔═══╝ ╚██╔╝ ██╔══╝ ██╔══██║██║██║
╚██████╗╚██████╔╝██║ ██║ ██║ ██║ ██║██║███████╗
╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝
algif_aead Page-Cache-Korruption⚠️ NUR FÜR AUTORISIERTE NUTZUNG — Dieses Repository ist ausschließlich für Penetrationstester, Sicherheitsforscher und Verteidiger gedacht, die unter rechtmäßiger Autorisierung handeln. Missbrauch ist eine Straftat.
Copy Fail ist eine lokale Rechteausweitung (LPE)-Schwachstelle, die am 29. April 2026 offengelegt wurde und praktisch alle großen Linux-Distributionen betrifft, die Kernel seit 2017 ausführen.
Unprivilegierter Benutzer ──► AF_ALG + splice() ──► 4-Byte Page-Cache-Schreibzugriff ──► ROOT
Die Schwachstelle stammt aus einer fehlerhaften In-Place-Optimierung, die 2017 (Commit 72548b093ee3) im Modul algif_aead der Linux-Kernel-Benutzerraum-Krypto-API (AF_ALG) eingeführt wurde.
AF_ALG (Benutzerraum-Krypto-API)
└── algif_aead-Modul
└── authencesn-Vorlage ◄── ANGREIFBAR
└── In-Place-Optimierung (2017)
└── req->src == req->dst ◄── Seiten von splice() in beschreibbare dst-Liste eingereiht
Schritt 1: AF_ALG AEAD-Socket öffnen
socket(AF_ALG, SOCK_SEQPACKET, 0)
Schritt 2: splice()-Seiten senden, die auf die Zieldatei verweisen
(Page-Cache-Seiten einer privilegierten Binärdatei, z. B. /usr/bin/sudo)
Schritt 3: authencesn-Notiz-Schreibzugriff auslösen
authencesn verwendet den dst-Puffer als Notizblock →
schreibt 4 kontrollierte Bytes ÜBER den legitimen Ausgabebereich hinaus
Schritt 4: Page-Cache-Eintrag der Zieldatei ist nun korrupt
(Festplattendatei unberührt — nur die Kopie im Speicher wurde geändert)
Schritt 5: Die modifizierte Binärdatei ausführen → ROOT
Der Page-Cache des Linux-Kernels speichert speicherseitige Kopien von Dateien. Wenn eine Datei gelesen wird, werden ihre Seiten zwischengespeichert. Der splice()-Systemaufruf kann direkt auf diese zwischengespeicherten Seiten verweisen. Durch das Einfügen von Page-Cache-Seiten in die AF_ALG AEAD-Streuungsliste landet der authencesn-Notiz-Schreibzugriff innerhalb dieser zwischengespeicherten Seiten und patcht effektiv die speicherseitige Kopie jeder lesbaren Datei – einschließlich privilegierter Binärdateien wie sudo, pkexec oder passwd.
Der Upstream-Fix macht die fehlerhafte Optimierung von 2017 rückgängig:
# Behoben in Commit: a664bf3d603d
git show a664bf3d603d
CVE-2026-31431-CopyFail/
│
├── 📄 README.md ← Sie sind hier
├── 📄 LICENSE ← Forschungs-/Bildungslizenz
├── 📄 DISCLAIMER.md ← Rechts- und Ethikrichtlinie
├── 📄 CHANGELOG.md ← Versionshistorie
│
├── 📂 docs/
│ ├── vulnerability-analysis.md ← Tiefergehend: Ursache & Mechanik
│ ├── exploitation-walkthrough.md ← Schritt-für-Schritt-Methodik
│ ├── affected-kernels.md ← Vollständige Kernel-/Distro-Versionsmatrix
│ ├── detection.md ← Abdeckung durch Defender, Tenable, Wazuh
│ └── references.md ← Alle CVEs, Blogs, Advisories
│
├── 📂 exploit/
│ ├── README.md ← Nutzung, Voraussetzungen, getestete Distributionen
│ ├── copyfail.py ← Referenz-PoC (zu Bildungszwecken)
│ ├── trigger.c ← AF_ALG + splice() C-Trigger
│ └── variants/
│ ├── ubuntu.py ← Ubuntu-spezifische Variante
│ ├── rhel.py ← RHEL/CentOS-Variante
│ └── amazon_linux.py ← Amazon Linux-Variante
│
├── 📂 detection/
│ ├── yara/
│ │ └── copyfail.yar ← YARA-Regel für Exploit-Artefakte
│ ├── sigma/
│ │ └── copyfail_lpe.yml ← Sigma-Regel für SIEM/SOC
│ └── scripts/
│ ├── check_vulnerable.sh ← Schnelle Kernel-Schwachstellenprüfung
│ └── detect_algif_aead.sh ← Prüfen, ob das Modul geladen/aktiv ist
│
├── 📂 mitigation/
│ ├── README.md ← Übersicht Gegenmaßnahmen
│ ├── disable_algif_aead.sh ← Betroffenes Kernelmodul deaktivieren
│ ├── patch-notes.md ← Details zum Upstream-Patch
│ └── kubernetes-hardening.md ← K8s / Container-Härtung
│
├── 📂 lab/
│ ├── Vagrantfile ← Reproduzierbare verwundbare VM
│ ├── setup.sh ← Labor-Bootstrap-Skript
│ └── docker/
│ └── Dockerfile ← Verwundbarer Ubuntu-Container
│
├── 📂 reports/
│ ├── pentest-report-template.md ← Kundenfertige Berichtsvorlage
│ └── sample-finding.md ← Beispiel-Finding-Beschreibung
│
└── 📂 assets/
├── demo.gif ← (Optional) Terminal-Demo
└── diagrams/
└── page-cache-write.png ← Angriffsablauf-Diagramm
Immer in einer isolierten, autorisierten Umgebung testen. Führen Sie Exploits niemals auf Produktionssystemen aus.
# Repository klonen
git clone https://github.com/0xFuffM3/CVE-2026-31431-CopyFail.git
cd CVE-2026-31431-CopyFail
# Verwundbare Labor-VM starten
cd lab/
vagrant up
# Per SSH ins Labor einloggen
vagrant ssh
# Kernel-Version prüfen (sollte verwundbar sein)
uname -r
cd lab/docker/
# Verwundbares Container-Image bauen
docker build -t copyfail-lab .
# Mit erforderlichen Rechten für Kernel-Interaktion ausführen
docker run --rm -it --privileged copyfail-lab /bin/bash
# Schnellprüf-Skript ausführen
chmod +x detection/scripts/check_vulnerable.sh
./detection/scripts/check_vulnerable.sh
Erwartete Ausgabe auf einem verwundbaren System:
[!] Kernel-Version: 5.15.0-91-generic
[!] algif_aead-Modul: GELADEN
[✗] System scheint VERWUNDBAR für CVE-2026-31431 (Copy Fail)
[*] Empfohlene Maßnahme: Kernel-Update anwenden oder algif_aead deaktivieren
Erwartete Ausgabe auf einem gepatchten System:
[✓] Kernel-Version: 6.1.132
[✓] System scheint GEPATCHED gegen CVE-2026-31431 (Copy Fail)
Erfordert: Lokalen Zugriff als unprivilegierter Benutzer auf einem verwundbaren System.
# Python 3.6+
python3 --version
# Erforderliche Kernel-Module vorhanden
lsmod | grep algif_aead
# Prüfen, ob die Zielbinärdatei lesbar ist
ls -la /usr/bin/sudo
cd exploit/
# Aktuelle Berechtigungsstufe prüfen
id
# uid=1000(benutzer) gid=1000(benutzer) groups=1000(benutzer)
# Copy Fail PoC ausführen
python3 copyfail.py
# Rechteausweitung prüfen
id
# uid=0(root) gid=0(root) groups=0(root)
1. Kernel-Version ermitteln
└─► uname -r / cat /proc/version
2. Prüfen, ob algif_aead geladen ist
└─► lsmod | grep algif_aead
3. Niedrigen Benutzerzugriff bestätigen
└─► id / whoami
4. Copy Fail PoC ausführen
└─► python3 exploit/copyfail.py
5. Root-Zugriff bestätigen
└─► id && cat /etc/shadow
6. Beweise dokumentieren
└─► Screenshot + Kernel-Version, Distribution, Exploit-Hash protokollieren
7. Gegenmaßnahmen anwenden (nach Test)
└─► sudo bash mitigation/disable_algif_aead.sh
8. In Pentest-Bericht aufnehmen
└─► reports/pentest-report-template.md verwenden
// detection/yara/copyfail.yar
rule CopyFail_CVE_2026_31431 {
meta:
description = "Erkennt Copy Fail (CVE-2026-31431) Exploit-Artefakte"
author = "0xFuffM3"
date = "2026-04-30"
reference = "https://copy.fail"
strings:
$py1 = "algif_aead" ascii
$py2 = "AF_ALG" ascii
$py3 = "splice" ascii
$py4 = "page_cache" ascii
$py5 = "authencesn" ascii
condition:
3 of them
}
YARA-Scan ausführen:
yara detection/yara/copyfail.yar /tmp/ -r
# detection/sigma/copyfail_lpe.yml
title: Copy Fail LPE Exploit-Ausführung (CVE-2026-31431)
status: stable
logsource:
category: process_creation
product: linux
detection:
selection:
CommandLine|contains:
- 'AF_ALG'
- 'algif_aead'
- 'authencesn'
condition: selection
falsepositives:
- Legitime Krypto-API-Tests
level: high
chmod +x detection/scripts/detect_algif_aead.sh
./detection/scripts/detect_algif_aead.sh
# Ubuntu / Debian
sudo apt-get update && sudo apt-get upgrade linux-image-generic
# RHEL / CentOS
sudo yum update kernel
# Amazon Linux
sudo yum update kernel
# Nach Update neu starten
sudo reboot
algif_aead-Modul deaktivieren (Übergangsweise)# Gegenmaßnahmen-Skript ausführen
chmod +x mitigation/disable_algif_aead.sh
sudo bash mitigation/disable_algif_aead.sh
Was das Skript macht:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || echo "[*] Modul derzeit nicht geladen"
echo "[✓] algif_aead deaktiviert. Neustart zur Bestätigung der Persistenz."
Siehe mitigation/kubernetes-hardening.md für:
AF_ALG-Socket-Erstellung in Pod-Sicherheitsrichtliniensocket(AF_ALG, ...)-SyscallsEine gebrauchsfertige Kundenberichtsvorlage befindet sich in reports/pentest-report-template.md.
Finding: Lokale Rechteausweitung via Copy Fail (CVE-2026-31431)
Severity: HOCH (CVSS 7.8)
Host: 10.10.10.55 (ubuntu-prod-01)
Kernel: 5.15.0-91-generic
Nachweise:
- Unprivilegierte Shell (uid=1000) auf Root (uid=0) erweitert
- Kernel-Modul algif_aead als geladen bestätigt
- Keine Festplatten-Artefakte — nur Page-Cache
Empfehlung:
1. Hersteller-Kernel-Patch sofort anwenden
2. Übergangsweise: algif_aead-Modul deaktivieren
3. Kubernetes-Knoten und CI/CD-Runner überprüfen
Lesen Sie dies, bevor Sie etwas aus diesem Repository verwenden.
Dieses Repository wird nur für legitime Sicherheitsforschung, autorisierte Penetrationstests und defensive Sicherheit veröffentlicht.
Die unbefugte Nutzung dieses Materials kann gegen den Computer Fraud and Abuse Act (CFAA), die EU-Richtlinie 2013/40/EU, das indische IT-Gesetz 2000 und entsprechende Gesetze in Ihrem Land verstoßen.
Die Autoren übernehmen keine Haftung für Missbrauch. Siehe DISCLAIMER.md für den vollständigen rechtlichen Hinweis.
Sicherheitsforscher sind willkommen, beizutragen:
git checkout -b feat/ihr-beitraggit commit -m "Add: Erkennungsregel für X"Bitte beachten Sie die Richtlinien zur verantwortungsvollen Offenlegung. Fügen Sie keine bewaffneten, produktionsreifen Exploit-Codes für gepatchte Systeme hinzu.
| # | Abschnitt | Beschreibung |
|---|
| 1 | Was ist Copy Fail? | Zusammenfassung der Schwachstelle |
| 2 | Technischer Tiefgang | Ursachenanalyse |
| 3 | Betroffene Systeme | Distro- und Kernel-Matrix |
| 4 | Repository-Struktur | Datei-Übersicht |
| 5 | Labor-Einrichtung | Sicher reproduzieren |
| 6 | Exploit-Nutzung | Pentest-Workflow |
| 7 | Erkennung | YARA, Sigma, Skripte |
| 8 | Gegenmaßnahmen | Patch & Härtung |
| 9 | Pentest-Berichterstattung | Berichtsvorlagen |
| 10 | Rechtliches & Ethik | Haftungsausschluss |
| 11 | Referenzen | CVEs, Advisories, Blogs |
| Eigenschaft | Detail |
|---|
| CVE-ID | CVE-2026-31431 |
| Spitzname | Copy Fail |
| CVSS v3.1 | 7.8 (HOCH) |
| Angriffsvektor | Lokal |
| Erforderliche Rechte | Niedrig (beliebiger unprivilegierter Benutzer) |
| Benutzerinteraktion | Keine |
| Entdecker | Xint Code (Theori) |
| Offenlegung | 29. April 2026 |
| Exploit-Größe | 732 Bytes (Python PoC) |
| Patch-Status | ✅ Verfügbar — Commit a664bf3d603d rückgängig machen |
| Kernel-Branch | Betroffen? | Feste Version |
|---|
| 4.9.x (LTS) | ✅ Ja | 4.9.340+ |
| 5.4.x (LTS) | ✅ Ja | 5.4.295+ |
| 5.10.x (LTS) | ✅ Ja | 5.10.239+ |
| 5.15.x (LTS) | ✅ Ja | 5.15.185+ |
| 6.1.x (LTS) | ✅ Ja | 6.1.132+ |
| 6.6.x (LTS) | ✅ Ja | 6.6.83+ |
| 6.12.x (LTS) | ✅ Ja | 6.12.19+ |
| < 4.9 (vor 2017) | ❌ Nein | N/A — Optimierung nicht vorhanden |
| Distribution | Betroffene Versionen | Gepatched? | Advisory |
|---|
| Ubuntu | < 26.04 (alle Releases) | ✅ Gepatched | USN |
| Ubuntu 26.04 (Resolute) | ❌ Nicht betroffen | — | — |
| RHEL / CentOS | 7, 8, 9 | ✅ Gepatched | RHSA-2026 |
| Amazon Linux | 2, 2023 | ✅ Gepatched | ALAS |
| SUSE / openSUSE | Alle betroffen | ✅ Gepatched | SUSE-SU |
| Debian | Bullseye, Bookworm | ✅ Gepatched | DSA |
| CloudLinux | 8, 9 | ✅ Gepatched | Advisory |
| Tool | Erkennungsunterstützung |
|---|
| Microsoft Defender (MDVM) | ✅ Ja |
| Tenable Nessus | ✅ Ja |
| Qualys | ✅ Ja |
| Wazuh | ✅ Über benutzerdefinierte Sigma-Regel |
| Palo Alto Cortex XDR | ✅ Ja |
| CrowdStrike Falcon | ✅ Ja |
| Quelle | Link |
|---|
| Originalveröffentlichung (Xint/Theori) | copy.fail |
| Xint Code Technischer Bericht | xint.io/blog/copy-fail |
| NVD-Eintrag | nvd.nist.gov |
| Microsoft Security Blog | microsoft.com/security/blog |
| Ubuntu Advisory | ubuntu.com/blog |
| CERT-EU Advisory | cert.europa.eu |
| Tenable FAQ | tenable.com/blog |
| Palo Alto Unit 42 | unit42.paloaltonetworks.com |
| CloudLinux Advisory | blog.cloudlinux.com |
| Bugcrowd Analyse | bugcrowd.com/blog |
| Linux-Kernel-Patch | kernel.org — Commit a664bf3d603d |