
Preuve de concept pour CVE-2026-35250, un dépassement d'entier dans DevVGA_VBVA de VirtualBox menant à un déni de service via un invité privilégié. Inclut une analyse assistée par IA et un module d'exploitation.
ma toute première CVE est une 2.3
Le problème se situe dans src/VBox/Devices/Graphics/DevVGA_VBVA.cpp:740-743 au niveau de l'ASSERT_GUEST_MSG_RETURN où la vérification des dimensions utilise || (OU) au lieu de && (ET). Un invité peut fournir width=0x80000001, height=16 et la vérification passe car height <= 2048. Ensuite, aux lignes 745-746 :
cbPointerData = ((((SafeShape.u32Width + 7) / 8) * SafeShape.u32Height + 3) & ~3)
+ SafeShape.u32Width * 4 * SafeShape.u32Height;
La vérification suivante à la ligne 748 (cbPointerData <= cbShape - 24) passe avec la valeur tronquée (80 <= 104). L'hôte alloue 80 octets via , copie 80 octets depuis la VRAM de l'invité, puis transmet les dimensions 2 147 483 649 × 16 avec un tampon de 80 octets à , qui traite la forme du curseur en utilisant les dimensions énormes.
RTMemAllocpfnVBVAMousePointerShapel'hôte calcule le masque ET de la largeur de scanline à partir des dimensions en débordement et lit au-delà du tampon de tas de 80 octets.
Crash 1 — Écriture sur pointeur NULL (thread d'affichage 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 — Lecture excessive du tas (thread EMT/principal) :
ExceptionCode=0xc0000005 ExceptionAddress=VBoxC.dll+0x000d1194
ExceptionInformation[0]=0 (READ) ExceptionInformation[1]=0x00000263cefe8fd0
rax=0x80000001 (POISON_WIDTH) r12=0x10000001 ((WIDTH+7)/8 = largeur de scanline du masque ET)
r13=0x10 (POISON_HEIGHT=16) r8=0x80000001 (POISON_WIDTH)
Étant donné que l'hôte est en 64 bits, je ne pense pas que ce soit un problème exploitable. Pour « l'exploit », faites ceci sur l'invité :
# Invité : compiler et charger
cd /path/to/poc
make
sudo insmod gfx1_exploit.ko