Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/0xcyberstan/cve-2026-59346-poc
SchwachstellenanalyseExploitationSicherheitsvirtualisierungHardware- & IoT-SicherheitPapers & ForschungBinary-Exploitation
GitHub0xcyberstan/cve-2026-59346-poc

CVE-2026-59346-POC

PoC für CVE-2026-59346 – 32-Bit-Ganzzahlüberlauf im TSO-Segmentierungspfad von VMXNET3 in VMware, Gast-zu-Host-Absturz.

Repository anzeigen
vor 22h 3mNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-59346 — VMXNET3 TSO Integer Overflow (VMware Workstation / Fusion)

Proof-of-Concept für einen 32-Bit-Integer-Overflow im TSO-Segmentierungspfad der virtuellen VMXNET3-NIC in vmware-vmx, erreichbar aus einer Gast-VM.

Dieses Problem ist gepatcht. Das PoC wird ausschließlich zu Forschungs- und Verteidigungszwecken veröffentlicht. Es löst einen hostseitigen Absturz (SIGSEGV) aus und versucht keine Codeausführung.

CVECVE-2026-59346
Writeupcyberstan.co.uk/vmxnet3-tso-overflow
ZDI-AdvisoryZDI-26-647
Hersteller-AdvisoryVMSA-2026-0007
CVSSv39.3 (Hersteller) / 7.5 (ZDI)
Behoben inWorkstation / Fusion 26H1u1
Gemeldet überTrend Micro Zero Day Initiative

Zusammenfassung

Die TSO-Segmentierungsroutine von VMXNET3 berechnet ihre Allokationsgröße als seg_count * per_seg_size unter Verwendung eines 32-Bit-imul. Wenn das tatsächliche Produkt 2^32 überschreitet, läuft das Ergebnis über, und der Allocator erhält den abgeschnittenen Wert. Die nachfolgende Segmentierungsschleife wird von seg_count gesteuert, nicht von der Allokationsgröße, sodass sie per_seg_size Bytes pro Segment in einen Puffer schreibt, dessen Größe auf dem übergelaufenen Produkt basiert.

Ein früherer Fix für diesen Codepfad (CVE-2025-41236) fügte Grenzwertprüfungen hinzu, die Pakete ablehnen, bei denen MSS, per_seg_size oder deren Summe 9216 überschreiten. Diese Prüfungen beschränken die einzelnen Deskriptorfelder, aber niemals das Produkt, also den Wert, der tatsächlich überläuft. Parameter, die deutlich unter dem Grenzwert von 9216 liegen, erreichen den Overflow weiterhin.

Vollständige Root-Cause-Analyse, annotierte Disassembly und Heap-Geometrie: cyberstan.co.uk/vmxnet3-tso-overflow.

Auswirkung

Ein Gastbenutzer mit ausreichenden Rechten zum Schreiben roher TX-Deskriptoren kann einen großen Out-of-Bounds-Schreibvorgang im Host-Prozess vmware-vmx verursachen, wobei der Inhalt aus dem vom Gast gelieferten Paket stammt. In diesem PoC läuft der Schreibvorgang, bis er nicht gemappten Speicher erreicht, und der Host-Prozess stirbt mit SIGSEGV, wodurch die VM ausgeschaltet wird.

Der Hersteller stufte das Problem als Möglichkeit zur Ausführung beliebigen Codes im Hypervisor-Kontext ein; das veröffentlichte PoC demonstriert nur die Speichersicherheitsverletzung und endet beim Absturz.

Betroffene Produkte

Alle VMware-Desktop-Hypervisor-Produkte, die dasselbe VMXNET3-Backend in vmware-vmx verwenden: Workstation, Fusion und Player. VMXNET3 ist der Standardadapter für moderne Gäste. Die maßgebliche Liste der betroffenen Versionen finden Sie in VMSA-2026-0007.

Erstellen und Ausführen

Das PoC ist ein Linux-Kernelmodul, das innerhalb des Gastes läuft. Es schreibt VMXNET3-TX-Ring-Deskriptoren direkt und umgeht dabei die TSO-Logik des In-Kernel-Treibers, und läutet dann das Doorbell-MMIO-Register.

root@kitploit:~
# Innerhalb der Gast-VM, als root:

# Kernel-Header
apk add linux-virt-dev                        # Alpine
# apt install linux-headers-$(uname -r)       # Debian / Ubuntu

make
insmod vmxnet3_tso_trigger.ko

Der Host-Prozess vmware-vmx wird abstürzen und der Gast wird ausgeschaltet. Rechnen Sie mit dem Verlust nicht gespeicherter Zustände in der VM, und erstellen Sie zuerst einen Snapshot, wenn Sie es erneut ausführen möchten.

Bevor Sie beginnen

Der Gast benötigt einen VMXNET3-Adapter. Prüfen Sie dies mit lspci | grep -i vmxnet oder bestätigen Sie ethernet0.virtualDev = "vmxnet3" in der .vmx-Datei. Das Modul kommuniziert direkt mit der NIC, daher muss das Interface aktiv und an den Treiber vmxnet3 gebunden sein.

Modulparameter

ParameterStandardZweck
ifnameeth0Interface, das vom VMXNET3-Adapter unterstützt wird
dryrun01 schreibt die Deskriptoren, überspringt aber das Doorbell, sodass nichts ausgelöst wird
wait_ms0Verzögerung in ms zwischen Deskriptor-Setup und Doorbell-Schreibvorgang
txwarm0TSO-Pakete, die vor dem Overflow-Paket durch den Ring geschickt werden
warmup0Hostseitige Allokationen, die vor dem Auslösen ausgeführt werden
freechunk0Gleich große Allokationen, die vor dem Auslösen erstellt und teilweise freigegeben werden

warmup und freechunk formen den Host-Heap, bevor der Overflow auftritt. Sie sind nicht erforderlich, um den Absturz zu reproduzieren; lassen Sie sie auf null, es sei denn, Sie untersuchen das Allokationslayout.

Empfohlene Reihenfolge

Beginnen Sie mit einem Dry Run, um zu bestätigen, dass das Modul den Ring findet und Parameter berechnet, ohne den Host zu beeinträchtigen:

root@kitploit:~
insmod vmxnet3_tso_trigger.ko dryrun=1
dmesg | tail -20
rmmod vmxnet3_tso_trigger

Die erwartete Ausgabe enthält die berechnete Geometrie und den gefundenen TX-Ring:

root@kitploit:~
tso_v8: per_seg=6240 (0x1860), HDR_TOTAL=6222, MSS=1
tso_v8: PARAMS: alloc=... overflow=... seg_count=... paylen=...
tso_v8: ring at priv+N: base=... sz=... n2f=... gen=...
tso_v8: DRYRUN -- descriptors written but NOT triggered

Wenn der Ring nicht gefunden wird, protokolliert das Modul TX ring not found und bricht ab. Das bedeutet normalerweise eine Abweichung im Treiberlayout; die Suchheuristik in find_tx_ring() muss für diesen Kernel angepasst werden.

Lösen Sie es dann tatsächlich aus, bei Bedarf auf einem nicht standardmäßigen Interface:

root@kitploit:~
insmod vmxnet3_tso_trigger.ko ifname=eth1

Der Gast stirbt zusammen mit dem Host-Prozess, sodass die letzten Meldungen möglicherweise nicht auf die Festplatte gelangen. Um sie zu erfassen, beobachten Sie die Konsole, anstatt sich auf das Journal zu verlassen:

root@kitploit:~
dmesg -w

Bestätigen Sie den Absturz von der Host-Seite aus im vmware.log der VM, das einen PANIC: Unexpected signal: 11 mit einem Backtrace durch den Allocator im Thread vcpu-0 zeigen wird.

Wenn nichts passiert

  • Gepatchter Host. Alles ab 26H1u1 oder später lehnt das Paket ab. Das Modul protokolliert normal und die VM läuft weiter.
  • Falsches Interface. ifname muss das VMXNET3-Gerät benennen, nicht eine Bridge oder einen sekundären e1000-Adapter.
  • Ring zu klein. Das Modul bricht mit need N entries but ring has M slots ab, wenn der TX-Ring die Deskriptorkette nicht aufnehmen kann.

Getestete Umgebung

HostUbuntu 24.04 LTS, Kernel 6.17.0, glibc 2.39
HypervisorVMware Workstation Pro 25.0.1 (Build 25219725)
GastAlpine Linux, Kernel 6.12, VMXNET3-NIC

Die in der Analyse referenzierten Symbol-Offsets sind spezifisch für Build 25219725. Das anfällige Muster ist über Builds hinweg dasselbe, aber die Offsets werden abweichen.

Inhalt

root@kitploit:~
vmxnet3_tso_trigger.c   Trigger-Modul
Makefile                   Out-of-Tree-Kernelmodul-Build

Fix

Die Multiplikation muss in 64 Bit durchgeführt werden, wobei das Ergebnis begrenzt werden muss, bevor es den Allocator erreicht. Die Begrenzung der einzelnen Deskriptorfelder ist nicht ausreichend, da der Overflow eine Eigenschaft des Produkts und nicht eines der beiden Operanden ist.

Offenlegungs-Zeitplan

DatumEreignis
2026Gemeldet an Trend Micro ZDI
Sept. 2026Gepatcht von Broadcom in 26H1u1 (VMSA-2026-0007)
Sept. 2026ZDI-26-647 veröffentlicht

Verwendung

Veröffentlicht im Rahmen der koordinierten Offenlegung, nachdem ein Fix ausgeliefert wurde. Führen Sie es nur gegen Systeme aus, die Ihnen gehören oder für die Sie eine Testautorisierung haben. Es wird den Host-Hypervisor-Prozess zum Absturz bringen, richten Sie es also nicht auf etwas, das Ihnen wichtig ist.

Autor

Stan S - cyberstan.co.uk · @0xCyberstan

Tool herunterladen