
Tester für CVE-2026-43284
Ein Community-Diagnosewerkzeug, um festzustellen, ob ein XCP-ng dom0-Host gegenüber CVE-2026-43284 („Dirty Frag“) exponiert ist – einer lokalen Privilegieneskalationslücke im xfrm-ESP-Subsystem des Linux-Kernels.
TL;DR — Alle aktuellen XCP-ng-Versionen (8.1, 8.2, 8.3) mit dem standardmäßigen dom0-Kernel 4.19 liegen im verwundbaren Codebereich. Stand Mai 2026 wurde noch kein offizieller XCP-ng-Patch veröffentlicht. Dieses Tool sagt Ihnen eindeutig, ob Ihr Host exponiert ist, und bietet eine sichere Zwischenlösung.
„Dirty Frag“ ist eine lokal ausnutzbare Privilegieneskalationslücke, die im Mai 2026 vom Forscher Hyunwoo Kim (@v4bel) veröffentlicht wurde. Sie nutzt einen direkten Entschlüsselungs-Pfad im IPsec-ESP-Subsystem des Linux-Kernels aus, der im Januar 2017 (Kernel 4.14+) eingeführt wurde. Ein öffentlich verfügbarer Proof-of-Concept liefert eine Root-Shell über normale Systemaufrufe – ohne Kernel-Exploits.
Zwei CVEs wurden veröffentlicht:
| CVE | Subsystem | Eingeführt | Gilt für XCP-ng 4.19? |
|---|---|---|---|
| CVE-2026-43284 | xfrm-ESP (esp4/esp6) | Kernel 4.14, Jan. 2017 | JA |
| CVE-2026-43500 | RxRPC (rxkad) | Kernel 6.4, Juni 2023 | Nein – rxrpc.ko nicht enthalten |
XCP-ng benötigt CVE-2026-43500 nicht zur Ausnutzung. Der esp4-Pfad (CVE-2026-43284) allein ist ausreichend, da XCP-ng dom0 keine AppArmor-Richtlinie besitzt und die Erstellung unprivilegierter Benutzernamensräume erlaubt – die einzige Voraussetzung, die der esp4-Exploit-Pfad benötigt. Siehe TECHNICAL.md für die vollständige Analyse.
Das Diagnoseskript testet die notwendige und hinreichende Voraussetzung für CVE-2026-43284 auf XCP-ng: ob ein unprivilegierter Prozess die esp4-Direktentschlüsselungsengine über die XFRM-Netlink-Schnittstelle innerhalb eines Benutzernamensraums aktivieren kann.
Es führt nicht Folgendes durch:
Es ist sicher, auf Produktions-dom0 auszuführen.
# Repository klonen
git clone https://github.com/grabesec/XCP_ng_CVE-2026-43284_tester.git
cd XCP_ng_CVE-2026-43284_tester
# Diagnose ausführen (als Nicht-Root für den stärksten Nachweis)
python3 XCP_ng_CVE_2026_43284_tester.py
Hinweis: Führen Sie das Skript wenn möglich als Nicht-Root-Benutzer aus. Dies simuliert das reale Bedrohungsmodell: ein kompromittiertes Dienstkonto oder ein Gastausbruch, der dom0 erreicht. Die Ausführung als Root liefert ebenfalls ein gültiges Ergebnis, ist aber weniger aussagekräftig.
=================================================================
XCP-ng Dirty Frag Diagnostic -- CVE-2026-43284
xfrm-ESP Page-Cache Write / Local Privilege Escalation
=================================================================
Kernel : 4.19.0+1
Host : xcpng-prod-01
PID : 52306 | UID: 1000
=================================================================
[Phase 0] Pre-flight-Umgebungsprüfungen
---------------------------------------------
[*] Unprivilegierte Benutzernamensräume : ERLAUBT
[*] esp4-Blacklist in modprobe.d : NICHT GEFUNDEN
[*] CVE-2026-43284-Patch im Kernel-RPM : NICHT GEFUNDEN
[Phase 1] Basisstatus des esp4-Moduls
---------------------------------------------
[*] esp4 ist SCHLAFEND – derzeit nicht im Kernel geladen.
Der Autoload-Mechanismus könnte es bei Bedarf über XFRM nachladen.
[Phase 2] Versuch der esp4-Aktivierung aus unprivilegiertem Namensraum
---------------------------------------------
[*] Erzeuge Kindprozess in isoliertem Benutzer- und Netzwerk-Namensraum
(unshare -U -n -r) – simuliert einen lokalen Nicht-Root-Angreifer
[*] Kind-Signal : XFRM SA vom Kernel akzeptiert
[*] esp4-Referenzzähler : 0 (vorher) -> 1 (jetzt)
[*] /proc/modules : esp4 16384 1 - Live 0xffffffffc0a12000
[Phase 3] Technisches Urteil
=================================================================
[!!!] NACHWEIS DER EXPONIERUNG – CVE-2026-43284 [!!!]
Referenzzähler von esp4 erhöht: 0 -> 1
Ein unprivilegierter Prozess innerhalb eines Benutzer- und
Netzwerk-Namensraums hat erfolgreich eine XFRM-Sicherheitsassoziation
registriert und die esp4-Direktentschlüsselungsengine im Host-Kernel
aktiviert. Dies ist die Eingangsbedingung für CVE-2026-43284.
XCP-ng-spezifische Analyse:
[FEHLER] Kernel 4.19 enthält den verwundbaren Code (seit 4.14)
[FEHLER] Benutzernamensräume sind offen – esp4-Pfad erreichbar
[OK] rxrpc.ko nicht vorhanden – CVE-2026-43500 trifft nicht zu
[FEHLER] esp4-Pfad allein ist auf dieser Konfiguration ausreichend
[Phase 0] Pre-flight-Umgebungsprüfungen
---------------------------------------------
[+] esp4-Blacklist in /etc/modprobe.d/ gefunden
Die Modulladungsabschwächung scheint vorhanden zu sein.
...
[Phase 2] Versuch der esp4-Aktivierung aus unprivilegiertem Namensraum
---------------------------------------------
[+] XFRM-Zustandshinzufügen wurde vom Kernel ABGELEHNT.
Die esp4-Engine wurde aus dem Namensraum nicht aktiviert.
[ERGEBNIS] Der Namensraum-Trick gewährte keinen esp4-Zugriff.
Das enthaltene Skript mitigate.sh wendet die Milderung sicher an, mit integrierter IPsec-Erkennung, um Tunnel nicht zu unterbrechen:
# Nur aktuellen Status prüfen (keine Änderungen)
sudo ./mitigate.sh --check
# Milderung anwenden (bricht ab, wenn IPsec erkannt wird)
sudo ./mitigate.sh
# Milderung entfernen (nach Anwendung des offiziellen Kernel-Patches)
sudo ./mitigate.sh --undo
Option A – Hosts ohne IPsec (die meisten dom0s):
echo 'install esp4 /bin/false' > /etc/modprobe.d/dirtyfrag-cve-2026-43284.conf
rmmod esp4 2>/dev/null || true
echo 3 > /proc/sys/vm/drop_caches
Option B – Hosts mit IPsec (strongSwan / Libreswan):
Blacklisten Sie esp4 NICHT – dies würde sofort alle Tunnel unterbrechen. Stattdessen:
⚠️ Dies ist eine LOKALE Privilegieneskalation. Ein Angreifer muss bereits eine Shell oder Codeausführung auf dom0 haben. Die primäre Verteidigung besteht darin, den lokalen Zugriff auf dom0 von vornherein einzuschränken. dom0-root = Hypervisor-Root = alle Gast-VMs kompromittiert.
| Anforderung | Hinweise |
|---|---|
| Python 3.6+ | In XCP-ng 8.x dom0 enthalten |
iproute2 (ip-Befehl) | In XCP-ng 8.x dom0 enthalten |
unshare | Teil von util-linux, in XCP-ng 8.x dom0 enthalten |
| Linux-Kernel | Jeder Kernel 4.14–6.x auf einem XCP-ng dom0 |
Es werden keine externen Python-Bibliotheken benötigt. Keine pip-Installation erforderlich.
XCP_ng_CVE-2026-43284_tester/
├── XCP_ng_CVE_2026_43284_tester.py # Diagnoseskript – zuerst ausführen
├── mitigate.sh # Milderungsskript mit IPsec-Erkennung
├── README.md # Diese Datei – Schnellstart und Übersicht
├── TECHNICAL.md # Tiefgehende technische Analyse – Angriffskette,
│ # warum rxrpc auf XCP-ng nicht benötigt wird,
│ # Erklärung der Skriptinterna
├── CHANGELOG.md # Versionsgeschichte
└── LICENSE # MIT
Eine vollständige Erklärung von:
Siehe TECHNICAL.md.
| XCP-ng Version | Kernel | Verwundbar? | Offizieller Patch? |
|---|---|---|---|
| 8.3 LTS | 4.19 + Vates-Patches | JA | Stand Mai 2026 nicht veröffentlicht |
| 8.2 | 4.19 + Vates-Patches | JA | Stand Mai 2026 nicht veröffentlicht |
| 8.1 (EOL) | 4.19 + Vates-Patches | JA | Nicht zu erwarten |
Dieses Tool testet nur die Vorbedingung für die Ausnutzung (Namensraum + esp4-Zugriff). Es enthält, reproduziert oder referenziert keinen Exploit-Code. Die zugrunde liegende Sicherheitslücke ist öffentlich bekannt, hat einen veröffentlichten Proof-of-Concept des ursprünglichen Forschers und wurde mit CVEs versehen. Der Zweck dieses Tools ist es, XCP-ng-Administratoren zu helfen, ihre Gefährdung zu bestimmen und Übergangsmilderungen anzuwenden, während sie auf einen offiziellen Kernel-Patch von Vates warten.
Rodrigo Gracia – Community-Sicherheitsbeitrag
XCP-ng / Xen Orchestra Praktiker
https://github.com/grabesec
Mai 2026