
Repository di ricerca strutturata su vulnerabilità per un difetto CWE-20 di Chrome Dawn WebGPU: causa principale, diff della patch, verifica statica, revisione della gravità e lezioni di sicurezza.
Questo è il repository del progetto di lavoro. Indagini, analisi, attività e report vengono gestiti in un unico repo (D088/D091).
Questo file è il documento di ingresso per repo e board. Per il testo completo delle convenzioni su cartelle e artefatti, consulta
docs/conventions.md. Il corpo (stato, conclusioni, link) viene aggiornato quando l'elemento report viene promosso. Gli agenti di indagine, analisi e lavoro non modificano il README root.
Sintesi in una riga: durante la creazione di sampler YCbCr, l'implementazione WebGPU di Google Chrome, Dawn, non verificava i vincoli sui parametri richiesti dalla specifica Vulkan; un attaccante che aveva già compromesso il processo renderer poteva così far arrivare valori fuori specifica fino al processo GPU (CWE-20). La correzione è stata applicata su due strati — convalida aggiuntiva e imposizione lato backend — ed è inclusa in Chrome 150.0.7871.47.
I documenti di apprendimento dettagliati sono in docs/cve-2026-13934/ — scritti in modo da poter seguire causa, correzione, verifica e lezioni senza riproduzione.
Oggetto: CVE-2026-13934 — Google Chrome / Dawn (implementazione WebGPU), tipo di vulnerabilità (Improper Input Validation). CVE pubblicata il 2026-06-30, versione corretta . Base: §1·§2.
Fasi di avanzamento — quattro linee di lavoro: indagine (informazioni pubbliche) · indagine (patch e diff) · analisi (riproduzione e verifica) · report (sintesi di apprendimento). Tutte e quattro sono state completate.
| Linea | Stato | Elementi ottenuti |
|---|---|---|
Indagine su informazioni pubbliche e ambito di impatto (research/…-6bacf7/) | Completata (4 documenti) | Metadati di CVE, NVD e avvisi del vendor, CWE·CVSS, confini delle versioni impattate, giudizi sui criteri di valutazione |
Confronto patch/diff (research/…-diff-92f928/) | Completata (4 documenti) | Identificazione del commit di correzione, tre livelli di riferimento per il confronto, delta di file e logica modificati, giudizio su bypass e rischi residui |
Riproduzione e verifica (cases/…-4d10a8/) | Completata (6 documenti) — confronto statico eseguito, nessuna osservazione a livello di esecuzione | Struttura della causa, sfruttabilità e vincoli, valori osservati dal confronto statico delle due revisioni |
Report di apprendimento (reports/…-8400bc/) | Completata (4 documenti) | Indice e mappa delle citazioni, bozza del README root, elenco dei documenti in docs/ |
Elementi confermati
150.0.7871.47 e commit di correzione (Dawn 43055cbe…), 3 file modificati e relative motivazioni.cases/20260804-cve-2026-13934-4d10a8/report.md §3).Elementi non ancora confermati (non abbiamo colmato le lacune con congetture)
VkSampler generati e i report VUID del livello di validazione Vulkan sono valori attesi basati sull'analisi del codice (cases/…-4d10a8/report.md §4).150.0.7871.46, .47 e .63 fissano tutti la stessa revisione Dawn, ma la CVE riporta "prior to .47". Non siamo riusciti a verificare la base di questa dicitura.src.513006636, che contiene la causa, è in stato di accesso limitato.Gravità — varia a seconda della fonte. La valutazione del vendor (Chromium) stesso è Medium, il CVSS v3.1 di 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 non esiste una valutazione NVD autonoma. Le riportiamo affiancate senza giudicare quale sia corretta — l'interpretazione è in docs/cve-2026-13934/overview.md.
Questo repository non contiene servizi distribuiti (API, backend, database, ecc.). Tutti gli artefatti sono documenti.
La specifica Vulkan richiede che, per i sampler con trasformazione YCbCr, la modalità di indirizzamento di tutti gli assi sia CLAMP_TO_EDGE e che il filtraggio anisotropo (anisotropy) sia disattivato (VUID-VkSamplerCreateInfo-addressModeU-01646). Prima della patch, Dawn non verificava questo vincolo, quindi i parametri fuori specifica potevano superare la convalida e arrivare fino alla creazione del VkSampler.
L'elemento decisivo è il modello di minaccia. La descrizione pubblica presuppone un attaccante che ha già compromesso il processo renderer ("a remote attacker who had compromised the renderer process"). Da quella posizione si possono manipolare direttamente i comandi tra processi, non il normale percorso delle API web, quindi la convalida lato renderer è al di fuori del confine di fiducia. E il backend Vulkan di Dawn opera nel processo GPU, che ha privilegi più elevati del renderer — per questo il difetto diventa una superficie di escape dalla sandbox.
Base: cases/20260804-cve-2026-13934-4d10a8/root_cause.md §2 · Dettagli: docs/cve-2026-13934/root-cause-and-fix.md
Il commit di correzione è Dawn 43055cbeadddca41a9c973a809f859d641077b2f ("Add YCbCr sampler validation", 2026-05-27, Bug: 513006636) e modifica tre file.
| Modifica | File | Natura |
|---|---|---|
Aggiunta di 4 controlli su modalità di indirizzamento e maxAnisotropy nel descrittore YCbCr | src/dawn/native/Sampler.cpp | Convalida frontend — rifiuta le richieste non conformi |
| Sovrascrittura di modalità di indirizzamento e anisotropia con valori conformi alla specifica nei percorsi con trasformazione YCbCr | src/dawn/native/vulkan/SamplerVk.cpp | Imposizione backend — qualunque sia l'input, non viene creato uno stato non conforme |
Aggiunta del test di regressione YCbCrSamplerRequiredParams | src/dawn/tests/unittests/validation/YCbCrValidationTests.cpp | Prevenzione delle ricadute |
Questa struttura è il cuore della CVE. Poiché si presuppone che il renderer sia già compromesso, la sola convalida non basta: è il secondo strato, che impone i valori dal lato con privilegi più elevati, a costituire la linea di blocco effettiva. Riassumere come "mancava la convalida dell'input e quindi è stata aggiunta" farebbe perdere il punto centrale del progetto difensivo.
La dimensione della modifica è 53 righe aggiunte, 0 cancellate — una patch che colma i controlli mancanti senza modificare la logica esistente.
Base: research/20260804-cve-2026-13934-diff-92f928/report.md §3·§4 · cases/20260804-cve-2026-13934-4d10a8/patch_diff.md §4
Abbiamo confrontato il codice sorgente dei due snapshot Dawn effettivamente fissati da Chrome.
| Oggetto osservato | Lato vulnerabile 54b4153c… | Lato corretto 01249a97… | Livello di verifica |
|---|---|---|---|
Numero di DAWN_INVALID_IF nel blocco di convalida YCbCr | 2 (gate di funzionalità + formato non definito) | 6 | Misurato |
| Imposizione di valori conformi alla specifica nel backend Vulkan | Assente (fino al collegamento di pNext) | Presente | Misurato |
Test di regressione YCbCrSamplerRequiredParams | Assente (23 TEST_F) | Presente (24) | Misurato |
| device error in caso di richiesta non conforme | Non si verifica | Si verifica | Atteso (basato sul codice) |
Ciò che emerge qui: anche nel lato vulnerabile il ramo YCbCr e 2 controlli erano già presenti. Il difetto non era un percorso mancante, ma l'omissione del controllo del vincolo condizionale all'interno del ramo.
Poiché non abbiamo compilato né eseguito, le due voci seguenti sono attese basate sull'analisi del codice, non misurazioni.
Base: cases/20260804-cve-2026-13934-4d10a8/report.md §1~§4 · Dettagli: docs/cve-2026-13934/evidence.md
Dal punto di vista della progettazione della sicurezza
Dal punto di vista metodologico dell'indagine
DEPS → ricerca del numero di bug nel log dei commit del componente. Procedura: research/20260804-cve-2026-13934-diff-92f928/sources.md §6.Dettagli: docs/cve-2026-13934/lessons.md
docs/)| Documento | Contenuto |
|---|---|
docs/cve-2026-13934/overview.md | Panoramica, contesto, sintesi delle conclusioni, interpretazione della gravità |
docs/cve-2026-13934/root-cause-and-fix.md | Struttura a 3 livelli della causa e i due strati della patch |
docs/cve-2026-13934/evidence.md | Valori osservati dal confronto statico, percorso di osservazione e limiti |
docs/cve-2026-13934/lessons.md | Lezioni su progettazione della sicurezza e metodi di indagine |
docs/cve-2026-13934/limits-and-sources.md | Limiti, voci non verificate ed elenco delle fonti |
docs/conventions.md | Convenzioni su cartelle e artefatti (testo completo) |
research/20260804-cve-2026-13934-6bacf7/)| Documento | Contenuto |
|---|---|
brief.md | Testo originale della richiesta, criteri di giudizio C1~C6, definizione delle fonti ufficiali |
sources.md | Metadati di CVE, NVD e avvisi del vendor, CWE·CVSS, conflitti tra fonti |
report.md | Giudizio su impatto, CVSS e condizioni di vulnerabilità, giudizi C1~C6, interpretazione della gravità |
followups.json | Proposte di follow-up |
research/20260804-cve-2026-13934-diff-92f928/)| Documento | Contenuto |
|---|---|
brief.md | Obiettivo, criteri di giudizio D1~D6, albero della patch di riferimento |
sources.md | Coppia commit di correzione/riferimento di confronto, DEPS·Gerrit, procedura di tracciamento |
report.md | File modificati, delta di logica, giudizio su bypass e rischi residui, D1~D6 |
followups.json | Proposte di follow-up |
cases/20260804-cve-2026-13934-4d10a8/)| Documento | Contenuto |
|---|---|
intake.md | Metadati di presa in carico, oggetto e intervallo di versioni, condizioni di avvio, requisiti di isolamento, criteri di giudizio J1~J4 |
patch_diff.md | Modifiche e motivazioni, indicatori osservabili prima/dopo la patch |
root_cause.md | Struttura a 3 livelli della causa principale, precondizioni P1~P7, confine di fiducia |
exploitability.md | Distinzione verificabile/non verificabile, percorso di osservazione, vincoli, confini di prevenzione della propagazione |
report.md | Sintesi della verifica di riproduzione — valori osservati dal confronto statico, differenze prima/dopo, giudizi J1~J4 |
followups.json | Proposte di follow-up |
reports/20260804-cve-2026-13934-8400bc/)| Documento | Contenuto |
|---|---|
outline.md | Lettori, indice, mappa delle citazioni delle fonti (S1~S15) |
README.md | Bozza originale da cui è stato promosso questo README root |
docs-index.md | Elenco e riepilogo dei documenti in docs/, note sulla promozione |
followups.json | Proposte di follow-up |
https://www.cve.org/CVERecord?id=CVE-2026-13934https://nvd.nist.gov/vuln/detail/CVE-2026-13934https://dawn.googlesource.com/dawn/+/43055cbeadddca41a9c973a809f859d641077b2fL'elenco completo con date di pubblicazione e identificatori è nei file sources.md delle due linee di indagine.
| Tipo | Root |
|---|---|
| Indagine | research/ |
| Analisi | cases/ |
| Lavoro | work/ |
| Report | reports/ |
Raccolta periodica: research/topics/<topic>/
research/ · cases/ · work/ · reports/ · docs/ · .laurelin/ · .github/docs/conventions.md