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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-5281-CVE-2026-11057-fullchain — Android Chromium 全链路漏洞利用,结合 CVE-2026-11057 信息泄露与 CVE-2026-5281 释放后使用(use-after-free),实现 vtable 劫持与任意代码执行。 | Kitploit
工具/GitHubGitHub/jaf0rk/cve-2026-5281-cve-2026-11057-fullchain
Android安全漏洞利用框架漏洞分析漏洞利用Web应用程序漏洞利用移动安全二进制利用
GitHubjaf0rk/cve-2026-5281-cve-2026-11057-fullchain

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-5281-CVE-2026-11057-fullchain

Android Chromium 全链路漏洞利用,结合 CVE-2026-11057 信息泄露与 CVE-2026-5281 释放后使用(use-after-free),实现 vtable 劫持与任意代码执行。

查看仓库
392个月前尚未审核

CVE-2026-5281+CVE-2026-11057 Android 完整利用链

设备

Pixel 7 Android 16 ARM64

Chromium 版本

commit 994c846bbd7a35241ba7c08158c13d66412a6993 (HEAD -> 146.0.7680.111, tag: 146.0.7680.111)
Author: Roger McFarlane <[email protected]>
Date:   Mon Mar 9 12:48:07 2026 -0700

描述

利用方法

本仓库将 CVE-2026-11057(Skia 未初始化字形图像内存)与 CVE-2026-5281(Dawn wire 服务器 DeviceInfo 释放后使用)组合成一条完整利用链。所有修改均在渲染器侧;GPU 进程代码保持不变:

  1. 信息泄露(CVE-2026-11057) — 通过 canvas 文本渲染触发未初始化的字形图像缓冲区,从 GPU 进程堆中读回指针,通过算术运算校验这些指针,推导出 PartitionAlloc 池基址,并计算出伪造 Server 目标 M = POOL + 0x202A08000(经校准的偏移)。

  2. CC 喷射 — createBuffer(label="CCM:<m>:<n>") 触发注入 3000 个不完整的 ChunkedCommands(10KB 桶,remainingSize=1,在 wire 服务器的 mChunkedCommands 中保持存活)。载荷在 M 周围区域填充一个为 Android arm64 布局的伪造 Server:MutexProtected vptr 位于 +0xB20,ChunkedCommandSerializer 位于 +0xB50/+0xB58,伪造的 CommandSerializer/vtable 位于 +0xC00/+0xD00。

  3. 5281 触发 + 占位 — queue.writeBuffer(buffer, 0x414141, ...) 首先调用 Unregister(Device) 释放 16 字节的 DeviceInfo,然后注入一个 16 字节的占位 ChunkedCommand 以回收该槽位并将 info->server 覆盖为 M,最后通过越界偏移触发验证错误。

  4. 悬空回调 → vtable 劫持 — 未捕获错误回调解引用 info->server = M(伪造 Server):清零的互斥锁通过检查,执行流到达 OnUncapturedError → SerializeCommand,相对 vtable 间接调用命中我们的伪造 vtable,得到 pc = fake_vtable + 受控 int32 偏移,演示为 pc = 0x7641414141。

注意:Android arm64 Chromium 使用相对 vtable(-fexperimental-relative-c++-abi-vtables);vtable 条目是 32 位相对偏移而非绝对函数指针,因此 PoC 在 vtable 劫持点使用受控 int32 偏移作为标记。

在测试设备上,完整利用链以接近 100% 的成功率到达 vtable 劫持崩溃;泄露阶段偶尔可能需要多次自动重载才能成功。

文件作用

  • SkStrike.cpp.patch — CVE-2026-11057 泄露触发器。FlattenGlyphsByType() 重写 strike 载荷,使 GPU 进程创建一个 fImage == nullptr 的 SkGlyph,最终读取未初始化的图像缓冲区以泄露堆指针。
  • Device.cpp.patch — Dawn wire 客户端 CC 喷射。APICreateBuffer() 解析 CCM: 标签,构建 Android arm64 伪造 Server 载荷,并注入 N 个在 GPU 进程中保持存活的不完整 ChunkedCommands。
  • ApiProcs.cpp.patch — CVE-2026-5281 触发 + 占位。在 QueueWriteBuffer 的魔术偏移 0x414141 上,它调用 Unregister(Device) 释放 DeviceInfo,注入一个 16 字节的 ChunkedCommand 以回收槽位并设置 info->server = M,然后继续使用越界偏移触发悬空回调。
  • exploit.html — 页面编排:泄露原语(groom/draw/readCell/verifyRuns/derivePoolBase)、CC 喷射,以及独立的 exploit5281() 触发器;失败时清理喷射状态并重载,以免各阶段相互干扰。

披露范围

本 ExP 仅披露至 vtable 劫持 步骤(受控间接调用目标,pc = base+0x41414141)。从受控跳转往后的步骤以及 RCE 实现均予以保密,不包含在本仓库中。

真实环境利用 vs. 原始 PoC

我的利用方式与原始报告者的方法有一个关键区别。 原始利用通过修改 GPU 进程中的 PartitionAlloc 源代码来禁用地址随机化。这种方法仅适用于概念验证目的。 相比之下,我的利用结合了一个信息泄露漏洞来绕过地址随机化,从而实现了一个在真实环境中可用的完整功能利用。

构建参数 args.gn

# Set build arguments here. See `gn help buildargs`.
is_official_build = true
is_debug = false
symbol_level = 0
v8_symbol_level = 0
blink_symbol_level = 0
is_component_build = false  
proprietary_codecs = true   
ffmpeg_branding = "Chrome"  
dcheck_always_on =false
optimize_webui = true
android_static_analysis = "off"
target_os = "android"
target_cpu = "arm64"

# Disable PartitionAllocEventuallyZeroFreedMemory
disable_fieldtrial_testing_config = true

treat_warnings_as_errors = false

复现步骤

  1. cd third_party/dawn
  2. git apply ApiProcs.cpp.patch
  3. git apply Device.cpp.patch
  4. cd ../skia
  5. git apply SkStrike.cpp.patch
  6. 构建 chromium
  7. 在 Android 设备上打开 Chrome 并执行 exploit.html
  8. 在 PC 上执行 adb logcat | grep DEBUG

注意事项

  1. 注意 PartitionAllocEventuallyZeroFreedMemory 陷阱。启用后,它最终会将已释放的内存清零。 该特性默认禁用。在官方 Stable 构建中,它由 Google 的 Finch(服务器端字段试验)控制,Google 通常不会对普通用户群体开启它。 然而,它在本地/非官方构建以及官方 Dev/Canary 渠道中经常被启用(尤其是在字段试验测试配置处于活动状态时)。这是针对非 Stable 构建开发或测试漏洞利用时常见的坑。
  2. 通过 127.0.0.1 回环地址访问 exploit.html。否则 HTTP 会被视为不可信,WebGPU 将无法工作
  3. 在此用例中,泄漏原语的堆布局在 Pixel 7 上表现尤为出色,仅需 1–10 秒。它在 Pixel 9 上也能成功,但过程需要 2–3 分钟。虽然可以进一步优化堆布局以在大多数 Pixel 设备上获得更广泛的兼容性——并且此类改进已被确定——但这些优化超出了本实验的范围,此处不予讨论。
下载工具