
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.
| 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 |
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:
| 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 |
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
| 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 |
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