
Repositório estruturado de pesquisa de vulnerabilidades para uma falha CWE-20 do Chrome Dawn WebGPU: causa raiz, diff do patch, verificação estática, revisão de gravidade e lições de segurança.
Este é o repositório do projeto de trabalho. Ele cobre investigação, análise, trabalho e relatórios em um único repositório (D088/D091).
Este arquivo é o documento de entrada do repositório/board. Para o texto completo das convenções de pastas·artefatos, consulte
docs/conventions.md. O corpo do texto (status·conclusões·links) é atualizado quando o item relatório (report) é promovido. Os agentes de investigação·análise·trabalho não modificam o README raiz.
Resumo em uma linha: a implementação do WebGPU do Google Chrome, o Dawn, não verificava as restrições de parâmetros exigidas pela especificação Vulkan ao criar amostradores YCbCr, permitindo que um atacante que já tivesse comprometido o processo renderer enviasse valores fora da especificação até o processo GPU (CWE-20). A correção adicionou duas camadas — validação adicional e imposição no backend — e foi incorporada no Chrome 150.0.7871.47.
Os documentos de aprendizado detalhados estão em docs/cve-2026-13934/ — escritos para que se possa
acompanhar causa·correção·evidências·lições sem reprodução.
Alvo: CVE-2026-13934 — Google Chrome / Dawn (implementação do WebGPU), tipo de vulnerabilidade CWE-20 (Improper Input Validation). CVE publicado em 2026-06-30, versão corrigida 150.0.7871.47. Base: research/20260804-cve-2026-13934-6bacf7/sources.md §1·§2.
Andamento — conduzido em quatro linhas: investigação (informações públicas) · investigação (patch·diff) · análise (reprodução·evidências) · relatório (consolidação do aprendizado); todas as quatro linhas foram concluídas.
| Linha | Status | O que foi obtido |
|---|---|---|
Investigação de informações públicas·escopo de impacto (research/…-6bacf7/) | Concluída (4 documentos) | Metadados de CVE·NVD·aviso do fornecedor, CWE·CVSS, limites de versões afetadas, julgamentos segundo os critérios |
Comparação de patch·diff (research/…-diff-92f928/) | Concluída (4 documentos) | Identificação do commit de correção, critérios de comparação em 3 níveis, delta de arquivos alterados·lógica, julgamento de bypass·risco residual |
Reprodução·evidências (cases/…-4d10a8/) | Concluída (6 documentos) — comparação estática realizada, observação em nível de execução não feita | Estrutura da causa, viabilidade·restrições de exploração, valores observados na comparação estática das duas revisões |
Relatório de aprendizado (reports/…-8400bc/) | Concluída (4 documentos) | Sumário·mapa de citações, rascunho do README raiz, lista de documentos de docs/ |
O que foi confirmado
150.0.7871.47 e commit de correção (Dawn 43055cbe…), os 3 arquivos alterados e o motivo das alterações.cases/20260804-cve-2026-13934-4d10a8/report.md §3).O que ainda não foi confirmado (não preenchemos com suposições)
VkSampler gerado e os relatórios de VUID da camada de validação Vulkan são valores esperados com base no código (cases/…-4d10a8/report.md §4).150.0.7871.46·.47·.63 fixam todas a mesma revisão do Dawn, mas o CVE o descreve como "prior to .47". Não conseguimos confirmar a base dessa notação.src do Chromium.513006636 do Chromium, que contém a causa, está com acesso restrito.Gravidade — varia conforme a fonte. A classificação do próprio fornecedor (Chromium) é Medium, o CVSS v3.1 do CISA-ADP é 9.6 CRITICAL (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H) e não há avaliação própria da NVD. Apresentamos ambas sem julgar qual está correta — a interpretação está em docs/cve-2026-13934/overview.md.
Este repositório não contém serviços implantados (API·backend·banco de dados etc.). Todos os artefatos são documentos.
A especificação Vulkan exige que, para amostradores com conversão YCbCr, os modos de endereçamento de todos os eixos sejam CLAMP_TO_EDGE e a filtragem anisotrópica (anisotropy) esteja desativada (VUID-VkSamplerCreateInfo-addressModeU-01646). Antes do patch, o Dawn não verificava essa restrição; portanto, parâmetros que violavam a especificação podiam passar pela validação e chegar até a criação do VkSampler.
O ponto decisivo é o modelo de ameaça. A descrição pública pressupõe um atacante que já comprometeu o processo renderer ("a remote attacker who had compromised the renderer process"). Nessa posição, é possível manipular diretamente os comandos entre processos, em vez do caminho normal da API web; portanto, a validação no lado do renderer está fora do limite de confiança. E o backend Vulkan do Dawn opera no processo GPU, que tem privilégios maiores que o renderer — é por isso que essa falha se torna uma superfície de escape da sandbox.
Base: cases/20260804-cve-2026-13934-4d10a8/root_cause.md §2 · Detalhes: docs/cve-2026-13934/root-cause-and-fix.md
O commit de correção é o Dawn 43055cbeadddca41a9c973a809f859d641077b2f ("Add YCbCr sampler validation", 2026-05-27, Bug: 513006636) e altera três arquivos.
| Alteração | Arquivo | Natureza |
|---|---|---|
Adição de 4 verificações de modo de endereçamento·maxAnisotropy no descritor YCbCr | src/dawn/native/Sampler.cpp | Validação no frontend — rejeita solicitações em violação |
| Sobrescrita dos modos de endereçamento·anisotropia por valores em conformidade com a especificação nos caminhos com conversão YCbCr | src/dawn/native/vulkan/SamplerVk.cpp | Imposição no backend — não cria estado de violação, independentemente da entrada |
Adição do teste de regressão YCbCrSamplerRequiredParams | src/dawn/tests/unittests/validation/YCbCrValidationTests.cpp | Prevenção de recorrência |
Essa estrutura é o núcleo deste CVE. Como a premissa é que o renderer já foi comprometido, apenas a validação não é suficiente; a segunda camada, que impõe os valores no lado de maior privilégio, é a linha de bloqueio efetiva. Resumir como "faltava validação de entrada, então adicionaram validação" perde o ponto central do design de defesa.