
Harnais de détection différentielle pour CVE-2026-76036, un débordement de tampon sur le tas dans WebGPU Dawn sur Chrome Android. Sonde les combinaisons vulnérables de textures depth/stencil et surveille les plantages du processus GPU afin de classer l'exposition du navigateur et du GPU.
Débordement de tas critique (CVSS 9.6, CWE-122) dans Dawn, l'implémentation WebGPU de Chromium, dans Google Chrome sur Android antérieur à 151.0.7922.169 (stable 151, publié le 2026-08-18).
Cause racine, selon le commit de correctif Dawn
178fb7048ad3 : le
pilote Vulkan propriétaire PowerVR calcule incorrectement les tailles des niveaux de mip pour les textures de profondeur/stencil non-puissance-de-deux (NPOT). Une page web appelant
device.createTexture() avec un format profondeur/stencil, des dimensions NPOT, et
mipLevelCount > 1 sur du matériel affecté corrompt le tas du processus GPU.
NVD : « permettait à un attaquant distant d'exécuter du code arbitraire hors de la sandbox via une page HTML spécialement conçue ».
Le déclencheur exact se trouve dans le bug Chromium à accès restreint 540087398. Ce dépôt fournit donc un harness de détection différentielle, pas un exploit : il énumère la combinaison nommée par le commit de correctif public et classe votre navigateur+GPU.
| Fichier | Description |
|---|---|
poc.html | matrice de sondes WebGPU — les cinq formats profondeur/stencil × tailles NPOT (dont la forme 259×127 du test end2end désactivé de Dawn) × nombres de mip, chacun dans sa propre portée d'erreur de validation |
crash_monitor.py | compagnon adb — compare la version de Chrome installée au plancher 151.0.7922.169 et suit logcat pour les signaux fatals du processus 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.htmlLe harness espace chaque sonde (~150 ms) afin qu'un appareil de laboratoire survive assez longtemps pour produire un verdict au lieu de mourir sur la première copie divergente.
Exécutez uniquement sur des appareils et navigateurs que vous possédez ou administrez. Sur du matériel non corrigé et affecté, le bug sous-jacent est un véritable déclencheur de corruption mémoire ; le harness évite délibérément toute tentative de modeler cette corruption.
| Observation | Signification |
|---|
| Erreur de validation contenant "disallowed on this device due to a driver bug" | Correctif actif + GPU dans la classe PowerVR affectée (appareil atteignable avant le correctif ; confirmez une version ≥ 151.0.7922.169) |
| Combinaisons acceptées, aucune erreur de ce type | GPU hors de la classe Imagination affectée — non atteignable via ce chemin |
device.lost se déclenche en plein balayage / Fatal signal du processus GPU dans logcat sur Chrome < 151.0.7922.169 | Comportement d'avant correctif que cette CVE vise à éliminer — mettez à jour immédiatement |
navigator.gpu non défini | WebGPU indisponible — surface d'attaque fermée |