这是工作项目仓库。调查·分析·工作·报告都在一个仓库中处理(D088/D091)。
此文件是仓库·看板入口文档。文件夹·产出物规范的全文请参阅
docs/conventions.md。 正文(现状·结论·链接)在**报告(report)**条目晋升时更新。 调查·分析·工作代理不会修改根 README。
一句话摘要: Google Chrome 的 WebGPU 实现 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) · 分析(复现·实证) · 报告(学习整理)四条线路推进,四条线路均已完成。
已确认事项
150.0.7871.47 与修复提交(Dawn 43055cbe…),变更的 3 个文件及变更原因。cases/20260804-cve-2026-13934-4d10a8/report.md §3)。尚未确认事项 (未用推测填补)
VkSampler 参数、Vulkan 验证层的 VUID 报告均为基于代码依据的预期值(cases/…-4d10a8/report.md §4)。150.0.7871.46·.47·.63 均固定到同一个 Dawn 版本,但 CVE 写为 "prior to .47"。未能确认这一表述的依据。src 侧是否有伴随变更。513006636 仍处于访问受限状态。严重性 — 各来源不同。供应商(Chromium)自身评级为 Medium,CISA-ADP 的 CVSS v3.1 为
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")。在该位置上,攻击者可以 直接操纵进程间命令而非正常 Web API 路径,因此渲染器侧的验证位于信任边界之外。 而 Dawn 的 Vulkan 后端运行在比渲染器权限更高的 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),变更了三个文件。
这个结构正是本 CVE 的核心。 由于前提是渲染器已被攻破,仅靠验证不够, 在权限更高的一侧强制值的第二层才是实际的阻断线。如果概括为"因为缺少输入验证所以补充了验证", 就会错过防御设计的要点。
变更规模为新增 53 行,删除 0 行 — 这是不改动现有逻辑、只补齐缺失检查的补丁。
依据: research/20260804-cve-2026-13934-diff-92f928/report.md §3·§4 ·
cases/20260804-cve-2026-13934-4d10a8/patch_diff.md §4
比对了 Chrome 实际固定的两个 Dawn 快照的源码。
此处揭示的事实: 易受攻击一侧原本就存在 YCbCr 分支和 2 处检查。缺陷不是路径缺失, 而是分支内的条件性约束检查缺失。
由于未进行构建·运行,下面两项是基于代码依据的预期,而非实测。
依据: cases/20260804-cve-2026-13934-4d10a8/report.md §1~§4 ·
详情: docs/cve-2026-13934/evidence.md
安全设计角度
调查方法角度
DEPS 中的组件版本 → 在组件提交日志中搜索 bug 编号,找到了修复提交。步骤:
research/20260804-cve-2026-13934-diff-92f928/sources.md §6。详情: docs/cve-2026-13934/lessons.md
docs/)research/20260804-cve-2026-13934-6bacf7/)research/20260804-cve-2026-13934-diff-92f928/)cases/20260804-cve-2026-13934-4d10a8/)reports/20260804-cve-2026-13934-8400bc/)https://www.cve.org/CVERecord?id=CVE-2026-13934https://nvd.nist.gov/vuln/detail/CVE-2026-13934https://dawn.googlesource.com/dawn/+/43055cbeadddca41a9c973a809f859d641077b2f完整列表及发布日期·标识符位于两条调查线路的 sources.md 中。
| 类型 | 根目录 |
|---|---|
| 调查 | research/ |
| 分析 | cases/ |
| 工作 | work/ |
| 报告 | reports/ |
定期收集: research/topics/<topic>/
research/ · cases/ · work/ · reports/ · docs/ · .laurelin/ · .github/docs/conventions.md| 线路 | 状态 | 已获取内容 |
|---|
公开信息·影响范围调查 (research/…-6bacf7/) | 完成 (4份文档) | CVE·NVD·供应商公告元数据, CWE·CVSS, 受影响版本边界, 判断标准判定 |
补丁·diff 比对 (research/…-diff-92f928/) | 完成 (4份文档) | 锁定修复提交, 比对基准 3 层, 变更文件·逻辑差异, 绕过·残留风险判定 |
复现·实证 (cases/…-4d10a8/) | 完成 (6份文档) — 已进行静态比对, 未观察到执行层面 | 原因结构, 可行性·约束, 两个版本静态比对观察值 |
学习报告 (reports/…-8400bc/) | 完成 (4份文档) | 目录·引用地图, 根 README 草稿, docs/ 文档列表 |
| 变更 | 文件 | 性质 |
|---|
为 YCbCr 描述符新增地址模式·maxAnisotropy 检查 4 处 | src/dawn/native/Sampler.cpp | 前端验证 — 拒绝违规请求 |
| 在带 YCbCr 变换的路径上将地址模式·anisotropy 覆盖为规范合规值 | src/dawn/native/vulkan/SamplerVk.cpp | 后端强制 — 无论输入如何都不产生违规状态 |
新增回归测试 YCbCrSamplerRequiredParams | src/dawn/tests/unittests/validation/YCbCrValidationTests.cpp | 防止复发 |
| 观察对象 | 易受攻击侧 54b4153c… | 修复侧 01249a97… | 确认级别 |
|---|
YCbCr 验证块中 DAWN_INVALID_IF 数量 | 2 处 (功能门控 + 格式未定义) | 6 处 | 实测 |
| Vulkan 后端的规范合规值强制 | 无 (直至 pNext 链接) | 有 | 实测 |
回归测试 YCbCrSamplerRequiredParams | 无 (TEST_F 23 个) | 有 (24 个) | 实测 |
| 违规请求时的 device error | 不发生 | 发生 | 预期 (代码依据) |
| 文档 | 内容 |
|---|
docs/cve-2026-13934/overview.md | 概述·背景·结论摘要,严重性解读 |
docs/cve-2026-13934/root-cause-and-fix.md | 原因三层结构与补丁的两个层次 |
docs/cve-2026-13934/evidence.md | 静态比对观察值,观察路径与局限 |
docs/cve-2026-13934/lessons.md | 安全设计·调查方法教训 |
docs/cve-2026-13934/limits-and-sources.md | 局限·未确认项与来源列表 |
docs/conventions.md | 文件夹·产出物规范 (全文) |
| 文档 | 内容 |
|---|
brief.md | 委托原文,判断标准 C1~C6,官方来源定义 |
sources.md | CVE·NVD·供应商公告元数据, CWE·CVSS, 来源间冲突 |
report.md | 影响·CVSS·脆弱条件判定, C1~C6 判定,严重性解读 |
followups.json | 后续建议 |
| 文档 | 内容 |
|---|
brief.md | 目标,判断标准 D1~D6,基准补丁树 |
sources.md | 修复提交·比对基准对, DEPS·Gerrit, 追踪步骤 |
report.md | 变更文件·逻辑差异·绕过/残留风险判定, D1~D6 |
followups.json | 后续建议 |
| 文档 | 内容 |
|---|
intake.md | 受理元数据,对象·版本范围,启动条件,隔离要求,判断标准 J1~J4 |
patch_diff.md | 变更点·变更原因,补丁前后观察指标 |
root_cause.md | 核心原因三层结构,前提 P1~P7,信任边界 |
exploitability.md | 可实证/不可实证区分,观察路径,约束,扩散防护边界 |
report.md | 复现验证综合 — 静态比对观察值,前后差异,J1~J4 判定 |
followups.json | 后续建议 |
| 文档 | 内容 |
|---|
outline.md | 读者·目录·来源引用地图(S1~S15) |
README.md | 本根 README 的晋升原始草稿 |
docs-index.md | docs/ 文档列表·摘要,晋升注意事项 |
followups.json | 后续建议 |