世界上最复杂的iPhone攻击链之卡巴斯基三角测量
典中典之期末复习专业课× 更新博客√
今年六月份,卡巴斯基公司员工的iphone遭到了一场匪夷所思的入侵,其复杂程度被经验丰富的安全公司评价为“前所未有”的程度。
苹果公司第一时间进行了hot fix,然而具体的技术细节直到12月27日的第37届混沌通信大会上才得到披露。值得一提的是,这也是卡巴斯基第一次公开披露攻击中使用的所有漏洞和漏洞的详细信息。而即便是到了六个月后的今天,卡巴斯基依然认为这场攻击存在着种种谜团。
文章中,我们将介绍这个不知名黑客团队使用的复杂方法:设计用于iOS 16.2及更高版本iOS版本的四个0day漏洞,0click过程,iMessage漏洞利用...安全公司的员工是如何悄无声息的中招了?我们接着往下看
攻击链
·攻击者发送恶意iMessage附件,此时,应用程序会在不向用户显示任何迹象的情况下处理该附件
·此附件利用了先前未被记录,Apple公司独有的 ADJUST TrueType 字体指令中的远程代码执行漏洞CVE-2023-41990。该指令自九十年代初就已存在,后来被补丁删除。
·它使用面向返回/跳转的编程和用 NSExpression/NSPredicate 查询语言编写的多个阶段,修补 JavaScriptCore 库环境以执行用 JavaScript 编写的权限升级漏洞。(利用JavaScriptCore提权)
·之后,这个 JavaScript 漏洞被混淆,使其完全不可读并最小化其大小。尽管如此,它仍然有大约 11,000 行代码,主要用于 JavaScriptCore 和内核内存解析和操作。
·它利用 JavaScriptCore 调试功能 DollarVM ($vm) 来获得从脚本操作 JavaScriptCore 内存并执行本机 API 函数的能力。
·针对新iphone的安全策略,黑客实现了指针身份验证代码 (PAC) 绕过功能使得这一方法在新旧iphone上都可实现。
·利用XNU 内存映射系统调用(mach_make_memory_entry 和 vm_map)中的整数溢出漏洞(CVE-2023-32434)来获取用户级别对设备整个物理内存的读/写访问权限。
·它使用硬件内存映射 I/O (MMIO) 寄存器来绕过页面保护层 (PPL)。此问题已通过CVE-2023-38606得到缓解。
·利用所有漏洞后,JavaScript 漏洞可以对设备执行任何操作,包括运行间谍软件,但攻击者选择: (a) 启动 IMAgent 进程并注入有效负载,以清除设备中的漏洞利用痕迹;(b) 以不可见模式运行 Safari 进程,并将其转发到下一阶段的网页。(大佬的余裕...单说可以对设备执行任意操作的js漏洞也足够逆天了)
·b步骤跳转的网页有一个脚本来验证受害者,如果检查通过,则接收下一阶段:Safari 漏洞利用。
·Safari 漏洞利用CVE-2023-32435来执行 shellcode。
·shellcode 以 Mach 目标文件的形式执行另一个内核漏洞利用。它使用相同的漏洞:CVE-2023-32434,即前面利用过的整数溢出漏洞和CVE-2023-38606,先前的硬件内存映射寄存器漏洞。它的大小和功能也很大,但与用 JavaScript 编写的内核漏洞完全不同。与利用上述漏洞相关的某些部分是两者共有的。尽管如此,它的大部分代码也致力于解析和操作内核内存。它包含各种后期利用实用程序,但大部分未使用。
·该漏洞利用获得root权限并继续执行其他阶段,加载间谍软件。
这不是一般的黑客了,必须要出重拳
当我们介绍CVE-2023-38606时,我们使用的是“已被缓解”的词汇,因为卡巴斯基似乎依然不知道黑客的逆向思路
苹果公司为最新的 iPhone 型号针对内核内存的敏感区域提供了额外的基于硬件的安全保护。如果攻击者可以读取和写入内核内存,则此保护可防止攻击者获得对设备的完全控制(正如本次攻击中通过利用CVE-2023-32434实现的那样)。
但是,有趣的是,黑客为了绕过这种基于硬件的安全保护,使用了 Apple 设计SoC的另一个硬件功能。
恐怖的是,这个SoC级别的漏洞,据推测很可能是苹果工程师或工厂用于调试或测试目的,或者是被错误地包含在内的漏洞,黑客是怎么知道的?又是怎么利用的?
这就很值得商榷了——瞎猫碰上死耗子?天底下哪有那么巧的事?
这不是普通的漏洞,目前的探索活动仍然遗留许多未解答的问题:攻击者是如何学会使用这种未知的硬件功能的?最初的目的是什么?这b功能是 Apple 开发的还是像 ARM CoreSight 这样的第三方组件?不过,正如这一漏洞的精彩表演所展示的,只要存在可以绕过这些保护的硬件功能,那么基于硬件的高级保护对于老练的攻击者来说脆的跟纸一样。
硬件安全通常依赖于“默默无闻的漏洞”,因为逆向工程比软件困难得多。但这是一种有缺陷的方法,因为黑客可以在漫长的时间中盲人摸象,终有一天,这个系统的所有秘密都会被泄露,更何况是apple这种无数双眼睛盯着的大型客机公司?原文作者表明,依赖“默默无闻的漏洞”的系统永远不可能真正安全。
后记
关于本文中提到0day漏洞精彩的技术原理,欢迎您移步三角测量行动:最后的(硬件)谜团查阅
还有,网友AGRONYMOUS COWARD在评论区表示,“根据 Anandtech 的说法,最早受影响的 GPU 是 A12,因为这是第一个‘真正的’Apple 设计的 GPU:The Apple A12 - First Commercial 7nm Silicon - The iPhone XS & XS Max Review: Unveiling the Silicon Secrets”。这一发言针对于卡巴斯基公司在原文中客气的说法:“这个芯片级别的漏洞可能来自于Apple或是ARM CoreSight 这样的第三方组件”。科技公司在自己的产品里面留点小后门似乎是不太新鲜的做法,但这个事情被拿上台面,甚至被不知道从哪来的黑客恶意利用——这就是另外一件事了。
网友WES在评论区提问,此漏洞是否会影响在锁定模式下运行的手机?我个人认为,其核心在于iphone锁定后台时的iMessage存活策略。尽管关于这部分的技术细节并未给出,但是,因为iMessage是较为基础的系统组件,认为这一应用在锁屏时保活也是十分合理的——你总不希望自己锁屏的时候收不到短信不是?根据一般经验而言,而锁屏又往往难以禁止系统内核、运行库之类的基本功能,其原因依然是为通知等应用保活。于是我们可以在不负责任的情况下得到令人不安的可能:此漏洞大致会影响在锁定模式下运行的手机。
不过,值得庆幸的是,对于这条攻击链而言,更新补丁的iPhone设备从第二步开始就已得到了较为全面的安全修复。未来又会如何呢?我们不得而知。