
Deterministischer Linux-Kernel-Exploit zur lokalen Privilegienerweiterung, der zwei Page-Cache-Schreibprimitive (xfrm/ESP und RxRPC) verkettet, um auf allen gängigen Distributionen seit 2017 zuverlässigen Root-Zugriff zu erlangen.
Universelle lokale Privilegieneskalation im Linux-Kernel
| Feld | Detail |
|---|---|
| CVE | CVE-2026-43284 (xfrm/ESP) + CVE-2026-43500 (RxRPC) |
| Nickname | Dirty Frag |
| CVSS | 7.8 HIGH |
| Typ | Lokale Privilegieneskalation (LPE) |
| Eingeführt | Linux-Kernel 4.10 (2017, Commit cac2661c53f3) |
| Behoben | Mainline-Commits f4c50a4034e6 / aa54b1d27fe0 |
| Erfordert | Lokaler unprivilegierter Shell-Zugriff |
| Remote-Vektor | Keiner — nur lokal |
| Offengelegt | 7. Mai 2026 von Hyunwoo Kim (@v4bel) |
Ein Logikfehler in den xfrm/ESP- und RxRPC-Subsystemen des Linux-Kernels ermöglicht es einem unprivilegierten lokalen Benutzer, einen deterministischen, kontrollierten beliebigen Schreibvorgang in den Page Cache jeder lesbaren Datei auf dem System durchzuführen — einschließlich setuid-Binärdateien wie /usr/bin/su.
Die Ursache ist eine unsichere In-Place-Entschlüsselung von gemeinsam genutzten Socket-Puffer-Fragmenten (skb), die auf Page-Cache-Seiten verweisen, insbesondere bei Verwendung von splice(2) oder sendfile(2). Dies bietet ein mächtiges Primitive für beliebige Page-Cache-Schreibvorgänge, das ausgenutzt werden kann, um sensible Dateien im Speicher zu überschreiben und vollständigen Root-Zugriff zu erlangen.
Zwei verschiedene Primitive werden miteinander verkettet, um eine universelle Abdeckung zu erreichen:
xfrm-ESP Page-Cache Write: teilt sich dieselbe Senke wie Copy Fail, wird jedoch über die esp4/esp6-Module ausgelöst, unabhängig davon, ob algif_aead verfügbar ist. Erfordert Privilegien zur Erstellung von Namespaces.RxRPC Page-Cache Write: erfordert keine Namespace-Privilegien, aber rxrpc.ko muss vorhanden sein (standardmäßig unter Ubuntu geladen). Deckt die blinden Flecken von CVE-2026-43284 ab.Durch die Verkettung der beiden Varianten decken sie die blinden Flecken des jeweils anderen ab, was auf allen gängigen Distributionen zuverlässig Root-Zugriff ermöglicht.
Keine Race Condition. Keine Wiederholungsversuche. Kein Absturzrisiko. Deterministisch auf allen getesteten Distributionen.
Wichtig: Selbst auf Systemen, auf denen die öffentlich bekannte Copy-Fail-Mitigation (algif_aead-Blacklist) angewendet wird, bleibt Dirty Frag über CVE-2026-43284 ausnutzbar.
algif_aead-Blacklist (Copy-Fail-Workaround) vollständigCVE-2026-43284 (xfrm/ESP): Linux-Kernel von Commit cac2661c53f3 (2017-01-17) bis f4c50a4034e6 (2026-05-05).
CVE-2026-43500 (RxRPC): Linux-Kernel von Commit 2dc334f1a63a (2023-06-08) bis aa54b1d27fe0 (2026-05-10).
Die effektive Lebensdauer der Schwachstellenkette beträgt ungefähr 9 Jahre.
Alle gängigen Distributionen, die Kernel in diesem Bereich ausliefern, sind betroffen, darunter:
gcc -O0 -Wall -o exp exp.c -lutil && ./exp
Nicht auf Systemen verwenden, für die Sie keine Berechtigung zum Testen haben.
⚠️ Wichtig: Nach der Ausführung dieses Exploits ist der Page Cache kontaminiert. Um den verunreinigten Page Cache zu leeren und die Systemstabilität sicherzustellen, führen Sie Folgendes aus:
echo 3 > /proc/sys/vm/drop_caches
oder starten Sie das System neu.
Aktualisieren Sie auf einen Kernel, der die Mainline-Fixes enthält, und starten Sie neu.
Behoben in Mainline durch:
f4c50a4034e62ab75f1d5cdd191dd5f9c77fdff4aa54b1d27fe0c2b78e664a34fd0fdf7cd1960d71# Ubuntu / Debian
sudo apt update && sudo apt upgrade -y && sudo reboot
# RHEL / AlmaLinux / CentOS Stream
sudo dnf clean metadata && sudo dnf upgrade && sudo reboot
# SUSE / openSUSE
sudo zypper refresh && sudo zypper update kernel-default && sudo reboot
# Fedora
sudo dnf upgrade --refresh && sudo reboot
Falls ein sofortiges Patchen nicht möglich ist, deaktivieren Sie die verwundbaren Module und leeren Sie den Page Cache.
# Blacklist vulnerable modules
sudo sh -c 'printf "install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n" > /etc/modprobe.d/dirtyfrag.conf'
# Unload modules immediately
sudo rmmod esp4 esp6 rxrpc 2>/dev/null || true
# Drop page cache
echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null
Beschränken Sie für nicht vertrauenswürdige Workloads — Container, CI-Runner, Sandbox-Umgebungen — die Erstellung von AF_ALG-Sockets und splice() über seccomp- oder AppArmor-Richtlinien, unabhängig vom Patch-Stand. Dies begrenzt die Angriffsfläche selbst auf verwundbaren Kerneln, ist aber keine vollständige Lösung.
Prüfen Sie, ob verwundbare Module derzeit geladen oder in Verwendung sind:
# Check if modules are loaded
lsmod | grep -E 'esp4|esp6|rxrpc'
# Check if any process has an AF_ALG socket open
lsof | grep AF_ALG
ss -xa | grep alg
# Confirm workaround is active after reboot
cat /etc/modprobe.d/dirtyfrag.conf
Warum zwei Schwachstellen verketten?
xfrm-ESP Page-Cache Write bietet ein mächtiges Primitive für beliebige 4-Byte-STORE-Operationen und ist auf den meisten Distributionen vorhanden, erfordert jedoch Privilegien zur Erstellung von Namespaces — die Ubuntu manchmal über AppArmor blockiert. RxRPC Page-Cache Write erfordert keine Namespace-Privilegien, aber rxrpc.ko ist in den meisten Distributionen nicht enthalten — außer in Ubuntu, wo es standardmäßig geladen wird. Durch die Verkettung der beiden decken sie die blinden Flecken des jeweils anderen ab, was auf allen gängigen Distributionen zuverlässig Root-Zugriff ermöglicht.
Wie verhält es sich zu Copy Fail (CVE-2026-31431)?
Das xfrm-ESP-Primitive teilt sich dieselbe Page-Cache-Write-Senke wie CVE-2026-31431, wird jedoch über die esp4/esp6-Module unabhängig von algif_aead ausgelöst. Die Anwendung der CVE-2026-31431-Mitigation (Blacklisting von algif_aead) schützt nicht gegen Dirty Frag.
Warum der Name „Dirty Frag“?
Die Schwachstelle macht das frag-Element von struct sk_buff dirty und ordnet es damit in dieselbe Bug-Klasse wie Dirty Pipe ein — Logikfehler, die unprivilegierte Schreibvorgänge in den Page Cache ermöglichen.
Dieses Repository ist ausschließlich für Bildungs- und Verteidigungszwecke bestimmt. Verwenden Sie keine Informationen oder Codes aus diesem Repository auf Systemen, die Sie nicht besitzen oder für die Sie keine ausdrückliche schriftliche Berechtigung zum Testen haben.
Bleiben Sie sicher. Patchen Sie früh. Patchen Sie oft. Viel Spaß beim Hacken 🛡️
| Dirty Cow (2016) | Dirty Pipe (2022) | Copy Fail (2026) | Dirty Frag (2026) |
|---|
| Race Condition erforderlich | Ja | Teilweise | Nein | Nein |
| Versionsspezifisch | Ja | Ja | Nein | Nein |
| Zuverlässigkeit | Unzuverlässig | Mäßig | Deterministisch | Deterministisch |
| Abdeckung der Distributionen | Begrenzt | Begrenzt | Alle seit 2017 | Alle seit 2017 |
| Umgeht Copy-Fail-Mitigation | — | — | N/A | Ja |
| Distribution | Getestete Version | Status |
|---|
| Ubuntu 24.04.4 | 6.17.0-23-generic | Betroffen — Patch wird ausgerollt |
| RHEL 10.1 | 6.12.0-124.49.1.el10_1.x86_64 | Betroffen — Patch wird ausgerollt |
| AlmaLinux 10 | 6.12.0-124.52.3.el10_1.x86_64 | Betroffen — Patch verfügbar |
| CentOS Stream 10 | 6.12.0-224.el10.x86_64 | Betroffen — Patch wird ausgerollt |
| Fedora 44 | 6.19.14-300.fc44.x86_64 | Betroffen — Patch verfügbar |
| openSUSE Tumbleweed | 7.0.2-1-default | Betroffen — in Arbeit |
| Debian | — | Betroffen — in Arbeit |
| Komponente | Auswirkung |
|---|
| SSH | ✅ Nicht betroffen |
| dm-crypt / LUKS | ✅ Nicht betroffen |
| kTLS / In-Kernel-TLS | ✅ Nicht betroffen |
| OpenSSL / GnuTLS / NSS (Standard-Builds) | ✅ Nicht betroffen |
| IPsec / XFRM (ESP-Tunnel, VPNs) | ⚠️ Bricht — esp4 und esp6 werden nicht verfügbar sein |
| AFS / OpenAFS-Clients, die RxRPC verwenden | ⚠️ Bricht — rxrpc wird nicht verfügbar sein |
Anwendungen, die AF_ALG + AEAD direkt verwenden | ⚠️ Prüfen mit lsof | grep AF_ALG |
| Ressource | Link |
|---|
| CVE-2026-43284 Mainline-Fix | f4c50a4034e6 |
| CVE-2026-43500 Mainline-Fix | aa54b1d27fe0 |
| NVD — CVE-2026-43284 | https://nvd.nist.gov/vuln/detail/CVE-2026-43284 |
| NVD — CVE-2026-43500 | https://nvd.nist.gov/vuln/detail/CVE-2026-43500 |
| Datum | Ereignis |
|---|
| 2017-01-17 | CVE-2026-43284-Regression eingeführt (cac2661c53f3) |
| 2023-06-08 | CVE-2026-43500-Regression eingeführt (2dc334f1a63a) |
| 2026-05-05 | CVE-2026-43284 im Mainline-Kernel gepatcht (f4c50a4034e6) |
| 2026-05-07 | Öffentliche Offenlegung |
| 2026-05-10 | CVE-2026-43500 im Mainline-Kernel gepatcht (aa54b1d27fe0) |
| 2026-05-10+ | Distributions-Patches werden ausgeliefert |