
Repositorio estructurado de investigación de vulnerabilidades para una falla CWE-20 en Chrome Dawn WebGPU: causa raíz, diff del parche, verificación estática, revisión de gravedad y lecciones de seguridad.
Este es el repositorio del proyecto de trabajo. Investigación, análisis, trabajo e informes se manejan en un único repositorio (D088/D091).
Este archivo es el documento de entrada del repo/tablero. La convención completa de carpetas y entregables está en
docs/conventions.md. El cuerpo (estado, conclusiones, enlaces) se actualiza cuando el elemento informe (report) se promociona. Los agentes de investigación, análisis y trabajo no modifican el README raíz.
Resumen en una línea: Dawn, la implementación de WebGPU de Google Chrome, no validaba las restricciones de parámetros que exige la especificación Vulkan al crear samplers YCbCr, por lo que un atacante que ya hubiera comprometido el proceso del renderizador podía hacer llegar valores que violan la especificación hasta el proceso de GPU (CWE-20). La corrección se implementó en dos capas —validación añadida y forzado en el backend— y se incorporó en Chrome 150.0.7871.47.
Los documentos de aprendizaje detallados están en docs/cve-2026-13934/ — escritos para poder seguir la causa, la corrección, la demostración y las lecciones sin reproducción.
Objetivo: CVE-2026-13934 — Google Chrome / Dawn (implementación de WebGPU), tipo de vulnerabilidad CWE-20 (Improper Input Validation). CVE publicado el 2026-06-30, versión corregida 150.0.7871.47.
Fuente: research/20260804-cve-2026-13934-6bacf7/sources.md §1·§2.
Etapas de progreso — se trabajó en cuatro líneas: investigación (información pública) · investigación (parche/diff) · análisis (reproducción/demostración) · informe (síntesis de aprendizaje); las cuatro líneas se completaron.
| Línea | Estado | Obtenido |
|---|---|---|
Investigación de información pública y alcance de impacto (research/…-6bacf7/) | Completada (4 documentos) | Metadatos de CVE·NVD·aviso del proveedor, CWE·CVSS, límites de versiones afectadas, dictamen según criterios |
Comparación de parche/diff (research/…-diff-92f928/) | Completada (4 documentos) | Identificación del commit de corrección, criterios de comparación en 3 niveles, delta de archivos y lógica modificados, dictamen de evasión/riesgo residual |
Reproducción y demostración (cases/…-4d10a8/) | Completada (6 documentos) — contraste estático realizado, sin observación a nivel de ejecución | Estructura de la causa, viabilidad y restricciones, valores observados del contraste estático de las dos revisiones |
Informe de aprendizaje (reports/…-8400bc/) | Completado (4 documentos) | Índice y mapa de citas, borrador del README raíz, lista de documentos de docs/ |
Lo confirmado
150.0.7871.47 y commit de corrección (Dawn 43055cbe…), 3 archivos modificados y el motivo del cambio.cases/20260804-cve-2026-13934-4d10a8/report.md §3).Aún no confirmado (no se ha rellenado con suposiciones)
VkSampler generado y el informe de VUID de la capa de validación de Vulkan son valores esperados basados en el código (cases/…-4d10a8/report.md §4).150.0.7871.46·.47·.63 fijan todas la misma revisión de Dawn, pero el CVE lo indica como "prior to .47". No se pudo confirmar la base de esta notación.src.513006636, que contiene la causa, está con acceso restringido.Severidad — varía según la fuente. La calificación del propio proveedor (Chromium) es Medium, el CVSS v3.1 de CISA-ADP es 9.6 CRITICAL (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H) y NVD no tiene evaluación propia. Sin dictaminar cuál es la correcta, se presentan ambas — la interpretación está en docs/cve-2026-13934/overview.md.
Este repositorio no contiene servicios desplegados (API, backend, bases de datos, etc.). Todos los entregables son documentos.
La especificación Vulkan exige que, para los samplers con conversión YCbCr, el modo de dirección de todos los ejes sea CLAMP_TO_EDGE y que el filtrado anisotrópico (anisotropy) esté desactivado (VUID-VkSamplerCreateInfo-addressModeU-01646). Antes del parche, Dawn no comprobaba esta restricción, por lo que los parámetros que violan la especificación podían pasar la validación y llegar hasta la creación del VkSampler.
Lo decisivo es el modelo de amenaza. La descripción pública presupone que el atacante ya ha comprometido el proceso del renderizador ("a remote attacker who had compromised the renderer process"). Desde esa posición se pueden manipular directamente los comandos entre procesos, no la ruta normal de la API web, por lo que la validación del lado del renderizador queda fuera del límite de confianza. Y el backend de Vulkan de Dawn se ejecuta en el proceso de GPU, con mayores privilegios que el renderizador — por eso este defecto se convierte en una superficie de escape del sandbox.
Fuente: cases/20260804-cve-2026-13934-4d10a8/root_cause.md §2 ·
Detalle: docs/cve-2026-13934/root-cause-and-fix.md
El commit de corrección es Dawn 43055cbeadddca41a9c973a809f859d641077b2f ("Add YCbCr sampler validation", 2026-05-27, Bug: 513006636) y modifica tres archivos.
| Cambio | Archivo | Naturaleza |
|---|---|---|
Añade 4 comprobaciones de modo de dirección y maxAnisotropy al descriptor YCbCr | src/dawn/native/Sampler.cpp | Validación de frontend — rechaza las solicitudes que violan la especificación |
| Sobrescribe el modo de dirección y la anisotropía con valores conformes a la especificación en las rutas con conversión YCbCr | src/dawn/native/vulkan/SamplerVk.cpp | Forzado de backend — sea cual sea la entrada, no se crea un estado de violación |
Añade la prueba de regresión YCbCrSamplerRequiredParams | src/dawn/tests/unittests/validation/YCbCrValidationTests.cpp | Prevención de recurrencia |