
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é
(Improper Input Validation). CVE publiée le 2026-06-30, version corrigée .
Base : §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 |
Cette structure est le cœur de cette CVE. Puisqu'on suppose le rendu déjà compromis, la validation seule ne suffit pas ; la deuxième couche, qui force les valeurs du côté le plus privilégié, constitue la véritable ligne de blocage. Résumer cela par « la validation d'entrée manquait, on a donc ajouté la validation » manque l'essentiel de la conception défensive.
L'ampleur des modifications est de 53 lignes ajoutées, 0 ligne supprimée — un patch qui comble les vérifications manquantes sans modifier la logique existante.
Base : research/20260804-cve-2026-13934-diff-92f928/report.md §3·§4 ·
cases/20260804-cve-2026-13934-4d10a8/patch_diff.md §4
Le code source des deux instantanés Dawn réellement épinglés par Chrome a été comparé.
| Élément observé | Côté vulnérable 54b4153c… | Côté corrigé 01249a97… | Niveau de vérification |
|---|---|---|---|
Nombre de DAWN_INVALID_IF dans le bloc de validation YCbCr | 2 (feature gate + format non défini) | 6 | Mesuré |
| Forçage des valeurs conformes à la spécification dans le backend Vulkan | Aucun (y compris la chaîne pNext) | Présent | Mesuré |
Test de régression YCbCrSamplerRequiredParams | Absent (TEST_F 23) | Présent (24) | Mesuré |
| Erreur de device sur requête non conforme | Ne se produit pas | Se produit | Attendu (fondé sur le code) |
Ce qui ressort ici : le côté vulnérable possédait déjà une branche YCbCr et 2 vérifications. La faille n'était pas un chemin manquant, mais l'absence de vérifications de contraintes conditionnelles dans la branche.
Aucune compilation ni exécution n'ayant été effectuée, les deux éléments ci-dessous sont des valeurs attendues fondées sur le code, et non des mesures.
Base : cases/20260804-cve-2026-13934-4d10a8/report.md §1~§4 ·
Détails : docs/cve-2026-13934/evidence.md
Du point de vue de la conception de sécurité
Du point de vue de la méthode d'investigation
DEPS → recherche du numéro de bug dans le journal des commits du composant. Procédure : research/20260804-cve-2026-13934-diff-92f928/sources.md §6.Détails : docs/cve-2026-13934/lessons.md
docs/)| Document | Contenu |
|---|---|
docs/cve-2026-13934/overview.md | Aperçu, contexte, résumé des conclusions, interprétation de la sévérité |
docs/cve-2026-13934/root-cause-and-fix.md | Structure de la cause en 3 couches et les deux niveaux du patch |
docs/cve-2026-13934/evidence.md | Observations de la comparaison statique, chemins d'observation et limites |
docs/cve-2026-13934/lessons.md | Enseignements en conception de sécurité et méthode d'investigation |
docs/cve-2026-13934/limits-and-sources.md | Limites, éléments non confirmés et liste des sources |
docs/conventions.md | Conventions de dossiers et de livrables (intégralité) |
research/20260804-cve-2026-13934-6bacf7/)| Document | Contenu |
|---|---|
brief.md | Texte de la demande d'origine, critères de jugement C1~C6, définition des sources officielles |
sources.md | Métadonnées CVE·NVD·avis du fournisseur, CWE·CVSS, conflits entre sources |
report.md | Verdicts d'impact·CVSS·conditions de vulnérabilité, verdicts C1~C6, interprétation de la sévérité |
followups.json | Suggestions de suivi |
research/20260804-cve-2026-13934-diff-92f928/)| Document | Contenu |
|---|---|
brief.md | Objectif, critères de jugement D1~D6, arborescence du patch de référence |
sources.md | Paire commit de correctif·base de comparaison, DEPS·Gerrit, procédure de traçage |
report.md | Fichiers modifiés·delta de logique·verdicts de contournement/risque résiduel, D1~D6 |
followups.json | Suggestions de suivi |
cases/20260804-cve-2026-13934-4d10a8/)| Document | Contenu |
|---|---|
intake.md | Métadonnées de réception, cible et bornes de versions, conditions de démarrage, exigences d'isolation, critères de jugement J1~J4 |
patch_diff.md | Modifications et raisons, indicateurs d'observation avant/après patch |
root_cause.md | Structure de la cause en 3 couches, prémisses P1~P7, frontière de confiance |
exploitability.md | Distinction démontrable/non démontrable, chemins d'observation, contraintes, limites de confinement |
report.md | Synthèse de vérification de la reproduction — observations de la comparaison statique, différences avant/après, verdicts J1~J4 |
followups.json | Suggestions de suivi |
reports/20260804-cve-2026-13934-8400bc/)| Document | Contenu |
|---|---|
outline.md | Lecteurs·sommaire·carte des citations de sources (S1~S15) |
README.md | Brouillon source de la promotion de ce README racine |
docs-index.md | Liste et résumé des documents docs/, points d'attention pour la promotion |
followups.json | Suggestions de suivi |
https://www.cve.org/CVERecord?id=CVE-2026-13934https://nvd.nist.gov/vuln/detail/CVE-2026-13934https://dawn.googlesource.com/dawn/+/43055cbeadddca41a9c973a809f859d641077b2fLa liste complète, avec les dates de publication et les identifiants, se trouve dans les sources.md des deux lignes d'investigation.
| Type | Racine |
|---|---|
| Investigation | research/ |
| Analyse | cases/ |
| Travail | work/ |
| Rapports | reports/ |
Collecte périodique : research/topics/<topic>/
research/ · cases/ · work/ · reports/ · docs/ · .laurelin/ · .github/docs/conventions.md