点击上方“AI遇见机器学习”,选择“星标”公众号
重磅干货,第一时间送达
来自:机器之心 新漏洞突破了苹果 M1 芯片的最后一道安全线。
2020 年 11 月,苹果 M1 处理器正式发布,凭借其优越性能和低功耗表现一度引发轰动。
自两年前推出以来,还没有发生过针对 M1 芯片的严重攻击,这表明其安全系统运行总体良好,其中指针身份验证机制(Pointer Authentication Code,PAC)被称作「最后一道防线」。
在目前所有基于 Arm 的定制芯片上,苹果均部署了指针身份验证,包括 M1、M1 Pro 和 M1 Max。高通、三星在内的一些芯片制造商也宣布或希望推出支持硬件级别安全功能的新型处理器。
近日,来自 MIT CSAIL 的学者们重点介绍了一种可禁用苹果 M1 芯片指针身份验证机制的新型硬件攻击,名为「PACMAN」,这种攻击能够阻止 M1 芯片检测到软件漏洞攻击。
论文链接:http://pacmanattack.com/paper.pdf
该研究团队由 MIT 电气工程与计算机科学系助理教授 Mengjia Yan 领导,成员包括 Joseph Ravichandran、Weon Taek Na、Jay Lang。他们将在本月即将举行的计算机体系结构顶会 ISCA 2022 会议上重点介绍「PACMAN」。
Mengjia Yan
「PACMAN」能够削弱 PAC 防御能力的攻击模式,从而使得计算机操作系统变得易受攻击。由于 PAC 可能会集成到未来基于 64 位 Arm 架构构建的处理器中,因此该漏洞可能会变得更加普遍。团队表示,他们尚未对新发布的同样支持指针身份验证的 M2 芯片进行测试。
对于越来越多采用苹果设备的企业而言,这一漏洞值得重视。据调查,美国企业中约有 23% 的用户目前使用 Mac 设备。「如果不能缓解这种情况,我们的攻击将影响到大多数移动设备,甚至可能在未来几年影响到桌面设备。」论文中写道。
PACMAN 原理
现代计算机系统日趋复杂,往往会暴露出一些可能存在漏洞的攻击面。从软件层来说,内存损坏漏洞(例如缓冲区溢出)可以被攻击者利用来改变被攻击者程序的行为,或完全控制被攻击者程序。从硬件层来说,微架构边信道漏洞(例如 Spectre 和 Meltdown)可以被利用来泄漏被攻击者程序地址空间内的任意数据,目前,安全领域的研究者通常分别探索软件和硬件的缺陷,比如两种没有交集的攻击模型的两个漏洞。
而在 MIT 这项研究中,团队探索了内存损坏漏洞和微架构边信道漏洞之间的协同作用,展示了如何使用硬件攻击来协助软件攻击,以绕过强大的安全防御机制。
这个名为 「PACMAN」 的漏洞,会假设计算机上已经存在一个软件错误,可以读取和写入不同的内存地址。然后,它利用 M1 硬件架构的一个细节,赋予漏洞执行代码并可能接管操作系统的能力。
就是说,他们假设漏洞存在,然后将其变成更严重的漏洞。
这里需要先理解指针身份验证是什么,以及名为推测执行的处理器架构细节如何工作。
2017 年,ARM 在 ARMv8.3 中推出了指针身份验证,作为一项保护指针完整性的安全特性。具体来说,「指针身份验证」是一种防止软件攻击破坏那些包含内存地址或指针的数据的方法。例如,恶意代码可能会执行缓冲区溢出攻击,将比预期更多的数据写入内存的一部分,多余的数据会溢出到指针的地址并覆盖它。这可能意味着计算机软件不会执行存储在原始地址的代码,而是转移到存储在新地址的恶意软件。
指针身份验证将加密签名附加到指针的末尾。如果指针被恶意操作,签名将不再配对。通常,PAC 用于保护系统操作系统的核心,即内核。如果攻击者操纵内核指针,指针与其身份验证代码之间的不匹配将产生所谓的「异常」,系统将崩溃,从而结束恶意软件的攻击。恶意软件必须非常幸运才能猜到正确的代码,概率大约 65000 分之一。
PACMAN 找到了一种让恶意软件不断猜测的方法,而不会出现任何引发崩溃的错误猜测。关于它是如何做到这一点的,就涉及到现代计算的核心。
几十年来,计算机一直在使用所谓的推测执行来加速处理。在典型的程序中,下一条指令应该遵循哪条指令,通常取决于前一条指令的结果(想想 if/then)。但如今 CPU 不会等待答案,而是会推测接下来会发生什么,并开始按照这些思路执行指令:
如果 CPU 猜对了,这种推测性的执行会节省很多时钟周期;如果结果证明猜错了,所有的工作都被扔掉,处理器按照正确的指令序列重新开始。重要的是,错误的计算值永远不会对软件可见。没有任何程序可以简单地输出推测执行的结果。
然而,近年来研究人员找到了利用推测执行从 CPU 中偷数据等操作的方法。这被称为边信道攻击(side-channel attack),因为它们通过观察间接信号来获取数据,例如访问数据需要多长时间,Spectre 和 Meltdown 漏洞就是如此。
Yan 的团队想出了一种欺骗 CPU 在猜测指针验证码的方法,这样就不会出现异常,操作系统也不会崩溃。当然,答案仍然是软件看不到的,其中用数据填充特定缓冲区,并使用 timing 来发现成功的推测替换了哪个部分。
打开处理器安全新方向
在这项研究中,除了 PACMAN 攻击之外,研究者也在将微架构边通道攻击扩展到苹果处理器方面做出了重要的贡献。有两个重要的结果值得强调:首先,他们对 TLB 组织进行了逆向工程,在 Apple M1 处理器上使用 Speculative_execution ,对基于 TLB 的边通道进行首次攻击。其次,他们展示了 PACMAN 跨特权级别攻击的工作,这意味着攻击启用 PA 的操作系统内核是可行的。
关于 PACMAN,苹果的产品团队向 Yan 的小组提供了如下回复:「我们要感谢研究人员的帮助,因为这个概念验证促进了我们对技术的理解。根据我们的分析以及研究人员与我们分享的详细信息,我们得出结论:此问题不会对我们的用户构成直接风险,并且不足以自行绕过设备保护。
其他熟悉 PACMAN 的研究人员表示,它到底有多危险还有待观察。「但 PACMAN 让我们在设计新的安全解决方案时多了一份担忧和考量」,加州大学河滨分校计算机工程系主任、架构安全专家 Nael Abu-Ghazaleh 说道。近年来,处理器制造商一直在为其设计添加指针身份验证以外的其他安全解决方案。他怀疑:既然 PACMAN 已经被披露,一些研究将开始寻找针对这些新型解决方案的投机攻击。
Yan 的团队探索了一些 PACMAN 的简单解决方案,但往往会增加处理器的整体漏洞。但 Abu-Ghazaleh 认为 Yan 的团队打开了通往处理器安全新方向的大门。
诚如 Yan 所说:「以前人们认为软件攻击是独立的,与硬件攻击是分开的。而我们正试图研究两种威胁模型之间的交叉点。在这种新的复合威胁模型下,还有许多未充分研究的缓解机制,我们将 PACMAN 攻击视为起点。」