三角学:利用协处理器以获取乐趣和利润(第 2 部分)

这是一篇关于 Trigon 内核漏洞利用的博客文章,主要内容总结如下:

  • 背景与进展:几个月前发布了确定性的 Trigon 内核漏洞利用,最初仅支持 iOS 13 - 15 的 A10 设备,之后实现了对 A9(X)和 A11 设备的支持,本文将深入探讨支持新设备所采用的技术。
  • KTRR(Kernel Text Read-only Region):A10 芯片引入的缓解措施,是一种硬件强制的内核代码完整性机制,在 MMU 和 AMCC 两级实施保护,防止对受保护区域的写入和指令获取,A7 - A9 设备有软件等效的 KPP,A12+设备有 CTRR。
  • IORVBAR(IO Reset Vector Base Address Register):用于确定受保护内核区域的起始和结束地址,在 A10 上效果很好,但在 A11 上会遇到页表问题,在 A7 - A9 设备上也不适用,因为它指向 KPP 中的地址。
  • Always-On Processor(AOP):选择 AOP 作为目标协处理器,其固件基地址在 iboot-handoff 区域,通过分析其异常向量、函数等,确定了一些关键信息,如系统寄存器 TTBR0 和 TTBR1 的地址及映射情况。
  • 映射 DRAM:成功将 AOP 固件的第一页映射到可读写的物理内存,确认 AOP 可以读写常规 DRAM,为后续操作奠定基础。
  • 代码执行:在 AOP 固件中挂钩目标函数,实现了基于 AOP 的物理读取原语,之后 staturnz 改进了该策略,使其具备完整的读和写原语,并找到了更好的挂钩方式和信息结构,最终用于查找内核基地址。
  • A7 和 A8(X)设备:剩余的 arm64 SoCs A7 和 A8(X)未被利用,它们有其他协处理器,但方式与 AOP 不同,虽尝试过但遇到问题,未来可能会添加支持。
  • 结论:利用协处理器进行内核漏洞利用是一种疯狂的策略,此前已有案例,感谢 staturnz 的工作,后续可能会有更多关于 arm64e 利用的内容,如有问题可通过邮件咨询。
阅读 14
0 条评论