三角:为 iOS 开发确定性内核漏洞利用程序

主要观点:CVE-2023-32434 是 XNU 内核 VM 子系统的整数溢出漏洞,被用于 Operation Triangulation 间谍软件链,作者开发“Trigon”利用该漏洞实现全内核读写原语,文章重点介绍 A10(X)设备的利用情况,还提及其他版本和 SoC 的相关内容。
关键信息

  • 漏洞根源是 XNU 的 Mach 虚拟内存层整数溢出,可通过mach_make_memory_entry_64mach_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_tvm_map_entry等。
  • 展示了实验过程中的代码片段和相关结果,如读取内核指针导致内核恐慌等。
  • 提及不同版本和 SoC 在利用该漏洞时的特点和限制,如 iOS 12 可硬编码 PRAM 基址等。
阅读 8
0 条评论