
CVE-2026-76036용 차등 탐지 하네스로, Android의 Chrome에서 발생하는 Dawn WebGPU 힙 버퍼 오버플로우입니다. 취약한 깊이/스텐실 텍스처 조합을 프로빙하고 GPU 프로세스 충돌을 모니터링하여 브라우저 및 GPU 노출를 분류합니다.
Dawn(Chromium의 WebGPU 구현) 및 Android용 Google Chrome 151.0.7922.169 이전 버전(stable 151, 2026-08-18 출시)에서 치명적인(CVSS 9.6, CWE-122) 힙 버퍼 오버플로가 발생합니다.
Dawn 수정 커밋 178fb7048ad3에 따른 근본 원인: PowerVR 독점 Vulkan 드라이버가 2의 거듭제곱이 아닌(NPOT) 깊이/스텐실 텍스처의 밉 레벨 크기를 잘못 계산합니다. 영향받는 하드웨어에서 깊이/스텐실 형식, NPOT 크기, mipLevelCount > 1로 device.createTexture()를 호출하는 웹 페이지가 GPU 프로세스 힙을 손상시킵니다. NVD: "원격 공격자가 조작된 HTML 페이지를 통해 샌드박스 외부에서 임의 코드를 실행할 수 있음".
정확한 트리거는 비공개 Chromium 버그 540087398에 있습니다. 따라서 이 저장소는 익스플로잇이 아닌 차등 탐지 하네스를 제공합니다. 공개 수정 커밋이 지목한 조합을 열거하여 사용자의 브라우저+GPU를 분류합니다.
| 파일 | 용도 |
|---|---|
poc.html | WebGPU 프로브 매트릭스 — 5가지 깊이/스텐실 형식 × NPOT 크기(Dawn에서 비활성화된 end2end 테스트의 259×127 형태 포함) × 밉 개수, 각각 자체 검증 오류 범위 내에서 실행 |
crash_monitor.py | adb 보조 도구 — 설치된 Chrome 버전을 151.0.7922.169 패치 기준 버전과 대조하고 GPU 프로세스의 치명적 시그널을 logcat으로 추적 |
# 1) serve the harness (WebGPU needs a secure context: localhost or HTTPS)
$ python3 -m http.server 8000
# 2) on the device (or desktop Chrome), open:
# http://<your-host>:8000/poc.html (localhost/http works; remote hosts need HTTPS)
# 3) from a host with adb, watch the GPU process:
$ python3 crash_monitor.py
[*] com.android.chrome versionName=151.0.7922.83
[!] VULNERABLE — below the 151.0.7922.169 fix floor (CVE-2026-76036)
[*] logcat: live tail — Ctrl-C to stop. Load poc.html on the device now.
poc.html 해석하네스는 각 프로브를 약 150ms로 조절하여, 실험실 장치가 첫 번째 비정상 복사에서 바로 죽는 대신 판정을 내릴 수 있을 만큼 오래 생존하게 합니다.
소유하거나 관리하는 기기와 브라우저에서만 실행하세요. 패치되지 않은 영향받는 하드웨어에서 기본 버그는 실제 메모리 손상 트리거입니다. 하네스는 그러한 손상을 의도적으로 형성하려는 시도를 일절 하지 않습니다.
| 관찰 | 의미 |
|---|
| "disallowed on this device due to a driver bug" 문구를 포함하는 검증 오류 | 수정 사항 적용됨 + GPU가 영향받는 PowerVR 계열에 속함(패치 전에는 도달 가능했음, 버전 ≥ 151.0.7922.169 확인) |
| 조합이 허용되고 해당 오류가 없음 | GPU가 영향받는 Imagination 계열 외부에 있음 — 이 경로로는 도달 불가 |
스캔 도중 device.lost 발생 / Chrome 151.0.7922.169 미만에서 logcat에 GPU 프로세스 Fatal signal 발생 | 이 CVE가 제거하려는 패치 전 동작 — 즉시 업데이트 |
navigator.gpu가 정의되지 않음 | WebGPU 사용 불가 — 공격 표면 차단됨 |