主要观点:CVE-2023-32434 是 XNU 内核 VM 子系统的整数溢出漏洞,被用于 Operation Triangulation 间谍软件链,作者开发“Trigon”利用该漏洞实现全内核读写原语,文章重点介绍 A10(X)设备的利用情况,还提及其他版本和 SoC 的相关内容。
关键信息:
- 漏洞根源是 XNU 的 Mach 虚拟内存层整数溢出,可通过
mach_make_memory_entry_64
和mach_vm_map
触发。 - 利用 PurpleGfxMem 可访问大量内存并映射内核内存,发现普通内存入口有内部标志会触发恐慌,而 PurpleGfxMem 无此标志。
- 可动态找到映射基址,通过解析 iboot-handoff 获得物理地址信息,A10(X)可通过读取特殊硬件寄存器找到 KTRR 区域进而确定内核基址,A11 存在“unexpected PV head”恐慌,非 KTRR 设备难以确定内核基址。
- 面临页面表恐慌,无法直接通过页面表转换虚拟内核地址为物理地址,可利用
pv_head_table
确定物理页是否为页面表,通过 IOSurface 策略实现内核读写原语,在 iOS 13 及以下可构建 tfp0 端口。arm64e 因多种原因不支持该漏洞利用。
重要细节: - 漏洞在 iOS 16.5.1 被修复,felix-pb 同时发现并利用该漏洞作为 Smith PUAF。
- 介绍了漏洞利用过程中的各种函数调用和数据结构,如
vm_map_t
、vm_map_entry
等。 - 展示了实验过程中的代码片段和相关结果,如读取内核指针导致内核恐慌等。
- 提及不同版本和 SoC 在利用该漏洞时的特点和限制,如 iOS 12 可硬编码 PRAM 基址等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。