Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/0xcyberstan/cve-2026-59346-poc
Analisi delle VulnerabilitàExploitVirtualizzazione per la SicurezzaSicurezza Hardware e IoTPaper e RicercaBinary Exploitation
GitHub0xcyberstan/cve-2026-59346-poc

CVE-2026-59346-POC

PoC per CVE-2026-59346 - overflow di interi a 32 bit nel percorso di segmentazione TSO di VMXNET3 di VMware, crash da guest a host.

Vedi Repository
22h 3m faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-59346 — Overflow di interi TSO in VMXNET3 (VMware Workstation / Fusion)

Proof-of-concept per un overflow di interi a 32 bit nel percorso di segmentazione TSO della NIC virtuale VMXNET3 in vmware-vmx, raggiungibile da una VM guest.

Questo problema è stato corretto. Il PoC è pubblicato solo per scopi di ricerca e difensivi. Provoca un crash lato host (SIGSEGV) e non tenta l'esecuzione di codice.

CVECVE-2026-59346
Writeupcyberstan.co.uk/vmxnet3-tso-overflow
Advisory ZDIZDI-26-647
Advisory del vendorVMSA-2026-0007
CVSSv39.3 (vendor) / 7.5 (ZDI)
Corretto inWorkstation / Fusion 26H1u1
Segnalato tramiteTrend Micro Zero Day Initiative

Riepilogo

La routine di segmentazione TSO di VMXNET3 calcola la dimensione dell'allocazione come seg_count * per_seg_size usando un imul a 32 bit. Quando il prodotto reale supera 2^32 il risultato va in wrap e l'allocatore riceve il valore troncato. Il ciclo di segmentazione che segue è guidato da seg_count, non dalla dimensione dell'allocazione, quindi scrive per_seg_size byte per segmento in un buffer dimensionato sul prodotto andato in wrap.

Una correzione precedente per questo percorso di codice (CVE-2025-41236) aveva aggiunto controlli sui limiti che rifiutano i pacchetti in cui MSS, per_seg_size o la loro somma superano 9216. Tali controlli vincolano i singoli campi del descrittore ma mai il prodotto, che è il valore che effettivamente va in wrap. Parametri ben al di sotto del limite di 9216 raggiungono comunque l'overflow.

Analisi completa della causa radice, disassembly annotato e geometria dell'heap: cyberstan.co.uk/vmxnet3-tso-overflow.

Impatto

Un utente guest con privilegi sufficienti per scrivere descrittori TX grezzi può causare una vasta scrittura fuori dai limiti nel processo host vmware-vmx con contenuto tratto dal pacchetto fornito dal guest. In questo PoC la scrittura procede finché non raggiunge memoria non mappata e il processo host termina con SIGSEGV, spegnendo la VM.

Il vendor ha classificato il problema come tale da consentire l'esecuzione di codice arbitrario nel contesto dell'hypervisor; il PoC pubblicato dimostra solo la violazione della sicurezza della memoria e si ferma al crash.

Prodotti interessati

Tutti i prodotti hypervisor desktop VMware che condividono il backend VMXNET3 di vmware-vmx: Workstation, Fusion e Player. VMXNET3 è l'adattatore predefinito per i guest moderni. Consultare VMSA-2026-0007 per l'elenco autorevole delle versioni interessate.

Compilazione ed esecuzione

Il PoC è un modulo del kernel Linux che viene eseguito all'interno del guest. Scrive direttamente i descrittori dell'anello TX di VMXNET3, aggirando la logica TSO del driver in-kernel, quindi attiva il registro MMIO del doorbell.

root@kitploit:~
# Inside the guest VM, as root:

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

make
insmod vmxnet3_tso_trigger.ko

Il processo host vmware-vmx andrà in crash e il guest si spegnerà. Si prevede la perdita di qualsiasi stato non salvato nella VM; fare prima uno snapshot se si desidera rieseguirlo.

Prima di iniziare

Il guest necessita di un adattatore VMXNET3. Verificare con lspci | grep -i vmxnet o confermare ethernet0.virtualDev = "vmxnet3" nel file .vmx. Il modulo comunica direttamente con la NIC, quindi l'interfaccia deve essere attiva e associata al driver vmxnet3.

Parametri del modulo

ParametroPredefinitoScopo
ifnameeth0Interfaccia supportata dall'adattatore VMXNET3
dryrun01 scrive i descrittori ma salta il doorbell, quindi non viene attivato nulla
wait_ms0Ritardo in ms tra la configurazione dei descrittori e la scrittura del doorbell
txwarm0Pacchetti TSO da far passare attraverso l'anello prima del pacchetto di overflow
warmup0Allocazioni lato host da effettuare prima dell'attivazione
freechunk0Allocazioni della stessa dimensione da creare e rilasciare parzialmente prima dell'attivazione

warmup e freechunk modellano l'heap dell'host prima che l'overflow si verifichi. Non sono necessari per riprodurre il crash; lasciarli a zero a meno che non si stia analizzando il layout delle allocazioni.

Sequenza suggerita

Iniziare con una dry run per confermare che il modulo trovi l'anello e calcoli i parametri, senza toccare l'host:

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

L'output previsto include la geometria calcolata e l'anello TX individuato:

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

Se l'anello non viene trovato il modulo registra TX ring not found e si interrompe. Di solito ciò significa una differenza nel layout del driver; l'euristica di ricerca in find_tx_ring() deve essere adattata per quel kernel.

Poi attivare per davvero, su un'interfaccia non predefinita se necessario:

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

Il guest muore insieme al processo host, quindi gli ultimi messaggi potrebbero non raggiungere il disco. Per catturarli, osservare la console invece di affidarsi al journal:

root@kitploit:~
dmesg -w

Confermare il crash dal lato host nel vmware.log della VM, che mostrerà un PANIC: Unexpected signal: 11 con un backtrace attraverso l'allocatore sul thread vcpu-0.

Se non succede nulla

  • Host corretto. Qualsiasi versione da 26H1u1 in poi rifiuta il pacchetto. Il modulo registrerà normalmente e la VM continuerà a funzionare.
  • Interfaccia sbagliata. ifname deve indicare il dispositivo VMXNET3, non un bridge o un adattatore e1000 secondario.
  • Anello troppo piccolo. Il modulo si interrompe con need N entries but ring has M slots se l'anello TX non può contenere la catena di descrittori.

Ambiente testato

HostUbuntu 24.04 LTS, kernel 6.17.0, glibc 2.39
HypervisorVMware Workstation Pro 25.0.1 (build 25219725)
GuestAlpine Linux, kernel 6.12, NIC VMXNET3

Gli offset dei simboli a cui si fa riferimento nell'analisi sono specifici per la build 25219725. Il pattern vulnerabile è lo stesso tra le build, ma gli offset differiranno.

Contenuti

root@kitploit:~
vmxnet3_tso_trigger.c   trigger module
Makefile                   out-of-tree kernel module build

Correzione

La moltiplicazione deve essere eseguita a 64 bit, con il risultato limitato prima che raggiunga l'allocatore. Limitare i singoli campi del descrittore non è sufficiente, poiché l'overflow è una proprietà del prodotto e non di uno dei due operandi.

Cronologia della divulgazione

DataEvento
2026Segnalato a Trend Micro ZDI
Settembre 2026Corretto da Broadcom in 26H1u1 (VMSA-2026-0007)
Settembre 2026Pubblicato ZDI-26-647

Uso

Pubblicato nell'ambito della divulgazione coordinata, dopo il rilascio di una correzione. Eseguirlo solo contro sistemi di propria proprietà o per i quali si è autorizzati a eseguire test. Provocherà il crash del processo hypervisor dell'host, quindi non puntarlo contro nulla a cui si tiene.

Autore

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

Scarica lo strumento