xooxo/CVE-2026-35250

GitHub: xooxo/CVE-2026-35250

这是一个 VirtualBox VBVA 图形设备整数溢出漏洞(CVE-2026-35250)的 PoC,展示如何从特权客户机触发主机堆溢出导致 DoS 崩溃。

Stars: 0 | Forks: 0

# CVE-2026-35250 我发现的第一个 CVE 评分为 2.3 - DevVGA_VBVA 上的整数溢出 - 可能导致来自特权客户机的 DoS - 发现过程和 PoC 完全由 AI 辅助编写 问题出在 `src/VBox/Devices/Graphics/DevVGA_VBVA.cpp:740-743` 的 `ASSERT_GUEST_MSG_RETURN`,其中的维度检查使用了 `||` (OR) 而不是 `&&` (AND)。客户机可以提供 `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 位的,我认为这不是一个可利用的漏洞。若要触发该“漏洞”,请在客户机上执行以下操作: ``` # Guest: 构建与加载 cd /path/to/poc make sudo insmod gfx1_exploit.ko ```
标签:0day, AI辅助漏洞发现, C++, CVE-2026-35250, CVSS 2.3, DevVGA_VBVA, heap-buffer-overflow, PoC, VirtualBox, 堆溢出, 客户端加密, 拒绝服务, 数据擦除, 整数溢出, 暴力破解, 空指针解引用, 虚拟化安全, 虚拟机逃逸, 逻辑漏洞