苹果芯片被曝重大安全漏洞,或致密钥泄漏

芯东西(公众号:aichip001)编译 王傲翔编辑 程茜

芯东西3月24日消息,据美国科技媒体Ars Technica报道,研究人员在周四发表的论文中披露,苹果M系列芯片中存在一个新发现的安全漏洞。

这一漏洞允许攻击者在执行广泛使用的加密操作时从苹果Mac电脑中窃取密钥,从而访问用户的数据。

据了解,苹果无法在芯片上修复这一漏洞,需要开发者采用其他措施进行修复。然而几乎所有措施都会严重影响设备的性能。

对苹果修复该漏洞可能产生的影响,暂时不得而知。可以确定的是,当用户使用特定的加密操作时,设备性能会显著损失。

苹果公司拒绝对该研究置评。

一、源于硬件优化功能,DMP易受攻击

苹果M芯片中存在的这一安全漏洞是一种侧信道(side channel)攻击。当苹果芯片运行常用的加密协议时,侧信道允许端到端的密钥提取。由于这一漏洞存在于苹果芯片本身的微架构设计,因此它无法直接修补。

相反,苹果只能通过在第三方加密软件中建立防御措施来缓解这一问题,而这些加密软件在执行加密操作时会大幅降低M系列芯片的性能,特别是此前搭载M1和M2系列的苹果产品。当目标加密操作和恶意应用程序以普通用户系统权限在同一CPU集群上运行时,该漏洞就会被利用。

该漏洞源于苹果芯片的数据内存依赖预取器(data memory-dependent prefetcher, DMP)的硬件优化功能,DMP可以预测当前运行代码中最有可能访问的数据内存地址。

延迟是现代计算机中的一个常见瓶颈。在将所需要的实际内容加载到CPU缓存中时,DMP可以减少主内存和CPU之间的延迟。旧形式的预取器已使用多年,但DMP是一种较新的技术,仅在苹果M系列芯片和英特尔第13代Raptor Lake微架构中使用过。

安全专家很早就了解到,传统的预取器能够打开一个侧信道,恶意进程可以探测到这一信道,从而在加密操作系统中获取密钥信息。

由于预取器根据先前的访问模式进行预测信道,这可能导致侧信道的状态发生变化,攻击者则可以利用这些变化来泄露信息。

为了应对这种风险,密码工程师设计了常量时间编程(constant-time programming)。这种方法可以确保无论是怎样的操作量,所有操作都需要相同的时间来完成。它通过保持代码不受秘密依赖内存访问(secret-dependent memory accesses)或其他结构的限制来实现。

这项新研究的突破之处在于,它揭示了苹果芯片中DMP之前被忽视的一个特征,即DMP有时会错误地将密钥等敏感数据内容与内存地址指针混淆。其结果是,DMP经常读取数据并试图将数据理解为地址,从而执行内存访问的操作。这种内存地址指针的“解引用”( dereferencing)意味着数据可以被读取并通过侧信道泄露出去,这明显违反了常量时间操作。

在一封信件中,他们对DMP的行为作出解释:“预取器通常能够查看被访问数据的地址,并尝试猜测未来可能有用的地址,这一过程中预取器会忽略被访问数据的值。

DMP则不同,因为除了数据的地址外,DMP还能够使用数据的值进行预测。尤其是如果一个数据值‘看起来’像一个内存地址指针,它将被DMP视为一个数据的地址,并且该地址的数据将会被带到缓存中。地址数据到达缓存这一过程是可见的,数据信息从而通过缓存侧信道泄露出去。”

▲内存访问模式与DMP在访问数据地址的差别(图源:GoFetch: Breaking Constant-Time Cryptographic ImplementationsUsing Data Memory-Dependent Prefetchers)

研究人员以此对DMP进行攻击。虽然无法直接泄露密钥,但他们可以对加密算法内部的中间数据进行攻击,使数据值看起来像一个地址,并将该地址的数据放入缓存,从而泄露该地址。经过反复尝试,研究人员足以在一段时间内获取密钥。

在论文中,该研究团队对获取密钥这一过程的解释稍有不同,认为研究的关键见解是,虽然DMP只“解引用”指针,但攻击者可以输入程序,使这些输入的程序与密钥混合,并且当且仅当私密信息满足攻击者选择的验证时,混合后所产生的中间状态可以被设计成指针样式。

研究人员举例称假设一个程序具有私密信息s,那么将x作为程序输入并计算,再将y=s⊕x存储道程序内存中,攻击者则可以制作不同的x,并观察DMP是否能够‘解印’出y,从而推断出关于s的部分甚至全部信息。

二、不需Root访问权限,GoFetch降低黑客攻击门槛

研究人员将这种输入程序与密钥混合的攻击命名为“GoFetch”。使用GoFetch的应用不需要Root权限(用户最高权限),只需要与安装在macOS系统上的大多数第三方应用程序相同的用户权限。

例如,M系列芯片被分成两个集群:一个E集群(包含四个E核心)和一个P集群(包含4个P核心)。只要GoFetch应用和目标加密系统在相同的性能集群上运行,即使在该集群内的不同核心上,GoFetch也能窃取足够的私密信息以泄露密钥。

这种攻击既针对传统的加密算法,也对新一代加密算法有效,即便新一代加密算法已经经过强化,可以抵御量子计算机的预期攻击。

使用GoFetch的应用只需要不到一小时就能提取一个2048-bit RSA密钥,两个多小时就能提取一个2048-bit Diffie-Hellman密钥。它需要54分钟提取组装一个Kyber-512密钥所需的材料,而提取一个Dilithium-2密钥需要10小时,这还不包括处理原始数据所需的离线时间。

▲GoFetch提取四种密码密钥的实验结果(图源:Ars Technica)

在执行操作时,GoFetch能够窃取目标应用程序用于执行这些加密操作的密钥。这种机制意味着,在收集数据期间,目标应用程序无需自行执行任何加密操作。

上述四种攻击都采用了常量时间编程,证明了苹果芯片中的DMP能击破了所有加密防御。

GoFetch并不是研究人员首次发现的潜伏在苹果DMP中的威胁,对GoFetch的优化在2022年的一项研究中被记录下来,该研究在苹果M1和A14芯片中都发现了一种此前未知的“指针雕镂DMP”(pointer-chasing DMP)。

这项来自不同学术团体的研究引发了名为Augury的攻击,该攻击识别并利用了一个泄露指针的内存侧通道,从而对DMP发起攻击。最终,当使用常量时间编程后,Augury无法将数据信息和数据地址混合在一起。该攻击的失败给当时人们的印象是,DMP并没有构成太大的威胁。

使用GoFetch应用的作者在他们的网站上写道:“GoFetch表明,DMP比之前想象的更具侵略性,因此也构成了更大的安全风险。具体来说,我们发现任何从内存中加载的值都有可能被解引。这使我们能规避Augury的许多限制,并在常量时间编程演示端到端攻击。

三、修复安全漏洞,责任在于开发者

与其他微架构CPU侧信道一样,苹果无法在芯片上修复GoFetch。这样一来,减轻漏洞有害影响的责任落在了为苹果硬件开发代码的人身上。对于在M1和M2处理器上运行加密软件的开发人员来说,这意味着,除了常量时间编程外,他们还必须采用其他防御措施,然而几乎所有措施都会带来显著的性能损失。

一个典型的例子是密文盲化(ciphertext blinding),它是修复安全漏洞最有效的措施之一。密文盲化的工作原理是,在敏感值储存到内存或从内存加载之前和之后,增加或删除掩码。

这能够有效随机化加密算法的内部状态,防止攻击者控制它,从而中和GoFetch的攻击。

但不幸的是,研究人员说这种防御针对特定算法,且通常代价高昂,甚至在某些情况下可能会使所需的计算资源增加一倍,例如Diffie-Hellman密钥交换协议(Diffie-Hellman key exchanges)。

另一种防御措施是在前面提到的E核心上运行加密进程,这些核心中没有DMP。

一种可能的尝试是,在这些核心上运行所有加密代码。但是这种防御措施也并非十全十美。它不仅可能会有未宣布的变更将DMP功能添加到E核心中,而且在这里运行加密进程,可能会显著增加完成操作所需的时间。研究人员还提到其他几种特别防御措施,但它们同样存在问题。

此外,苹果最新的芯片M3上的DMP有一个特殊的位(bit),开发者可以调用这个位,以禁用DMP获取数据信息的功能。研究人员目前还不知道在关闭次性能优化时会发生何种性能影响。

研究人员还指出,在英特尔Raptor Lake处理器中发现的DMP不会泄露相同类型的隐私信息。更重要的是,类似于M3,在Raptor Lake上设置一个特殊的DOIT位也能够有效关闭DMP。

不过对于用户而言,无论发生怎样的性能影响,只有当受影响的软件执行特定的加密操作时,用户才能感知到。对于浏览器和许多其他类型的应用,用户可能无法感知到性能受到怎样影响。

研究人员写道:“从长远看,我们认为正确的解决方案是补充2020年公布的软硬件协议中的内容以解决DMP问题。至少硬件应该向软件提供一种在运行安全关键应用程序时选择性禁用DMP的方法,这已经有了初步的行业先例。例如,英特尔的DOIT扩展明确提到可以通过ISA扩展禁用他们的DMP。

从长期看,在理想情况下,人们希望有更精细的控制措施,例如限制DMP只能从特定缓冲区或指定的非敏感内存区域提取数据。”

最后,对此有顾虑的用户应当检查可用于实现已知易受攻击的四种加密协议中任何一种macOS的GoFetch缓解更新。谨慎起见,至少在目前,假设其他加密协议也可能容易受到影响是明智的。

研究人员称:“不幸的是,要评估一种措施是否容易受到攻击,需要进行密码分析和代码检查,以了解如何让中间值看起来像指针,从而泄露私密信息。这个过程需要手把手的尝试,并且极其缓慢,还不排除有其他攻击方式。”

结语:用户隐私难保障,苹果应及时回应并解决漏洞

在苹果芯片上发现的这一最新安全漏洞,使得用户的隐私安全受到威胁。根据该研究论文,这一漏洞的发现揭示了苹果芯片中预取器中以前被忽视的行为,苹果产品的安全风险进一步引发社会关注与担忧。

根据英特尔此前先例,以及研究人员提出的相关建议,苹果公司应尽快解决这一漏洞,并防止用户隐私泄露问题的再次发生。鉴于此前发生的苹果设备监听问题,苹果亟待将保护用户隐私作为重点。

来源:Ars Technica