
CVE-2026-5281 (Chrome Dawn WebGPU UAF) : analyse, outils de validation en laboratoire et environnement reproductible pour les builds vulnérables vs corrigés.
Cette vulnérabilité a affecté l'un des clients auxquels nous fournissons des services. Ce dépôt est notre contribution à la recherche originale : un point de départ centralisé pour le groupe, afin que si une vulnérabilité similaire affectant ce composant réapparaît, nous ayons déjà les bases en place. Il rassemble la théorie derrière le bug, un résumé documenté des conclusions du chercheur original, et un ensemble d'outils pratiques pour vérifier l'exposition dans un environnement de laboratoire.
Note : j'aurais aimé partager davantage de cette recherche, mais en raison de restrictions de l'entreprise, je ne peux pas la divulguer davantage. Tout ce qui est inclus ici a été examiné et ne viole aucun accord auquel je suis soumis. Le dépôt est donc archivé dans son état actuel.
Le 1er avril 2026, Google a publié une mise à jour de sécurité Chrome corrigeant 21 vulnérabilités, dont l'une, CVE-2026-5281, était déjà activement exploitée dans la nature au moment de la divulgation. Trois jours plus tard, la CISA l'a ajoutée au catalogue des vulnérabilités connues exploitées et a émis une directive opérationnelle contraignante exigeant des agences fédérales qu'elles appliquent le correctif. À ce moment-là, elle nous avait déjà affectés.
Ce dépôt existe pour une seule raison : que la prochaine fois que quelque chose comme cela se produit, nous ayons un point de départ au lieu de repartir de zéro. Il rassemble :
Lorsque vous voulez comprendre pourquoi une vulnérabilité existe, commencez par ce que le système a été conçu pour faire et les hypothèses sur lesquelles il est fondé.
WebGPU expose une API pour effectuer des opérations, telles que le rendu et le calcul, sur une unité de traitement graphique. WebGPU n'est pas une tentative d'exposer OpenGL ou OpenGL ES (Embedded Systems). C'est une nouvelle API construite sur les idées des APIs modernes telles que Direct3D 12, Metal et Vulkan.
WebGPU est le remplaçant moderne de WebGL, l'ancienne API GPU que les navigateurs utilisent depuis des années. La différence clé est que WebGPU a été conçu dès le départ pour la sécurité et la gestion explicite des ressources. Vous déclarez vous-même le cycle de vie de chaque tampon, texture et pipeline. Le navigateur agit comme une couche de validation entre votre JavaScript et le matériel GPU.
Les objets au centre de cette vulnérabilité, dans l'ordre de création :``` GPUAdapter ← represents a physical GPU or software fallback └─ GPUDevice ← your logical connection to the adapter; owns everything ├─ GPUBuffer ← a chunk of GPU-accessible memory ├─ GPUShaderModule ← a compiled WGSL shader program ├─ GPUComputePipeline ← a shader wired to a pipeline layout ├─ GPUBindGroup ← binds buffers as inputs to a pipeline ├─ GPUCommandEncoder ← records a sequence of GPU commands └─ GPUQueue ← submits recorded commands to hardware
La règle qui compte ici : chaque objet appartient au GPUDevice. Détruire un buffer alors que le GPUDevice a encore des commandes en cours d'exécution qui le référencent est explicitement illégal selon la spécification. L'implémentation Dawn est censée détecter et rejeter cela. CVE-2026-5281 est un cas où elle ne l'a pas fait.
---
---
---
<div id='whatisdawn'/>
## ***⚙️ Qu'est-ce que Dawn ?***
- **[Dawn - Implémentation WebGPU open-source](https://dawn.googlesource.com/dawn)**
> Dawn est une implémentation open-source et multiplateforme du standard WebGPU en cours de développement. Elle expose une API C++ native qui reflète l'IDL WebGPU avec quelques extensions.
Dawn est la bibliothèque C++ intégrée à Chrome qui traduit les appels JavaScript WebGPU en commandes GPU natives de la plateforme. Sous Windows, elle cible D3D12 ; sous macOS, elle cible Metal ; et sous Linux, elle cible Vulkan. Elle se situe entre le moteur JavaScript de Chrome et le pilote matériel, et elle est responsable de quatre choses : valider les appels API, sérialiser les commandes, suivre la durée de vie des objets et faire remonter les erreurs à JavaScript.
CVE-2026-5281 se situe dans la partie du suivi de durée de vie. Plus précisément, dans la durée pendant laquelle Dawn maintient en vie les objets buffer GPU alors que des commandes qui les référencent sont encore en attente d'exécution sur la file matérielle.```
JavaScript (V8)
│ WebGPU API calls
▼
Dawn (C++) - validates, serializes, tracks lifetimes, reports errors
│
▼
D3D12 (Windows) - Metal (macOS) - Vulkan (Linux)
│
▼
GPU hardware driver
│
▼
Physical GPU - shader cores, VRAM