programmens/iOS-kernel-UAF
GitHub: programmens/iOS-kernel-UAF
iOS XNU 内核 UAF 漏洞研究框架,记录内存损坏原语分析方法,用于防御性安全研究和漏洞研究培训。
Stars: 16 | Forks: 0
# iOS 内核 UAF
本仓库记录了分析 iOS 上 XNU 内核中内存损坏原语的**方法**。
**⚠️ 本仓库未提供可执行的漏洞利用代码。** 这是一个用于防御性安全分析和漏洞研究培训的研究框架。

## 研究范围
此处的重点内容是:
- 识别 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, 内存分配器, 内存损坏, 内核漏洞分析, 堆喷射, 堆风水, 安全培训, 情报收集, 指针验证, 漏洞研究, 竞态条件, 跨区域重用, 释放后重用, 防御性分析