programmens/iOS-kernel-UAF

GitHub: programmens/iOS-kernel-UAF

iOS XNU 内核 UAF 漏洞研究框架,记录内存损坏原语分析方法,用于防御性安全研究和漏洞研究培训。

Stars: 16 | Forks: 0

# iOS 内核 UAF 本仓库记录了分析 iOS 上 XNU 内核中内存损坏原语的**方法**。 **⚠️ 本仓库未提供可执行的漏洞利用代码。** 这是一个用于防御性安全分析和漏洞研究培训的研究框架。 ![](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/c56860cd52163233.png) ## 研究范围 此处的重点内容是: - 识别 Mach 消息中的释放后重用(UAF)条件 - 内存分配器行为分析(kalloc、zalloc) - 用户态与内核线程之间的竞态条件 - 释放后重用模式检测 本仓库中的任何内容均不旨在用于主动攻击。所有方法仅用于**教育性防御研究**和**补丁验证**。 ## 为什么这很重要 大多数公开研究侧重于*结果*(可用的漏洞利用程序)。本仓库侧重于*过程*——导致发现的思维模式、边缘情况探索以及分配器行为映射。 对于防御者而言,了解攻击者***如何***思考,比获得一个预先写好的漏洞利用程序更有价值。 ## 核心研究领域 ### 1. Mach Port 生命周期分析 方法:识别在内核维护过时引用的同时从用户态进行操作的 port。`mach_port_destroy()` 与内核清理例程之间的时间差比文档中描述的更大。 ### 2. 内存分配器熵降 方法:通过堆喷射使已释放的内存区域变得可预测。在特定的分配/释放模式下,XNU zone 分配器具有确定性的行为。 ### 3. 竞态窗口扩大 方法:通过线程操作增加释放与重用之间的时间窗口。通过优先级反转和 CPU 核心绑定来控制调度器。 ### 4. 指针验证绕过 方法:PAC(指针身份验证)在特定的签名 schema 上运行。使用可预测上下文值的盲目签名仍然可行。 ## 方法论 | 技术 | 难度 | 描述 | |-----------|------------|-------------| | 跨 zone 重用 | 极高 | 强制将来自不同 zone 的分配放入另一个 zone 已释放的内存中 | | 熵耗尽 | 高 | 通过重复分配来抵消 KASLR 的随机性 | | 调度器投毒 | 中 | 操纵运行队列以控制哪个线程重用已释放的内存 | | 双重释放交错 | 极高 | 对同一内存进行两次独立的释放,并在其间插入受控操作 | ## 受影响的版本 基于公开的错误报告和差异分析: | iOS 版本 | 状态 | |-------------|--------| | 16.x - 17.4.1 | 存在 UAF 候选 | | 26.4+ | 存在 UAF 候选 | ## 仓库结构 ├── methods/ # 研究笔记 ├── allocator/ # Zone 分配器行为 ├── poc/ # PoC 结构 └── offsets/ # 版本偏移 ## 社区 加入我们的安全研究组:[t.me/iospentest](https://t.me/iospentest) *研究归档。*
标签:CPU核心绑定, Go语言工具, iOS安全, kalloc, Mach消息, Mach端口生命周期, PAC绕过, UAF漏洞, Web报告查看器, XNU内核, zalloc, 内存分配器, 内存损坏, 内核漏洞分析, 堆喷射, 堆风水, 安全培训, 情报收集, 指针验证, 漏洞研究, 竞态条件, 跨区域重用, 释放后重用, 防御性分析