“三角测量行动”攻击链以下是这次 0-click iMessage 攻击的简要概述,该攻击使用了四个零日漏洞,旨在在 iOS 16.2 及以下版本的 iOS 上运行。
攻击者发送恶意的 iMessage 附件,应用程序会对其进行处理,但不会向用户显示任何迹象。
此附件利用了Apple 独有的 ADJUST TrueType 字体指令中存在的远程代码执行漏洞
CVE-2023-41990 。该指令自 20 世纪 90 年代初就已存在,直到一个补丁将其移除。它使用面向返回/跳转的编程和用 NSExpression/NSPredicate 查询语言编写的多个阶段,修补 JavaScriptCore 库环境以执行用 JavaScript 编写的权限提升漏洞。
这个 JavaScript 漏洞经过混淆处理,使其完全不可读,并最小化了其大小。尽管如此,它仍然有大约 11,000 行代码,主要用于 JavaScriptCore 和内核内存的解析和操作。
它利用 JavaScriptCore 调试功能 DollarVM ($vm) 获得从脚本操纵 JavaScriptCore 内存并执行本机 API 函数的能力。
它旨在支持新旧 iPhone,并包含指针认证码 (PAC) 绕过功能,以便利用最新型号。
它利用 XNU 内存映射系统调用(mach_make_memory_entry 和 vm_map)中的整数溢出漏洞
CVE-2023-32434在用户级别获取对设备整个物理内存的读/写访问权限。
它使用硬件内存映射 I/O (MMIO) 寄存器来绕过页面保护层 (PPL)。此漏洞已得到缓解,编号为
CVE-2023-38606。
利用所有漏洞后,JavaScript 漏洞可以对设备执行任何操作,包括运行间谍软件,但攻击者选择:(a)启动 IMAgent 进程并注入有效负载,以清除设备中的漏洞利用痕迹;(b)以隐身模式运行 Safari 进程并将其转发到具有下一阶段的网页。
该网页有一个脚本,用于验证受害者,如果检查通过,则进入下一阶段:Safari 漏洞。
Safari 漏洞利用
CVE-2023-32435来执行 shellcode。
该shellcode以Mach目标文件的形式执行另一个内核漏洞利用程序。它利用了相同的漏洞:
CVE-2023-32434和
CVE-2023-38606。它在大小和功能方面也非常庞大,但与用JavaScript编写的内核漏洞利用程序完全不同。两者的共同点在于某些与上述漏洞利用相关的部分。尽管如此,它的大部分代码也用于解析和操作内核内存。它包含各种后利用实用程序,但这些实用程序大多未被使用。
该漏洞利用程序会获取 root 权限,并继续执行其他阶段,最终加载间谍软件。我们在之前的
文章中介绍过这些阶段。
我们几乎完成了对该攻击链各个方面的逆向工程,明年我们将发布一系列文章,详细介绍每个漏洞及其利用方式。
https://securelist.com/operation-triangulation-the-last-hardware-mystery/111669/