Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-9999-exploit — 针对 Chrome ANGLE/Metal WebGL 后端中 CVE-2026-9999 的概念验证与 GLSL 模糊测试器,包含构建指纹识别、精选着色器及崩溃产物捕获功能。 | Kitploit
工具/GitHubGitHub/josephfarah-ciso/cve-2026-9999-exploit
漏洞分析漏洞利用Web安全模糊测试
GitHubjosephfarah-ciso/cve-2026-9999-exploit

CVE-2026-9999-exploit

针对 Chrome ANGLE/Metal WebGL 后端中 CVE-2026-9999 的概念验证与 GLSL 模糊测试器,包含构建指纹识别、精选着色器及崩溃产物捕获功能。

查看仓库

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
7天前尚未审核

CVE-2026-9999 — Chrome ANGLE/Metal WebGL PoC 漏洞挖掘工具(macOS)


1. 漏洞摘要

字段值
CVECVE-2026-9999
厂商 / 产品Google Chrome
受影响版本Chrome < 148.0.7778.216,仅限 macOS [1]
修复版本148.0.7778.216 [1]
影响通过特制 HTML 页面在沙箱内执行任意代码 [1]
Chromium 严重级别高 [1]
CVSS 3.1(CISA-ADP)8.8 高危 — CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H [1]
NVD(NIST)CVSS 评估尚未提供 [1]
CWECWE-269 — 权限管理不当(由 CISA-ADP 补充)[1]
CISA SSVC(2026-05-29)exploitation: none,automatable: no,technicalImpact: total [1]
发布时间 / 最后修改2026-05-28 / 2026-07-21 [1]
根本原因未公开 — Chromium issue 513364480 显示“需要权限”[1]

攻击链含义: [1] 中“在沙箱内”执行代码意味着攻击者可以控制一个沙箱化进程(最可能是 GPU 进程)。完整的浏览器接管还需要一次单独的沙箱逃逸,而该逃逸不属于本 CVE 的范畴。


2. 策略与假设(分析人员自行评估 — 视为未经证实)

以下内容是基于公开记录的推断,并非已确认的事实:

  • ANGLE 是 Chrome 用于将 WebGL GLSL 翻译为平台图形 API 的引擎——在 macOS 上翻译为 Metal。“特制 HTML 页面”[1] 到达 ANGLE 几乎可以肯定意味着 WebGL 内容——即攻击者控制的着色器和/或由 Metal 后端处理的 WebGL 状态。
  • CWE-269(权限管理不当)[1] 结合沙箱内的有限影响,表明 ANGLE/GPU 层在着色器翻译或状态验证期间未能正确约束某些攻击者可控的内容。
  • 从历史上看,该组件曾通过 GLSL 翻译器中的边界情况产生过内存安全漏洞(越界常量索引、整数溢出数组大小、swizzle/discard 交互、超大 uniform 块、循环展开爆炸)。

因此,该工具专门针对这些模式进行测试,然后大规模变异 GLSL,以寻找渲染器端的崩溃(WebGL 上下文丢失 = GPU 进程崩溃或被看门狗杀死)。


3. 仓库内容

文件用途
cve-2026-9999-poc.html自包含 PoC 工具(无依赖):构建指纹识别、8 个精选的翻译器压力着色器、带崩溃产物捕获的 GLSL 模糊器
README.md本文档

4. 环境要求

  • 一台你被授权可以故意搞崩溃的 macOS 机器或支持 Metal 的虚拟机。该 CVE 仅影响 macOS [1];在 Windows/Linux 上测试不会触及存在漏洞的 ANGLE Metal 后端。
  • Chrome 构建版本 < 148.0.7778.216 [1](见 §5)。
  • 硬件 GPU / Metal 支持。 如果没有,Chrome 会回退到 SwiftShader(软件渲染),永远无法到达存在漏洞的路径——见 §5.4 的检查。
  • Python 3(可选,仅用于 §5.1 中的版本查询辅助脚本和本地 HTTP 服务器)。

5. 环境搭建

5.1 方法 A — Chrome for Testing(推荐)

Google 的 Chrome for Testing 归档提供了固定版本的构建,不会自动更新。找到最新的受影响构建(所有低于 148.0.7778.216 的版本均受影响 [1]):

root@kitploit:~
import json, urllib.request
data = json.load(urllib.request.urlopen(
  "https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json"))
key = lambda v: tuple(int(x) for x in v.split('.'))
fix = (148, 0, 7778, 216)
cands = sorted((v["version"] for v in data["versions"]
                if "chrome" in v.get("downloads", {}) and key(v["version"]) < fix), key=key)
print(cands[-5:])   # pick the last (newest vulnerable) entry

针对你的架构(uname -m)下载:

root@kitploit:~
# Apple Silicon
https://storage.googleapis.com/chrome-for-testing-public/<VERSION>/mac-arm64/chrome-mac-arm64.zip
# Intel
https://storage.googleapis.com/chrome-for-testing-public/<VERSION>/mac-x64/chrome-mac-x64.zip

解压到实验文件夹(例如 ~/lab/,不要放到 /Applications),并从那里启动。

5.2 方法 B — Chromium 快照

如果 Chrome for Testing 中缺少某个特定构建,可使用 Chromium 快照归档(Intel 为 commondatastorage.googleapis.com/chromium-browser-snapshots/Mac/,Apple Silicon 为 .../Mac_Arm/),按提交位置索引——通过 chromium-history 将受影响版本映射到分支位置,然后拉取最近的快照。快照同样不会自动更新。

5.3 阻止自动更新(仅当使用其他来源的官方品牌构建时需要)

杀掉 Keystone 更新程序代理并屏蔽 googleupdate.googleapis.com,否则测试构建会在夜间静默自我修补。Chrome for Testing 构建不需要此步骤。

5.4 确认你使用的是 Metal 后端(关键)

如果没有 Metal,Chrome 会用软件方式(SwiftShader)渲染 WebGL,永远不会触及 ANGLE Metal 后端。在 PoC 页面的控制台中运行:

root@kitploit:~
const c = document.createElement('canvas'), g = c.getContext('webgl2');
const x = g.getExtension('WEBGL_debug_renderer_info');
console.log(g.getParameter(x.UNMASKED_RENDERER_WEBGL));
// Good:  contains "ANGLE Metal Renderer"
// Bad:   contains "SwiftShader" -> the vulnerable path is NOT being exercised

你也可以在 chrome://gpu 中确认。支持 GPU 虚拟化的 Parallels/VMware Fusion 虚拟机通常可以正常工作;最小的 QEMU/UTM 环境通常会回退到 SwiftShader。


6. 复现步骤

  1. 隔离目标。 使用虚拟机快照或专用 macOS 账户。切勿在受影响构建中登录或启用同步;将其视为默认已被攻陷。(该 CVE 的影响是仅通过访问网页即可在沙箱内执行代码 [1]。)
  2. 安装受影响构建,按 §5 操作并确认 §5.4 通过。
  3. 托管 PoC(直接打开文件,或):
    root@kitploit:~
    cd <repo dir>
    python3 -m http.server 8000
    # then browse to http://localhost:8000/cve-2026-9999-poc.html
    
  4. 检查加载时打印的指纹行。 它应报告构建版本低于 148.0.7778.216,因此可能受影响 [1]。在已修补的构建上,工具会发出警告,以免你浪费时间。
  5. 点击 1) Run curated triggers(运行精选触发器)。 八个着色器对 §2 中描述的翻译器模式进行压力测试(越界常量索引、整数溢出数组大小、动态矩阵索引、循环展开压力、数组的数组、discard/swizzle、预处理器边界、超大 UBO)。留意 [!!] 结果和上下文丢失事件。
  6. 点击 2) Fuzz(模糊测试)。 变异的 GLSL 着色器会被循环编译、链接、绘制并读回。留意日志中的 CONTEXT LOST。
  7. 崩溃发生时,出错的着色器会持久化到 localStorage。取回它:
    root@kitploit:~
    localStorage.getItem("cve20269999_poc_fs");      // crashing fragment shader
    localStorage.getItem("cve20269999_crashes");     // crash event log
    
  8. 最小化并重新测试崩溃的着色器(连续运行 5 次以上),以确认其确定性。
  9. 确认根本原因:在将任何问题归因于 CVE-2026-9999 之前,使用 ASAN 构建验证——见 §8。

可疑运行的实时快照也可以在 chrome://gpu 和 macOS 控制台(GPU 进程崩溃报告)中查看。


7. 结果解读 / 已知误报

  • WEBGL_context_lost ≠ 漏洞。 Chrome 的 GPU 看门狗会杀死长时间运行的着色器(loop-unroll-dos 触发器和具有巨大循环计数的模糊迭代被有意设计为运行缓慢)。消除噪音:减小 SH_ITER,或确认任何候选崩溃都能快速复现(每次迭代 < 1 秒)。
  • 真正的内存安全崩溃应能从最小化的着色器确定性复现,并在控制台中显示明显的崩溃特征(例如 EXC_BAD_ACCESS),而不是看门狗终止。
  • 只有指明 ANGLE Metal 后端的 ASAN 报告,才是你找到了这个 bug 而非无关驱动程序小故障的可靠证据。

8. 根本原因确认:ASAN 构建(可选但强烈推荐)

使用 AddressSanitizer 构建一个受影响的 Chromium 版本:

root@kitploit:~
fetch chromium
cd src
git checkout tags/148.0.7778.215          # last tag before the fix
gn gen out/asan --args='is_asan=true is_debug=false symbol_level=1 dcheck_always_on=true'
autoninja -C out/asan chrome

然后在启用 Metal API 验证的情况下运行最小化的崩溃着色器:

root@kitploit:~
MTL_DEBUG_LAYER=1 out/asan/Chromium.app/Contents/MacOS/Chromium poc.html

ASAN 跟踪将指出确切的 ANGLE/Metal 函数,并确认崩溃是否与该 CVE 的组件匹配 [1]。 (后续:一旦 148.0.7778.216 的修复提交可见,对 third_party/angle/src/libANGLE/renderer/metal/ 执行 diff,以定位真正的根本原因,并用确定性触发器取代模糊测试方法。)


9. 局限性

  • 不存在公开的根本原因或 PoC。 Chromium issue 受限(“需要权限”)[1];该工具基于假设驱动。
  • 没有已知的在野利用。 CISA 的 SSVC 补充(2026-05-29)记录 exploitation: none [1]。
  • 仅沙箱内的有限影响 [1] ——即使该 PoC 能产生代码执行,它也只涉及真实攻击链中的沙箱化进程阶段。
  • 仅限 macOS 目标 [1];不要从其他平台上的运行结果得出结论。

10. 安全与法律

仅在你拥有或明确授权测试的机器上进行测试。该工具故意编译对抗性着色器以使图形进程崩溃——预期会出现 GPU 进程被杀。让受影响浏览器构建远离生产网络。


11. 参考资料

[1] NVD — CVE-2026-9999:https://nvd.nist.gov/vuln/detail/CVE-2026-9999 * 厂商公告(Chrome 发布博客,稳定版渠道更新): https://chromereleases.googleblog.com/2026/05/stable-channel-update-for-desktop_0877304591.html * Chromium issue 513364480(访问受限): https://issues.chromium.org/issues/513364480

下载工具