
Análise do CVE-2026-5281 (Chrome Dawn WebGPU UAF), ferramentas de validação em laboratório e ambiente reproduzível para builds vulneráveis vs corrigidas.
Esta vulnerabilidade afetou um dos clientes para os quais prestamos serviços. Este repositório é a nossa contribuição para a pesquisa original: um ponto de partida centralizado para o grupo, de modo que, se uma vulnerabilidade semelhante que afete este componente aparecer novamente, já teremos a base preparada. Ele reúne a teoria por trás do bug, um resumo documentado das descobertas do pesquisador original e um conjunto de ferramentas práticas para verificar a exposição em um ambiente de laboratório.
Nota: Eu gostaria de ter compartilhado mais desta pesquisa, mas devido a restrições da empresa não posso divulgá-la mais. Tudo o que está incluído aqui foi revisado e não viola nenhum acordo ao qual estou sujeito. O repositório está, portanto, arquivado no seu estado atual.
Em 1º de abril de 2026, o Google lançou uma atualização de segurança do Chrome que corrigia 21 vulnerabilidades, uma das quais, CVE-2026-5281, já estava sendo ativamente explorada no mundo real no momento da divulgação. Três dias depois, a CISA a adicionou ao catálogo de Vulnerabilidades Conhecidas e Exploradas e emitiu uma diretiva operacional vinculante exigindo que as agências federais aplicassem o patch. Nesse ponto, ela já havia nos afetado.
Este repositório existe por um motivo: para que, na próxima vez que algo assim acontecer, tenhamos um ponto de partida em vez de começar do zero. Ele reúne:
Quando você quer entender por que uma vulnerabilidade existe, você começa pelo que o sistema foi construído para fazer e por quais premissas ele foi projetado.
O WebGPU expõe uma API para realizar operações, como renderização e computação, em uma Unidade de Processamento Gráfico. O WebGPU não é uma tentativa de expor OpenGL ou OpenGL ES (Embedded Systems). É uma nova API construída sobre as ideias de APIs modernas, como Direct3D 12, Metal e Vulkan.
O WebGPU é o substituto moderno do WebGL, a antiga API de GPU que os navegadores usam há anos. A principal diferença é que o WebGPU foi projetado do zero com foco em segurança e gerenciamento explícito de recursos. Você declara o ciclo de vida de cada buffer, textura e pipeline. O navegador atua como uma camada de validação entre seu JavaScript e o hardware da GPU.
Os objetos no centro desta vulnerabilidade, em ordem de criação:``` 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
A regra que importa aqui: todo objeto pertence ao GPUDevice. Destruir um buffer enquanto o dispositivo ainda tem comandos em andamento que o referenciam é explicitamente ilegal segundo a especificação. A implementação Dawn deveria detectar e rejeitar isso. CVE-2026-5281 é um caso em que ela não o fez.
---
---
---
<div id='whatisdawn'/>
## ***⚙️ O que é Dawn?***
- **[Dawn - Implementação WebGPU de Código Aberto](https://dawn.googlesource.com/dawn)**
> Dawn é uma implementação de código aberto e multiplataforma do padrão WebGPU em desenvolvimento. Ela expõe uma API nativa em C++ que espelha a IDL do WebGPU com algumas extensões.
Dawn é a biblioteca C++ dentro do Chrome que traduz chamadas JavaScript do WebGPU em comandos GPU nativos da plataforma. No Windows, ela tem como alvo o D3D12; no macOS, o Metal; e no Linux, o Vulkan. Ela fica entre o mecanismo JavaScript do Chrome e o driver de hardware, sendo responsável por quatro coisas: validar chamadas de API, serializar comandos, rastrear o tempo de vida dos objetos e expor erros de volta ao JavaScript.
CVE-2026-5281 reside na parte de rastreamento de tempo de vida. Especificamente, por quanto tempo a Dawn mantém os objetos de buffer de GPU vivos enquanto comandos que os referenciam ainda estão pendentes de execução na fila de 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