
Proof-of-concept per CVE-2026-35250, un overflow di interi in DevVGA_VBVA di VirtualBox che porta a denial of service tramite un guest privilegiato. Include analisi assistita da IA e modulo exploit.
la mia prima CVE è un 2.3
Il problema è in src/VBox/Devices/Graphics/DevVGA_VBVA.cpp:740-743 ASSERT_GUEST_MSG_RETURN dove il controllo delle dimensioni usa || (OR) invece di && (AND). Un guest può fornire width=0x80000001, height=16 e il controllo passa perché height <= 2048. Poi alle righe 745-746:
cbPointerData = ((((SafeShape.u32Width + 7) / 8) * SafeShape.u32Height + 3) & ~3)
+ SafeShape.u32Width * 4 * SafeShape.u32Height;
Il controllo successivo alla riga 748 (cbPointerData <= cbShape - 24) passa con il valore troncato (80 <= 104). L'host alloca 80 byte tramite RTMemAlloc, copia 80 byte dalla VRAM del guest, poi passa le dimensioni 2.147.483.649 × 16 con un buffer di 80 byte a , che elabora la forma del cursore usando le dimensioni enormi.
pfnVBVAMousePointerShapel'host calcola la larghezza della scanline della maschera AND dalle dimensioni in overflow e legge oltre il buffer heap di 80 byte.
Crash 1 — Scrittura a puntatore NULL (thread di visualizzazione GUI):
ExceptionCode=0xc0000005 ExceptionAddress=VirtualBoxVM.dll+0x000267a2
ExceptionInformation[0]=1 (WRITE) ExceptionInformation[1]=0x0000000000000000 (NULL)
rsi=0x80000001 (POISON_WIDTH) r13=0x10 (POISON_HEIGHT=16) rcx=0x0 (NULL dest)
Crash 2 — Over-READ dell'heap (thread EMT/main):
ExceptionCode=0xc0000005 ExceptionAddress=VBoxC.dll+0x000d1194
ExceptionInformation[0]=0 (READ) ExceptionInformation[1]=0x00000263cefe8fd0
rax=0x80000001 (POISON_WIDTH) r12=0x10000001 ((WIDTH+7)/8 = larghezza scanline AND)
r13=0x10 (POISON_HEIGHT=16) r8=0x80000001 (POISON_WIDTH)
Poiché l'host è a 64 bit, non credo sia un problema sfruttabile. Per lo "exploit", fai questo sul guest:
# Guest: build and load
cd /path/to/poc
make
sudo insmod gfx1_exploit.ko