
Dépôt structuré de recherche de vulnérabilités pour un défaut CWE-20 de Chrome Dawn WebGPU : cause racine, diff du correctif, vérification statique, évaluation de la sévérité et leçons de sécurité.
Dépôt du projet de travail. Il couvre l'investigation, l'analyse, le travail et les rapports dans un seul dépôt (D088/D091).
Ce fichier est le document d'entrée du dépôt/tableau. Pour l'intégralité des conventions de dossiers et de livrables, voir
docs/conventions.md. Le corps du texte (état, conclusions, liens) est mis à jour lors de la promotion de l'élément rapport. Les agents d'investigation, d'analyse et de travail ne modifient pas le README racine.
Résumé en une phrase : l'implémentation WebGPU de Google Chrome, Dawn, ne vérifiait pas les contraintes de paramètres exigées par la spécification Vulkan lors de la création de samplers YCbCr, ce qui permettait à un attaquant ayant déjà compromis le processus de rendu de faire transiter des valeurs non conformes à la spécification jusqu'au processus GPU (CWE-20). Le correctif ajoute une validation et un forçage backend en deux couches, et a été intégré dans Chrome 150.0.7871.47.
Les documents d'apprentissage détaillés se trouvent dans docs/cve-2026-13934/ — rédigés pour permettre de suivre la cause, le correctif, la démonstration et les enseignements
sans reproduction.
Cible : CVE-2026-13934 — Google Chrome / Dawn (implémentation WebGPU), type de vulnérabilité CWE-20
(Improper Input Validation). CVE publiée le 2026-06-30, version corrigée 150.0.7871.47.
Base : research/20260804-cve-2026-13934-6bacf7/sources.md §1·§2.
Avancement — mené sur quatre lignes : investigation (informations publiques) · investigation (patch/diff) · analyse (reproduction/démonstration) · rapport (synthèse d'apprentissage). Les quatre lignes sont terminées.
| Ligne | Statut | Ce qui a été obtenu |
|---|---|---|
Investigation des informations publiques et du périmètre d'impact (research/…-6bacf7/) | Terminée (4 documents) | Métadonnées CVE·NVD·avis du fournisseur, CWE·CVSS, bornes des versions affectées, verdicts selon les critères de jugement |
Comparaison patch/diff (research/…-diff-92f928/) | Terminée (4 documents) | Commit de correctif identifié, base de comparaison à 3 niveaux, delta des fichiers modifiés et de la logique, verdicts de contournement et de risque résiduel |
Reproduction/démonstration (cases/…-4d10a8/) | Terminée (6 documents) — comparaison statique effectuée, niveau d'exécution non observé | Structure de la cause, exploitabilité et contraintes, observations de la comparaison statique des deux révisions |
Rapport d'apprentissage (reports/…-8400bc/) | Terminé (4 documents) | Sommaire·carte des citations, brouillon du README racine, liste des documents docs/ |
Ce qui a été confirmé
150.0.7871.47 et commit de correctif (Dawn 43055cbe…), 3 fichiers modifiés et raisons des modifications.cases/20260804-cve-2026-13934-4d10a8/report.md §3).Non encore confirmé (non comblé par des suppositions)
VkSampler générés et les rapports VUID de la couche de validation Vulkan sont des valeurs attendues fondées sur des preuves tirées du code (cases/…-4d10a8/report.md §4).150.0.7871.46·.47·.63 épinglent tous la même révision Dawn, mais la CVE indique « prior to .47 ». La justification de cette notation n'a pas pu être confirmée.src n'a pas fait l'objet d'une enquête exhaustive.513006636 contenant la cause est en accès restreint.Sévérité — varie selon les sources. La note propre du fournisseur (Chromium) est Medium, le CVSS v3.1 de CISA-ADP est 9.6 CRITICAL (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H) et il n'existe aucune évaluation propre de NVD. Les deux sont présentées sans trancher laquelle est correcte — l'interprétation se trouve dans
docs/cve-2026-13934/overview.md.
Ce dépôt ne contient aucun service déployé (API, backend, base de données, etc.). Tous les livrables sont des documents.
La spécification Vulkan exige que les samplers avec conversion YCbCr aient le mode d'adresse de tous les axes défini sur CLAMP_TO_EDGE et le filtrage anisotrope (anisotropy) désactivé
(VUID-VkSamplerCreateInfo-addressModeU-01646). Avant le patch, Dawn ne vérifiait pas cette contrainte, de sorte que des paramètres non conformes à la spécification pouvaient passer la validation et atteindre la création de VkSampler.
Le point décisif est le modèle de menace. La description publique suppose un attaquant ayant déjà compromis le processus de rendu (« a remote attacker who had compromised the renderer process »). Depuis cette position, on peut manipuler directement les commandes inter-processus plutôt que les chemins d'API web normaux ; la validation côté rendu est donc hors de la frontière de confiance. Et le backend Vulkan de Dawn s'exécute dans le processus GPU, plus privilégié que le rendu — c'est pourquoi cette faille constitue une surface d'évasion de la sandbox.
Base : cases/20260804-cve-2026-13934-4d10a8/root_cause.md §2 · Détails : docs/cve-2026-13934/root-cause-and-fix.md
Le commit de correctif est Dawn 43055cbeadddca41a9c973a809f859d641077b2f
(« Add YCbCr sampler validation », 2026-05-27, Bug: 513006636) et modifie trois fichiers.
| Modification | Fichier | Nature |
|---|---|---|
Ajout de 4 vérifications du mode d'adresse et de maxAnisotropy sur le descripteur YCbCr | src/dawn/native/Sampler.cpp | Validation frontend — rejette les requêtes non conformes |
| Écrasement du mode d'adresse et de l'anisotropie par des valeurs conformes à la spécification sur les chemins avec conversion YCbCr | src/dawn/native/vulkan/SamplerVk.cpp | Forçage backend — ne crée jamais d'état non conforme quel que soit l'entrée |
Ajout du test de régression YCbCrSamplerRequiredParams | src/dawn/tests/unittests/validation/YCbCrValidationTests.cpp | Prévention de la récurrence |