
针对 CVE-2026-76036 的差分检测工具,该漏洞是 Android 版 Chrome 中 Dawn WebGPU 的堆缓冲区溢出。它探测易受攻击的深度/模板纹理组合,并监控 GPU 进程崩溃,以判定浏览器和 GPU 的暴露情况。
在 Dawn(Chromium 的 WebGPU 实现)中存在严重(CVSS 9.6,CWE-122)堆缓冲区溢出漏洞,影响 Android 上早于 151.0.7922.169 的 Google Chrome(稳定版 151,发布于 2026-08-18)。
根据 Dawn 修复提交 178fb7048ad3,根本原因是:PowerVR 专有 Vulkan 驱动会错误计算非二次幂(NPOT)深度/模板纹理的 mip 层级大小。在受影响硬件上,网页调用 device.createTexture() 并使用深度/模板格式、NPOT 尺寸和 mipLevelCount > 1 时,会破坏 GPU 进程堆。NVD 描述:"允许远程攻击者通过精心构造的 HTML 页面在沙箱之外执行任意代码"。
精确触发条件位于受限的 Chromium bug 540087398 中。因此,本仓库提供的是一个差分检测框架,而非漏洞利用:它枚举公开修复提交所提到的组合,并判定你的浏览器+GPU。
| 文件 | 用途 |
|---|---|
poc.html | WebGPU 探测矩阵 — 全部五种深度/模板格式 × NPOT 尺寸(包括 Dawn 被屏蔽的端到端测试中的 259×127 尺寸)× mip 数量,每个都在各自的验证错误作用域中 |
crash_monitor.py | adb 配套脚本 — 将已安装的 Chrome 版本与 151.0.7922.169 下限比对,并跟踪 logcat 以捕获 GPU 进程致命信号 |
# 1) serve the harness (WebGPU needs a secure context: localhost or HTTPS)
$ python3 -m http.server 8000
# 2) on the device (or desktop Chrome), open:
# http://<your-host>:8000/poc.html (localhost/http works; remote hosts need HTTPS)
# 3) from a host with adb, watch the GPU process:
$ python3 crash_monitor.py
[*] com.android.chrome versionName=151.0.7922.83
[!] VULNERABLE — below the 151.0.7922.169 fix floor (CVE-2026-76036)
[*] logcat: live tail — Ctrl-C to stop. Load poc.html on the device now.
poc.html该框架对每个探测进行限速(约 150 毫秒),使实验设备能够存活足够长的时间以得出判定,而不是在首个差异副本上立即崩溃。
仅在你拥有或管理的设备和浏览器上运行。在未打补丁的受影响硬件上,底层缺陷是一个真实的内存破坏触发条件;该框架刻意避免任何塑造该内存破坏的尝试。
| 观察结果 | 含义 |
|---|
| 包含 "由于驱动缺陷,此设备上不允许此操作" 的验证错误 | 修复已生效 + GPU 属于受影响的 PowerVR 类别(设备在补丁前可触发;请确认版本 ≥ 151.0.7922.169) |
| 组合被接受,无此类错误 | GPU 不属于受影响的 Imagination 类别 — 无法通过此路径触发 |
device.lost 在扫描中途触发 / Chrome < 151.0.7922.169 上 logcat 中出现 GPU 进程 Fatal signal | 此 CVE 旨在消除的补丁前行为 — 请立即更新 |
navigator.gpu 未定义 | WebGPU 不可用 — 攻击面已关闭 |