G.O.S.S.I.P 阅读推荐 2023-08-17 揭秘Apple M1上的Pointer Authentication

今天为大家推荐的论文是来自浙大网安投稿的关于苹果安全的最新研究成果Demystifying Pointer Authentication on Apple M1,该工作同时被USENIX Security 2023与Black Hat 2023录用。

研究背景

ARMv8.3规范引入了Pointer Authentication (PA)硬件特性来保护指针的完整性。2019年,Apple率先在iPhone XS(A12处理器)上实现了PA,并基于PA实现了内核控制流和敏感数据流完整性保护(Kernel Control/Data Flow Integrity)。该防御机制使得攻击者无法简单地通过内核内存漏洞劫持控制/敏感数据流,极大地提高了XNU内核(iOS和macOS的操作系统内核)的安全性。

自其被推出以来,许多安全研究人员(Google Project Zero,Team Pangu,Keen Team等等)对其进行了分析,但大多数分析都集中在其软件实现上(即XNU内核如何使用PA)。而在硬件实现部分,在PA被部署在Apple芯片后的过去5年中,只有Google Project Zero的Brandon Azad提到了PA的硬件实现。Brandon发现Apple芯片上实现的PA(Apple PA)的指令行为与ARM规范(ARM PA)存在巨大的差异,Brandon将这些定制称为“dark magic”。

Brandon发现,这些“dark magic”使得Apple PA可以硬件层面上抵御在不同Exception Level以及不同Key上的签名指针替换攻击(即Cross-EL,Cross-Key攻击),相反,ARM PA无法抵御这些攻击。虽然Brandon发现了Apple PA在硬件层面上实现了Cross-EL/Key攻击的防护,但是其实现(即Apple具体如何定制PA硬件)仍未被揭秘。这使得研究人员无法系统地分析部署在Apple芯片上的PA保护。因此,目前还没有研究工作能对Apple PA进行系统性地分析。本文作者发现定制后的Apple PA同样被部署到了Apple M1上,因此,为了弥补这一研究缺口,本工作对Apple M1上的PA软硬件实现进行了系统性分析。该论文的贡献主要包括:

  • 对Apple M1上的PA软硬件实现进行了深入地逆向工程分析。本工作基于m1n1 hypervisor(由AsahiLinux团队开发,一个可以运行在Apple M1芯片上的开源hypervisor)实现了一个针对Apple PA的逆向工程框架。

  • 本工作形式化定义了四类Cross-domain攻击,包含Cross-EL,Cross-Key,Cross-VM和Cross-Boot攻击。

  • 针对PA硬件实现,本工作揭示了Apple引入了key transformation和多种diversifier来防护四类Cross-domain攻击。

  • 针对PA软件实现,本工作结合PA硬件实现的发现,揭示了此前未被披露的签名接口设计和密钥管理策略。

  • 同时,本工作对Apple M1上的PA保护进行了系统性的安全性分析,在最新的XNU内核中,识别并验证了四个针对XNU内核PA保护的攻击面。针对这些发现,Apple发布了安全更新进行修复,分配了CVE,并将在最新的安全更新公告中对本工作进行公开致谢。


逆向框架

本工作基于m1n1 hypervisor搭建了针对Apple PA的逆向工程框架。为了对Apple PA软硬件进行深入的逆向工程,本工作总结了该逆向工程框架需要解决的挑战以及需要实现的四种能力,包括: 

  • 识别Apple定制的PA相关系统寄存器:Apple引入了大量定制化的系统寄存器,然而Apple并没有公开这些系统寄存器的相关信息。 

  • 绕过Apple定制的PA密钥保护:本工作发现Apple在M1芯片上实现了硬件级别的PA密钥保护,这一保护是逆向Apple PA硬件实现的最大阻碍。为了绕过这一保护,本工作利用M1芯片上的一个硬件虚拟化支持 - 系统寄存器重定向(System Register Redirection)- 绕过了Apple的PA密钥保护机制,成功读写Apple M1芯片上的PA密钥,为逆向工程提供了基础能力。

  • 剖析PA指令的指令行为:Apple对PA指令行为进行了大量定制,为了剖析这些定制化的指令行为,梳理PA指令与寄存器之间的交互。本工作结合前两种能力和单变量原则,提出了一种系统化分析PA指令的方法,最终基于该方法成功逆向出Apple M1芯片上的PA指令行为。 

  • 对XNU内核进行动态调试:在逆向PA的软件实现以及对XNU内核的PA保护进行安全性分析时,需要在内核启动阶段对XNU内核进行主动调试(active debugging)。然而,现有的调试器无法支持该能力,一是Apple为Apple Silicon提供的kernel debugger(LLDB)不支持主动调试,同时该调试器依赖于XNU内核中的一个daemon process,因此无法对XNU内核的启动阶段进行调试。本工作基于hypervisor实现了动态调试,基于该能力对Apple PA进行了逆向和安全性分析。 


Apple PA的硬件实现

在硬件部分,本工作成功逆向出了Apple PA的硬件架构。

1) 在寄存器Controllability, PAC算法方面,本工作发现Apple 引入了新的PA控制寄存器和定制化的PAC算法。

2) 在防护Cross-domain攻击方面,本工作揭示了Apple引入了大量的基于硬件的安全机制来提升PA安全性。

    -针对Cross-VM攻击:Apple引入了per-VM diversifier (VMDIV)来区分虚拟机和宿主机的密钥转换结果。

    -针对Cross-Key攻击,Apple引入了per-key-type salt来区分不同密钥的密钥转换过程。

    -针对Cross-Boot攻击,Apple引入了per-boot diversifier来区分不同启动轮次的密钥转换结果。

    -针对Cross-EL攻击,本工作发现Apple引入了新的密钥EXTRAKEY,该密钥的作用是与PA密钥进行异或,异或结果作为真实的PA密钥值进行PAC计算。XNU内核只在用户态启用该密钥,因此用户态与内核态的PAC密钥计算结果是不同的。

XNU内核的PA保护

在软件部分,本工作通过分析XNU内核中所有的PA指令,发现了此前未被公开的PA软件实现,包括签名接口设计以及密钥管理策略。

针对签名接口设计,本工作结合静态分析和动态分析,提取了XNU内核中所有PA指令的操作数,并基于收集的数据对XNU内核中的签名接口设计进行了系统性分析。结果显示,在最新的XNU内核中,不同于Apple的公开文档,Apple还引入了多种生成modifier的策略。例如modifier的种类,Apple只在官方文档中公布了5种,而实际上在最新的XNU内核中实现了9种modifier。

针对密钥管理,本工作对内核镜像进行二进制分析,同时结合Apple PA硬件相关的发现,梳理出了XNU内核中完整的密钥管理策略。结果显示Apple基于定制化的PA硬件实现了细粒度的PA密钥管理。

安全性分析


最后,本工作结合PA软硬件实现的逆向分析结果,对Apple M1芯片上的PA-based Kernel CFI/DFI进行了系统性的安全性分析。在最新的XNU内核中,本工作识别并验证了四种可绕过PA保护的攻击面:

  • 不完整的敏感数据识别。对于PA-based CFI/DFI,敏感数据指会影响控制流和数据流的数据,包括指针,或偏移。本工作发现在最新的XNU内核中仍然存在大量未被保护的敏感数据。攻击者可以通过修改这些数据劫持XNU内核的CFI/DFI。值得注意的是,本工作揭示了数据流传播的问题,针对最新XNU内核中的PA-based DFI,由于数据传播的原因,有大量的敏感数据指针仍未被保护。

  • 不完整的中断上下文保护。在中断发生时,敏感数据可能会被暂存到内存中,但是由于Apple并没有对中断上下文进行完整地保护,同时本工作发现有大量的敏感数据会在中断开启时传播进一些寄存器中,而这些寄存器并未在中断上下文中被保护。

  • 签名片段。攻击者可以借助签名片段伪造签名目标。本工作发现签名片段的能力在于签名接口是否被多个签名目标共享。本工作在最新的XNU内核中,识别并验证了一个签名片段相关的漏洞,该漏洞可导致攻击者可以绕过XNU内核PA保护,实现任意内核函数调用。Apple为该漏洞分配了一个CVE编号(CVE-2023-32424)。

  • 密钥管理。Apple实现了进程相关的密钥管理策略,以实现进程相关的PA保护。本工作发现用于设置密钥的密钥值被直接保存在内存中(没有加密),因此攻击者可以通过篡改密钥的方式,绕过进程相关的PA保护,实现跨进程的指针替换攻击。本工作验证了88个可用于绕过PA保护的例子,并将这些发现报告给了Apple,促使Apple发布安全更新修复这些问题。Apple为其中一个漏洞分配了CVE编号(CVE-2023-32424)并针对这些发现将在最新的安全公告中进行公开致谢。


总结 

在使用PA保护操作系统内核时,如何抵御Cross-domain Attack十分关键,ARM PA无法有效地抵御这些攻击。在过去,除了Apple以外的ARM CPU厂商没有考虑到ARM PA的缺陷,使得基于ARM PA的内核安全机制的实现较为受限,无法像Apple PA保护一样有效。如今,该工作揭示了Apple PA的软硬件设计,为其他ARM CPU厂商以及ARM提供了优化PA的思路(有望打破Apple在PA这一领域的垄断地位)。同时,该工作还指出了目前Apple PA保护的缺陷,这些发现得到了Apple的确认,为如何实现PA保护提供了重要参考。



论文地址:https://www.usenix.org/system/files/usenixsecurity23-cai-zechao.pdf
BlackHat:

https://www.blackhat.com/us-23/briefings/schedule/index.html#apple-pac-four-years-later-reverse-engineering-the-customized-pointer-authentication-hardware-implementation-on-apple-m-32824

作者信息:

蔡泽超(https://zech4o.github.io),浙江大学网安学院硕士研究生,导师为申文博老师。研究方向为操作系统安全,逆向工程和虚拟化技术。

申文博(https://person.zju.edu.cn/shenwenbo ),浙江大学 百人计划研究员,博士生导师。研究方向为操作系统安全,云原生系统安全,软件供应链安全。在计算机安全、系统、网络国际顶级会议、期刊发表论文30余篇,获得3项杰出论文奖 (NDSS 2016, AsiaCCS 2017, ACSAC 2022)。






免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。查看原文

为您推荐