联系电话 400-123-4657
  • 栏目幻灯二
  • 栏目幻灯一
  • 最新公告:
    诚信为本,澳门·威尼斯人(中国)官方网站市场在变,诚信永远不变...
    新闻动态 NEWS 当前位置: 澳门威尼斯人首页 > 新闻动态
    澳门威尼斯人官方官网苹果最复杂攻击链细节披露:历时 4 年一条 iMessage添加时间:2024-01-01

      澳门威尼斯人官方官网苹果最复杂攻击链细节披露:历时 4 年一条 iMessage 窃走所有隐私数据【新智元导读】iPhone 曝出「史上最复杂」硬件级别漏洞!黑客只需一条 iMessage 即可拿到所有敏感数据澳门威尼斯人官方,而用户不会有任何察觉。整个漏洞涉及的链条极其复杂,让 Karpathy 都惊呼:不是普通人能干出来的事。

      最近,卡巴斯基的研究人员发现,有黑客在四年多的时间里给数千部 iPhone 留下了一个非常隐蔽的后门。

      通过这个硬件级别的后门,能直接获得 iPhone 最高级别的 Root 权限。而要成功利用这个后门,必须要对苹果产品最底层的机制有非常全面细致的了解。

      以至于发现这个漏洞的卡巴斯基研究人员称「无法想象这个漏洞是如何被意外发现的。」在他看来,除了苹果和 ARM 之外,几乎不可能有人能获知这个漏洞。

      而间谍软件可以通过这个复杂的漏洞,将麦克风录音、照片、地理位置和其他敏感数据传输到攻击者控制的服务器。

      尽管重新启动就能关闭这个漏洞,但攻击者只需在设备重新启动后向设备发送新的恶意 iMessage 文本,就能重新开启这个漏洞。

      对此,OpenAI 科学家 Andrej Karpathy 表示:这无疑是我们迄今为止所见过的攻击链中最为复杂的一个。

      而一位声称自己还用 Palm 手机的网友回复道:「我坚持用 Palm 手机的意义就在这里。」

      甚至还有网友感叹:「如果你成功地惹恼了具备这种技术能力和资源的人,可能你最不需要担心的就是自己手机里的数据了。」

      - 攻击者通过 iMessage 发送一个恶意附件,应用程序会在用户毫无察觉的情况下开启这个漏洞。

      - 该附件利用了一个远程代码执行的漏洞(CVE-2023-41990),该漏洞存在于一个只有苹果公司知道的、未公开的 ADJUST TrueType 字体指令中。这个指令自九十年代初就存在,直到最近一个更新才被移除。

      - 攻击过程中,它采用了一种称为「返回 / 跳转导向编程」的高级编程技巧,并且使用了多个阶段的代码,这些代码是用 NSExpression/NSPredicate 查询语言编写的,它们修改 JavaScriptCore 库的环境,以执行一个用 JavaScript 编写的权限提升的漏洞攻击程序。

      - 这个 JavaScript 漏洞攻击程序经过特殊处理,使其变得几乎无法读懂,同时也尽可能地缩小了它的体积。然而,它仍然包含大约 11000 行代码。这些代码主要用于分析和操纵 JavaScriptCore 和内核内存。

      - 这个攻击工具被设计成兼容新旧型号的 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 漏洞。

      - 这个 shellcode 进一步执行另一个内核级漏洞,同样利用 CVE-2023-32434 和 CVE-2023-38606。它在规模和功能上都非常庞大,但与 JavaScript 编写的内核漏洞截然不同。它们共享的只是与上述漏洞利用相关的部分代码。然而,其大部分代码也专注于解析和操控内核内存。

      新一代 iPhone 在硬件层面增加了额外的安全防护措施,专门用来保护内核内存中的敏感区域。

      即使攻击者能够读写内核内存,比如利用 CVE-2023-32434 漏洞实施的这次攻击,这种防护也能阻止他们完全控制设备。

      研究人员发现,攻击者为了规避这种硬件防护,竟然利用了苹果自家设计的 SoC 中的另一项硬件功能。

      简单来说,攻击者的手法是这样的:他们在绕过硬件防护的同时,将数据、目标地址和数据的哈希值一并写入到芯片中未被固件使用的某些未知硬件寄存器,以此来对特定的物理地址进行数据写入。

      研究人员推测,这个不为人知的硬件功能很可能是为了苹果工程师或工厂的调试或测试而设计的,或者是意外包含在内的。由于固件并未使用这一功能,研究人员对于攻击者是如何知晓并利用这一功能的方式一无所知。

      在系统级芯片(System on a Chip, SoC)中,各种外设可能会提供特殊的硬件寄存器,以供中央处理器(CPU)使用,从而控制这些外设。

      为了实现这一点,这些硬件寄存器被映射到 CPU 可以访问的内存中澳门威尼斯人官方,这种方式被称为「内存映射输入 / 输出 ( Memory-Mapped I/O, MMIO ) 」。

      苹果的产品,如 iPhone、Mac 以及其他设备中,外围设备的 MMIO 地址范围被存储在一个特殊的文件格式中,名为「设备树(DeviceTree)」。

      这些设备树文件可以从固件中提取,并且可以使用 dt(DeviceTree)工具来查看它们的内容。

      深入研究「三角行动」(Operation Triangulation)攻击中使用的漏洞时,研究人员意外发现,攻击者为了绕过硬件级别的内核内存保护所使用的大部分 MMIO 地址,并没有在设备树中定义。

      这激发了研究人员的好奇心,进行了一系列的尝试。翻遍了各种设备的设备树文件和固件文件,但都没找到任何线索。

      这让研究人员困惑不已,这些被攻击者利用的 MMIO 地址,为什么不在固件中使用呢?攻击者是怎么发现这些地址的?这些 MMIO 地址到底属于哪些外围设备?

      之后研究人员决定去查看一下这些未知 MMIO 块附近是否有其他已知的 MMIO 地址。这次,他终于找到了一些有价值的信息。

      研究人员发现,这些地址大部分位于两个 gfx-asc 内存区域的中间,而剩余的一个地址则靠近第一个 gfx-asc 区域的起始位置。

      这暗示了所有这些内存映射输入输出(MMIO)寄存器很有可能是属于图形处理单元(GPU)的协处理器!

      在初始化过程中,漏洞首先会写入一些位于每个 SoC 特定地址的内存映射输入输出(MMIO)寄存器。

      这样,研究人员就确认了所有这些未知的 MMIO 寄存器,它们是被用来进行漏洞利用的,确实属于 GPU 的协处理器。

      这促使研究人员更深入地研究这个固件,这些固件也是用 ARM 架构编写且未加密的,但是他在固件中并没有找到任何与这些寄存器相关的信息。

      他决定更仔细地研究这个漏洞是如何操纵这些未知的 MMIO 寄存器的。在所有寄存器中,0x206040000 特别引人注目,因为它位于一个与其他所有寄存器都不同的独立 MMIO 块中。

      它仅在漏洞的初始化和结束阶段被操作:在初始化过程中是第一个被设置的寄存器,在结束阶段是最后一个。

      根据研究人员的经验,很明显这个寄存器不是用来启用 / 禁用漏洞所利用的硬件功能,就是用来中断控制。

      研究人员开始追踪中断的线索,不久之后,他不仅识别出了这个未知的寄存器 0x206040000,还发现了地址范围 0x206000000 – 0x206050000 究竟映射了什么。下面展示的是研究人员能够识别出的漏洞代码的逆向工程结果。

      源代码显示,存在四个与 CoreSight 相关的 MMIO 区域澳门威尼斯人官方,它们分别是 ED、CTI、PMU 和 UTT。每个区域占据 0x10000 字节,且彼此紧邻。

      ml_dbgwrap_halt_cpu 函数利用了 UTT 区域。与其他三个区域不同,UTT 并非来自 ARM,而是苹果专门为了便利性添加的专有特性。

      主 CPU 的每个核心都有自己的 CoreSight MMIO 调试寄存器区块,但不同于 GPU 协处理器,它们的地址可以在设备树中找到。

      另一个有趣的发现是,漏洞的作者(们)知道如何利用苹果公司专有的 UTT 区域来重新启动 CPU,而这部分代码并不包含在 XNU 源代码中。可以合理推测,这一操作很可能是通过实验得出的。

      然而,通过实验是无法发现攻击者在第二个未知区域内对寄存器的操作的。研究人员不确定那里有哪些 MMIO 调试寄存器区块,如果这些寄存器并未被固件所用,攻击者是如何发现其用途的也是个谜。

      利用这项硬件特性,攻击者可以绕过页面保护层(Page Protection Layer, PPL),主要用途是修改页表条目。此外,它还能修改受保护的 __PPLDATA 段内的数据。尽管这个漏洞并未用于修改内核代码,但在研究人员进行的一次测试中,曾成功修改了内核的 __TEXT_EXEC 段内的一条指令,并引发了一个显示预期地址和值的「未定义内核指令」错误。

      这种情况只出现过一次,其他尝试都导致了 AMCC 错误的发生。关于那次成功的尝试,研究人员有一些思路,未来研究人员计划深入研究,因为他认为,将一个本用于攻击的漏洞转化为正面用途,比如在新款 iPhone 上启用内核调试功能,将会非常有意义。

      讨论了所有与 MMIO(Memory-Mapped I/O)寄存器相关的工作之后,现在来关注最后一个话题:哈希值的计算方法。具体的算法如下所示。

      如你所见,这是一种定制的算法,其哈希值的计算依赖于一个预先定义好的 sbox 表(sbox table)。他尝试在庞大的二进制文件库中搜寻它,但一无所获。

      你可能已经注意到,这个哈希并不特别安全,因为它只有 20 位(两次各计算 10 位),但只要没人知道如何计算和应用它,它就足够用了。这种做法最恰当的描述就是「隐晦式安全(security by obscurity)」。

      如果攻击者没有使用这个硬件特性,并且固件中没有任何关于如何使用它的指引,他们如何可能发现并利用它呢?

      研究人员又做了一个测试。他发现 Mac 内置的 M1 芯片也具备这一未知的硬件特性。接着,他利用了功能强大的 m1n1 工具进行了一次实验。

      该工具具备一个 trace_range 功能,可以追踪对指定 MMIO 寄存器范围的所有访问,用它来监测 0x206110000 到 0x206400000 内存范围的活动,但结果显示 macOS 并未使用这些寄存器。

      这次涉及到的 GPU 协处理器是最近才在苹果的 SoC 中首次出现的。研究人员怀疑这个硬件功能在之前的零售固件中有过任何用途。

      尽管如此,也不能排除它可能曾在某个特定固件更新或 XNU 源代码的发布中不小心泄露过,之后又被删除的可能性。

      研究人员原本希望通过 iOS 16.6 中对这个漏洞的修复,来探究第二个未知区域里隐藏了什么。最后确实找到了苹果是如何解决这个问题的,但他们故意将修复措施弄得难以理解。

      XNU 根据这里的信息来判断是否允许某些物理地址的映射。所有记录在案的条目都贴上了一个标签名,这些标签清楚地说明了这些内存范围的用途。

      可以看到,这个漏洞非比寻常,我们既不清楚攻击者如何学会利用这个未知的硬件特性,也不知道它最初是用来做什么的。

      甚至都不确定它是由苹果开发出来的,还是类似 ARM CoreSight 这样的第三方组件造成的。

      但漏洞说明了一个事实:只要存在能够绕过安全防护的硬件特征,那么无论多么先进的硬件安全措施,在精明的攻击者面前都会变得毫无用处。

      硬件安全常常依赖于「隐晦式安全」(security through obscurity),相较于软件来说,硬件更难逆向工程分析。

      但这种方法本身是存在缺陷的,因为所有的秘密终将有被揭露的一天。那些依赖于「隐晦式安全」来维护的系统,永远无法做到真正的安全。