
Analisi di CVE-2026-5281 (Chrome Dawn WebGPU UAF), strumenti di validazione di laboratorio e ambiente riproducibile per build vulnerabili vs patchate.
Questa vulnerabilità ha colpito uno dei clienti a cui forniamo servizi. Questo repository è il nostro contributo alla ricerca originale: un punto di partenza centralizzato per il gruppo, così che se una vulnerabilità simile che colpisce questo componente dovesse ricomparire, abbiamo già le fondamenta pronte. Riunisce la teoria alla base del bug, un riepilogo documentato delle scoperte del ricercatore originale e una serie di strumenti pratici per verificare l'esposizione in un ambiente di laboratorio.
Nota: avrei voluto condividere più di questa ricerca, ma a causa delle restrizioni aziendali non posso divulgarne altro. Tutto ciò che è incluso qui è stato revisionato e non viola alcun accordo a cui sono soggetto. Il repository è quindi archiviato nel suo stato attuale.
Il 1° aprile 2026, Google ha rilasciato un aggiornamento di sicurezza di Chrome che affrontava 21 vulnerabilità, una delle quali, CVE-2026-5281, era già stata attivamente sfruttata in natura (in the wild) al momento della divulgazione. Tre giorni dopo, CISA l'ha aggiunta al catalogo Known Exploited Vulnerabilities e ha emanato una direttiva operativa vincolante che richiedeva alle agenzie federali di applicare la patch. A quel punto ci aveva già colpito.
Questo repository esiste per un solo motivo: che la prossima volta che qualcosa del genere accada, abbiamo un punto di partenza invece di ricominciare da zero. Riunisce:
Quando vuoi capire perché esiste una vulnerabilità, inizi da ciò che il sistema è stato costruito per fare e dalle assunzioni attorno alle quali è stato progettato.
WebGPU espone un'API per eseguire operazioni, come rendering e calcolo, su una unità di elaborazione grafica. WebGPU non è un tentativo di esporre OpenGL o OpenGL ES (Embedded Systems). È una nuova API costruita sulle idee di API moderne come Direct3D 12, Metal e Vulkan.
WebGPU è il sostituto moderno di WebGL, la vecchia API GPU che i browser hanno usato per anni. La differenza fondamentale è che WebGPU è stata progettata da zero per la sicurezza e la gestione esplicita delle risorse. Dichiari tu stesso il ciclo di vita di ogni buffer, texture e pipeline. Il browser agisce come livello di validazione tra il tuo JavaScript e l'hardware GPU.
Gli oggetti al centro di questa vulnerabilità, in ordine di creazione:``` 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 regola che conta qui: ogni oggetto è di proprietà di GPUDevice. Distruggere un buffer mentre il dispositivo ha ancora comandi in sospeso che vi fanno riferimento è esplicitamente illegale secondo la specifica. L'implementazione di Dawn dovrebbe rilevarlo e rifiutarlo. CVE-2026-5281 è un caso in cui non lo ha fatto.
---
---
---
<div id='whatisdawn'/>
## ***⚙️ Cos'è Dawn?***
- **[Dawn - Implementazione open-source di WebGPU](https://dawn.googlesource.com/dawn)**
> Dawn è un'implementazione open-source e multipiattaforma dello standard WebGPU in fase di definizione. Espone un'API C++ nativa che rispecchia l'IDL di WebGPU con alcune estensioni.
Dawn è la libreria C++ all'interno di Chrome che traduce le chiamate JavaScript WebGPU in comandi GPU nativi della piattaforma. Su Windows usa D3D12, su macOS usa Metal e su Linux usa Vulkan. Si trova tra il motore JavaScript di Chrome e il driver hardware ed è responsabile di quattro cose: validare le chiamate API, serializzare i comandi, tenere traccia dei cicli di vita degli oggetti e riportare gli errori a JavaScript.
CVE-2026-5281 risiede nella parte di tracciamento dei cicli di vita. Nello specifico, per quanto tempo Dawn mantiene in vita gli oggetti buffer GPU mentre i comandi che vi fanno riferimento sono ancora in attesa di esecuzione sulla coda hardware.```
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