
# CVE-2026-35250 개념 증명 VirtualBox의 DevVGA_VBVA에서 발생하는 정수 오버플로우에 대한 개념 증명으로, 권한 있는 게스트를 통한 서비스 거부(DoS)로 이어집니다. AI 기반 분석 및 익스플로잇 모듈을 포함합니다.
제 첫 CVE는 2.3입니다.
문제는 src/VBox/Devices/Graphics/DevVGA_VBVA.cpp:740-743에 있으며, ASSERT_GUEST_MSG_RETURN에서 차원 검사가 &&(AND) 대신 ||(OR)를 사용합니다. 게스트가 width=0x80000001, height=16을 제공하면 height <= 2048이므로 검사를 통과합니다. 그런 다음 745-746행에서:
cbPointerData = ((((SafeShape.u32Width + 7) / 8) * SafeShape.u32Height + 3) & ~3)
+ SafeShape.u32Width * 4 * SafeShape.u32Height;
748행의 후속 검사(cbPointerData <= cbShape - 24)는 잘린 값(80 <= 104)으로 통과합니다. 호스트는 RTMemAlloc을 통해 80바이트를 할당하고, 게스트 VRAM에서 80바이트를 복사한 다음, 2,147,483,649 × 16 차원과 80바이트 버퍼를 에 전달하며, 이 함수는 거대한 차원을 사용하여 커서 모양을 처리합니다.
pfnVBVAMousePointerShape호스트는 오버플로우된 차원에서 AND 마스크 스캔라인 너비를 계산하고 80바이트 힙 버퍼를 초과하여 읽습니다.
크래시 1 — NULL 포인터 쓰기(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)
크래시 2 — 힙 초과 읽기(EMT/메인 스레드):
ExceptionCode=0xc0000005 ExceptionAddress=VBoxC.dll+0x000d1194
ExceptionInformation[0]=0 (READ) ExceptionInformation[1]=0x00000263cefe8fd0
rax=0x80000001 (POISON_WIDTH) r12=0x10000001 ((WIDTH+7)/8 = AND scanline width)
r13=0x10 (POISON_HEIGHT=16) r8=0x80000001 (POISON_WIDTH)
호스트가 64비트이므로 악용 가능한 문제는 아니라고 생각합니다. "악용"을 위해 게스트에서 다음을 수행하세요:
# 게스트: 빌드 및 로드
cd /path/to/poc
make
sudo insmod gfx1_exploit.ko