
CVE-2026-35250の概念実証。VirtualBoxのDevVGA_VBVAにおける整数オーバーフローで、特権ゲスト経由でサービス拒否を引き起こします。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スキャンライン幅)
r13=0x10 (POISON_HEIGHT=16) r8=0x80000001 (POISON_WIDTH)
ホストは64ビットなので、これは悪用可能な問題ではないと思います。「悪用」するには、ゲスト側で以下を実行します:
# ゲスト: ビルドしてロード
cd /path/to/poc
make
sudo insmod gfx1_exploit.ko