
CVE-2026-43284 und CVE-2026-43500 Dirty Frag PoC und Exploit
Lesbarer N4C-Demonstrator für CVE-2026-43284 (XFRM/ESP) und CVE-2026-43500 (RxRPC/RXKAD).
Der PoC beantwortet eine Frage: kann ein unprivilegierter Prozess den Page-Cache
einer root-eigenen, schreibgeschützten Datei über ein gemeinsames sk_buff-Fragment
verändern? Er überschreibt nicht /usr/bin/su oder /etc/passwd, installiert
keinen Payload, ruft kein PAM/NSS auf und startet keine Shell. Der vollständige
öffentliche Exploit bleibt auf dem Branch exploit.
dirtyfrag-poc.c — die beiden Page-Cache-Primitiven und eine kleine CLI.prepare-lab.sh — erstellt zwei harmlose root-eigene Fixtures.run_as_1000.c / run-as-1000 — setzt die Root-Shell der VM auf uid/gid 1000 herab.Makefile — reproduzierbarer statischer Build.--esp)schreibgeschütztes Fixture
-> splice(Datei -> Pipe -> UDP-Socket)
-> skb-Paged-Fragment
-> ESP-Authencesn-In-Place-STORE
-> die ersten vier gecachten Bytes werden zu "N4C!"
Es werden nur eine XFRM-SA und ein Vier-Byte-Schreibvorgang verwendet. Das Root-Shell-ELF und seine 48-Trigger-Assembly-Schleife aus dem öffentlichen Exploit wurden entfernt.
--rxrpc)schreibgeschütztes Fixture
-> splice(Datei -> gefälschtes RxRPC-DATA-Paket)
-> RXKAD-pcbc(fcrypt)-In-Place-Entschlüsselung
-> ein schlüsselausgewählter 8-Byte-Schreibvorgang
-> die gecachten Bytes unterscheiden sich vom ursprünglichen Fixture
Der PoC sucht nicht nach einem passwortförmigen Klartext, da jeder veränderte
Acht-Byte-Block die Primitive bereits beweist. Die Offline-fcrypt-Brute-Force,
der Overlapping-Write-Planer, PAM, getent, passwortloses su, die
PTY-Verarbeitung und der Shell-Code wurden entfernt.
Nur in einer wegwerfbaren, autorisierten Linux-VM mit den erforderlichen Kernel-Funktionen verwenden.
make
# Einmal als Root-Benutzer der VM ausführen, um bekannte Fixture-Bytes neu zu erstellen.
./prepare-lab.sh
# Der Helfer führt den PoC dann als uid/gid 1000 aus.
./run-as-1000 ./dirtyfrag-poc --esp --verbose
./prepare-lab.sh
./run-as-1000 ./dirtyfrag-poc --rxrpc --verbose
Exit-Status:
0 — Marker erschien im Page-Cache; Primitive beobachtet.1 — Marker erschien nicht; der Shared-Frag-Schreibvorgang wurde abgelehnt.2 — ungültiges Fixture, nicht unterstützte Umgebung oder Setup-Fehler.3 — RxRPC-Trigger schlug vor der Verifizierung fehl.Zwischen den Läufen die Fixtures neu erstellen oder die wegwerfbare VM neu starten.
main() wählt eine Primitive aus und weigert sich, als uid 0 zu laufen.esp_poc() zeigt den Vier-Byte-XFRM/ESP-Fall.rxrpc_poc() zeigt einen Trigger und einen direkten Vorher/Nachher-Vergleich.Die Protokollkonstruktion wurde aus dem Linux-Kernel-Quellcode und der öffentlichen
V4bel/dirtyfrag-Referenzimplementierung
am Commit aab16fcada27142dd8ce8704906cf6736cf213b8 abgeleitet. N4C hat den
Ausführungsfluss in diesen Fixture-only-Demonstrator umgeschrieben und den
Privilege-Escalation-Payload sowie die Consumer-Stufen entfernt.