
Technische Analyse von CVE-2026-43284 (Dirty Frag), einer lokalen Privilegieneskalation im Linux-Kernel-xfrm-ESP, die Page-Cache-Schreibvorgänge auf schreibgeschützte Dateien zur Root-Kompromittierung ermöglicht.
Detaillierte technische Analyse der lokalen Privilegieneskalations-Schwachstelle CVE-2026-43284 (Dirty Frag) im Linux-Kernel.
CVE-2026-43284 (üblicherweise als Teil der Dirty-Frag-Schwachstellensuite bezeichnet) ist eine kritische Schwachstelle zur lokalen Privilegieneskalation (LPE) im Linux-Kernel. Sie resultiert aus einem Logikfehler innerhalb des xfrm-ESP-Eingabe-Subsystems (Encapsulating Security Payload). Der Fehler ermöglicht es einem lokalen, unprivilegierten Angreifer, die üblichen Copy-on-Write-Schutzmechanismen (CoW) zu umgehen und eine beliebige Page-Cache-Schreibprimitive in schreibgeschützte Systemdateien (wie /usr/bin/su) zu erlangen, was letztlich zu einer vollständigen Root-Kompromittierung führt.
Aufschlüsselung der Schwachstelle & Angriffsvektor1.
Die Einschränkung: Die Interaktion mit der IPsec-Konfiguration des Kernels erfordert normalerweise die Fähigkeit CAP_NET_ADMIN, ein Privileg, das dem normalen Benutzer vorbehalten ist. Die Umgehung: Ein lokaler unprivilegierter Benutzer kann einen separaten unprivilegierten User-Namespace und Network-Namespace erstellen (unter Verwendung von Flags wie CLONE_NEWUSER | CLONE_NEWNET). Innerhalb dieses isolierten unprivilegierten Container-Raums wird der Angreifer zum "Root"-Prozess dieses Namespace und erhält dadurch CAP_NET_ADMIN-Privilegien innerhalb dieses begrenzten Kontexts.
Mit CAP_NET_ADMIN innerhalb des benutzerdefinierten Netzwerk-Namespace konfiguriert der Angreifer eine gefälschte Security Association (SA) und IPsec-Richtlinien.
Unter Verwendung von Systemaufrufen wie splice(2) oder vmsplice(2) hängt der Angreifer Seiten, die zu einer Ziel-schreibgeschützten Datei gehören (z. B. /usr/bin/su), an ein Socket-Puffer-Fragment (skb) an.
Die Einschränkung: Der Angreifer muss den Kernel dazu zwingen, die Daten durch die esp_input()-Routine zu parsen.
Die Strategie: Der Angreifer erstellt eine ESP-in-UDP-Kapselungsnetzwerkstruktur und leitet die Übertragung an die Loopback-Schnittstelle des Hosts (127.0.0.1) weiter.
Wenn das Paket lokal über den Loopback-Kanal empfangen wird, identifiziert der Netzwerk-Stack des Kernels den UDP-Paket-Wrapper, entkapselt ihn und übergibt die innere Nutzlast zur Verarbeitung an esp_input().
Aufgrund eines Logikfehlers in den IPv4/IPv6-Datagramm-Anhängepfaden versäumt es der Kernel, die zugrunde liegenden Socket-Puffer-Fragmente ordnungsgemäß mit dem SKBFL_SHARED_FRAG-Flag zu markieren, wenn Seiten in UDP-Sockets eingefügt werden.
Folglich interpretiert esp_input() das Paket fälschlicherweise als privaten, nicht geklonten Puffer und nimmt einen "No-COW"-Performance-Optimierungs-Schnellpfad.
Anstatt die Daten in einen sicheren Benutzerpuffer zu kopieren, führt esp_input() eine In-Place-Entschlüsselung direkt über die aus dem Page-Cache des Systems entliehenen Speicherseiten durch.
Durch Feinabstimmung der verschlüsselten Nutzlastdaten und Nutzung der kryptografischen Algorithmuskonfiguration (wie Extended Sequence Numbers) überschreibt der Entschlüsselungsprozess deterministisch die Zielbinärdatei im Page-Cache.
Sobald der Page-Cache einer Binärdatei wie /usr/bin/su im Speicher mit der Nutzlast des Angreifers vergiftet ist, löst die Ausführung der Binärdatei die Ausführung der Nutzlast als Root aus, ohne jemals die auf der tatsächlichen physischen Festplatte gespeicherte Binärdatei zu berühren oder zu verändern.
Auswirkung: Hochzuverlässige, deterministische lokale Privilegieneskalation über wichtige Unternehmens-Linux-Distributionen hinweg, ohne das Risiko von Kernel-Panics.
Behebung: Aktualisieren Sie den Linux-Kernel auf Versionen, die den Patch enthalten, der die SKBFL_SHARED_FRAG-Behandlung für Datagramm-Splices erzwingt und einen sicheren Fallback auf skb_cow_data() innerhalb der ESP-Verarbeitungslogik einführt.