
Harness de detecção diferencial para CVE-2026-76036, um estouro de buffer no heap do Dawn WebGPU no Chrome para Android. Testa combinações vulneráveis de texturas de profundidade/stêncil e monitora falhas do processo de GPU para classificar a exposição do navegador e da GPU.
Estouro de buffer no heap de gravidade crítica (CVSS 9.6, CWE-122) no Dawn, a implementação de WebGPU do Chromium, no Google Chrome no Android anterior à versão 151.0.7922.169 (versão estável 151, lançada em 2026-08-18).
Causa raiz, conforme o commit de correção do Dawn
178fb7048ad3: o
driver Vulkan proprietário da PowerVR calcula incorretamente os tamanhos dos níveis de mip
para texturas depth/stencil não potência de dois (NPOT). Uma página da web que chama
device.createTexture() com um formato depth/stencil, dimensões NPOT e
mipLevelCount > 1 em hardware afetado corrompe o heap do processo da GPU.
NVD: "permitiu que um atacante remoto executasse código arbitrário fora da sandbox
por meio de uma página HTML especialmente criada".
O gatilho exato está no bug restrito do Chromium 540087398. Este repositório, portanto, traz um harness de detecção diferencial, não um exploit: ele enumera a combinação indicada pelo commit de correção público e classifica seu navegador+GPU.
| Arquivo | Finalidade |
|---|---|
poc.html | Matriz de sondas WebGPU — todos os cinco formatos depth/stencil × tamanhos NPOT (incluindo a forma 259×127 do teste end2end suprimido do Dawn) × contagens de mip, cada uma em seu próprio escopo de erro de validação |
crash_monitor.py | Complemento do adb — verifica a versão do Chrome instalada em relação ao piso 151.0.7922.169 e monitora o logcat em busca de sinais fatais do processo da 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.htmlO harness controla o ritmo de cada sonda (~150 ms) para que um dispositivo de laboratório sobreviva tempo suficiente para produzir um veredito em vez de morrer na primeira cópia divergente.
Execute apenas em dispositivos e navegadores que você possui ou administra. Em hardware afetado e sem patch, o bug subjacente é um gatilho genuíno de corrupção de memória; o harness evita deliberadamente qualquer tentativa de moldar essa corrupção.
| Observação | Significado |
|---|
| Erro de validação contendo "disallowed on this device due to a driver bug" | Correção ativa + a GPU está na classe PowerVR afetada (o dispositivo era alcançável antes do patch; confirme a versão ≥ 151.0.7922.169) |
| Combinações aceitas, sem esse erro | GPU fora da classe Imagination afetada — não alcançável por este caminho |
device.lost dispara no meio da varredura / Fatal signal do processo da GPU no logcat no Chrome < 151.0.7922.169 | Comportamento pré-patch que este CVE existe para eliminar — atualize imediatamente |
navigator.gpu indefinido | WebGPU indisponível — superfície fechada |