
Структурированный репозиторий исследования уязвимостей для дефекта CWE-20 в Chrome Dawn WebGPU: первопричина, diff патча, статическая проверка, оценка критичности и уроки безопасности.
Это репозиторий рабочего проекта. Исследование, анализ, работа и отчёты ведутся в одном репозитории (D088/D091).
Этот файл — входной документ репозитория и доски. Полный текст правил для папок и артефактов — см.
docs/conventions.md. Тело документа (статус, выводы, ссылки) обновляется при повышении пункта отчёта (report). Агенты исследования, анализа и работы не изменяют корневой README.
Одной строкой: реализация WebGPU в Google Chrome — Dawn — при создании YCbCr-сэмплеров не проверяла ограничения параметров, требуемые спецификацией Vulkan, из-за чего атакующий, уже захвативший процесс рендерера, мог провести нарушающие спецификацию значения вплоть до GPU-процесса (CWE-20). Исправление добавляет два слоя: дополнительную проверку и принудительное применение ограничений в бэкенде; оно вошло в Chrome 150.0.7871.47.
Подробные учебные документы — в docs/cve-2026-13934/: они написаны так,
чтобы причину, исправление, доказательства и уроки можно было проследить без воспроизведения.
Объект: CVE-2026-13934 — Google Chrome / Dawn (реализация WebGPU), тип уязвимости CWE-20
(Improper Input Validation). CVE опубликована 2026-06-30, версия исправления 150.0.7871.47.
Источник: research/20260804-cve-2026-13934-6bacf7/sources.md §1, §2.
Этапы работ — четыре направления: исследование (открытые источники) · исследование (патч/diff) · анализ (воспроизведение/доказательства) · отчёт (учебное обобщение); все четыре направления завершены.
| Направление | Статус | Полученный результат |
|---|---|---|
Исследование открытых источников и области воздействия (research/…-6bacf7/) | Завершено (4 документа) | Метаданные CVE/NVD/уведомления вендора, CWE/CVSS, границы затронутых версий, решения по критериям |
Сравнение патча/diff (research/…-diff-92f928/) | Завершено (4 документа) | Идентифицирован исправляющий коммит, три уровня эталонов сравнения, дельта изменённых файлов и логики, оценка обхода/остаточного риска |
Воспроизведение и доказательства (cases/…-4d10a8/) | Завершено (6 документов) — выполнено статическое сравнение, наблюдений на уровне выполнения нет | Структура причины, реализуемость и ограничения, результаты статического сравнения двух ревизий |
Учебный отчёт (reports/…-8400bc/) | Завершено (4 документа) | Оглавление и карта цитирований, черновик корневого README, список документов docs/ |
Что подтверждено
150.0.7871.47 и исправляющий коммит (Dawn 43055cbe…), три изменённых файла и причины изменений.cases/20260804-cve-2026-13934-4d10a8/report.md §3).Что пока не подтверждено (мы не заполняли это предположениями)
VkSampler
и сообщения VUID слоя проверки Vulkan — это ожидаемые значения, основанные на анализе кода
(cases/…-4d10a8/report.md §4).150.0.7871.46, .47, .63 фиксируют одну
и ту же ревизию Dawn, тогда как в CVE указано «prior to .47». Обоснование такой записи
мы не подтвердили.src.513006636 с описанием причины находится
в состоянии ограниченного доступа.Серьёзность — различается в зависимости от источника. Собственная оценка вендора (Chromium) —
Medium, CVSS v3.1 от CISA-ADP — 9.6 CRITICAL (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H),
а собственной оценки NVD нет. Мы не выносим вердикт, какая из них верна, и приводим обе —
интерпретация в docs/cve-2026-13934/overview.md.
В этом репозитории нет развёрнутых сервисов (API, бэкендов, баз данных и т. п.). Все артефакты — это документы.
Спецификация Vulkan требует для сэмплеров с преобразованием YCbCr, чтобы режимы адресации
по всем осям были CLAMP_TO_EDGE, а анизотропная фильтрация (anisotropy) была отключена
(VUID-VkSamplerCreateInfo-addressModeU-01646). До патча Dawn не проверяла это ограничение,
поэтому параметры, нарушающие спецификацию, могли пройти проверку и дойти до создания VkSampler.
Ключевой момент — модель угроз. В публичном описании предполагается, что атакующий уже захватил процесс рендерера («a remote attacker who had compromised the renderer process»). Находясь там, он может напрямую манипулировать межпроцессными командами, а не идти обычным путём веб-API, поэтому проверки на стороне рендерера находятся за пределами доверительной границы. А Vulkan-бэкенд Dawn работает в GPU-процессе с более высокими привилегиями, чем рендерер, — именно поэтому этот дефект становится поверхностью для выхода из песочницы.
Источник: cases/20260804-cve-2026-13934-4d10a8/root_cause.md §2 ·
подробнее: docs/cve-2026-13934/root-cause-and-fix.md
Исправляющий коммит — Dawn 43055cbeadddca41a9c973a809f859d641077b2f
(«Add YCbCr sampler validation», 2026-05-27, Bug: 513006636) — изменяет три файла.
| Изменение | Файл | Характер |
|---|---|---|
Добавлены 4 проверки режима адресации и maxAnisotropy для дескриптора YCbCr | src/dawn/native/Sampler.cpp | Проверка на фронтенде — отклонение нарушающих запросов |
| Перезапись режима адресации и anisotropy значениями, соответствующими спецификации, на путях с преобразованием YCbCr | src/dawn/native/vulkan/SamplerVk.cpp | Принудительное применение в бэкенде — нарушающее состояние не создаётся при любом входе |
Добавлен регрессионный тест YCbCrSamplerRequiredParams | src/dawn/tests/unittests/validation/YCbCrValidationTests.cpp | Предотвращение рецидива |
Именно эта структура — ядро данной CVE. Поскольку предполагается, что рендерер уже скомпрометирован, одной проверки недостаточно; фактической линией блокировки становится второй слой, который принудительно применяет значения на стороне с более высокими привилегиями. Если свести это к фразе «проверка входных данных отсутствовала, поэтому её добавили», будет упущена суть проектирования защиты.
Объём изменений — 53 строки добавлено, 0 удалено — это патч, который дополняет недостающие проверки, не переделывая существующую логику.