
Banco de pruebas de detección diferencial para CVE-2026-76036, un desbordamiento de búfer de montón (heap) de Dawn WebGPU en Chrome para Android. Sondea combinaciones vulnerables de texturas de profundidad/stencil y supervisa los bloqueos del proceso de GPU para clasificar la exposición del navegador y la GPU.
Desbordamiento de búfer en el montón crítico (CVSS 9.6, CWE-122) en Dawn, la implementación de WebGPU de Chromium, en Google Chrome para Android anterior a 151.0.7922.169 (estable 151, publicado el 2026-08-18).
Causa raíz, según el commit de corrección de Dawn
178fb7048ad3: el
controlador Vulkan propietario de PowerVR calcula incorrectamente los tamaños de los niveles de mipmap para
texturas de profundidad/stencil no potencia de dos (NPOT). Una página web que llame a
device.createTexture() con un formato de profundidad/stencil, dimensiones NPOT y
mipLevelCount > 1 en hardware afectado corrompe el montón del proceso de GPU.
NVD: "permitía a un atacante remoto ejecutar código arbitrario fuera del sandbox
mediante una página HTML manipulada".
El desencadenante exacto se encuentra en el bug restringido de Chromium 540087398. Por lo tanto, este repositorio incluye un banco de pruebas de detección diferencial, no un exploit: enumera la combinación mencionada en el commit de corrección público y clasifica tu navegador+GPU.
| Archivo | Propósito |
|---|---|
poc.html | Matriz de pruebas WebGPU — los cinco formatos de profundidad/stencil × tamaños NPOT (incl. la forma 259×127 del test end2end suprimido de Dawn) × recuentos de mipmap, cada uno en su propio ámbito de error de validación |
crash_monitor.py | Acompañante de adb — fija la versión de Chrome instalada frente al mínimo 151.0.7922.169 y sigue logcat en busca de señales fatales del proceso de GPU |
# 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.htmlEl banco de pruebas limita cada prueba (~150 ms) para que un dispositivo de laboratorio sobreviva el tiempo suficiente para producir un veredicto en lugar de morir en la primera copia divergente.
Ejecuta únicamente contra dispositivos y navegadores que poseas o administres. En hardware afectado y sin parche, el error subyacente es un desencadenante real de corrupción de memoria; el banco de pruebas evita deliberadamente cualquier intento de moldear esa corrupción.
| Observación | Significado |
|---|
| Error de validación que contiene "disallowed on this device due to a driver bug" | Corrección activa + la GPU está en la clase PowerVR afectada (el dispositivo era vulnerable antes del parche; confirma versión ≥ 151.0.7922.169) |
| Combinaciones aceptadas, sin ese error | GPU fuera de la clase Imagination afectada — no alcanzable por esta vía |
device.lost se dispara a mitad del barrido / Fatal signal del proceso de GPU en logcat en Chrome < 151.0.7922.169 | Comportamiento previo al parche que este CVE existe para eliminar — actualiza inmediatamente |
navigator.gpu no definido | WebGPU no disponible — superficie cerrada |