麻省理工学院研究人员发现 Apple M1 CPU 新缺陷

admin 2022年6月13日10:57:35安全新闻评论7 views1373字阅读4分34秒阅读模式

麻省理工学院研究人员发现 Apple M1 CPU 新缺陷

一种被称为PACMAN的新型硬件攻击已针对 Apple 的 M1 处理器芯片组进行了演示,它可能使恶意攻击者能够在 macOS 系统上获得任意代码执行。

麻省理工学院研究人员 Joseph Ravichandran、Weon Taek Na、Jay Lang 和 Mengjia Yan在一篇新论文中表示,它利用“推测性执行攻击绕过重要的内存保护机制 ARM 指针身份验证,这是一种用于强制指针完整性的安全功能” .

更令人担忧的是,虽然 PACMAN 使用的硬件机制无法使用软件功能进行修补,但内存损坏错误可以。

该漏洞源于指针身份验证代码 ( PAC ),这是 arm64e 架构中引入的一道防线,旨在检测和保护内存中指针(存储内存地址的对象)的意外更改。

什么是吃豆人?

PACMAN 是一种新颖的硬件攻击,可以绕过Apple M1 CPU上的指针验证(PAC) 我们提出以下贡献:

  • Spectre时代复合威胁模型的一种新思维方式。

  • M1 内存层次结构的逆向工程细节。

  • 从 M1 上的用户空间伪造内核 PAC 的硬件攻击

将针对软件攻击的硬件缓解与微架构侧通道相结合时,会得到 PACMAN。我们相信 PACMAN 的核心理念不仅仅适用于 PAC。

PAC 旨在解决软件安全中的一个常见问题,例如内存损坏漏洞,通常通过覆盖内存中的控制数据(即指针)来利用这些漏洞将代码执行重定向到攻击者控制的任意位置。

虽然已经设计了诸如地址空间布局随机化 ( ASLR ) 之类的策略来增加执行缓冲区溢出攻击的难度,但 PAC 的目标是确定“以最小的大小和性能影响的指针的有效性”,从而有效地防止对手创建有效的用于漏洞利用的指针。

这是通过使用加密哈希(称为指针身份验证代码 (PAC))保护指针来实现的,以确保其完整性。Apple对 PAC 的解释如下:

指针身份验证通过提供一个特殊的 CPU 指令在存储指针之前将加密签名(或 PAC)添加到指针的未使用高位位来工作。另一条指令在从内存中读回指针后删除并验证签名。在写入和读取之间对存储值的任何更改都会使签名无效。CPU 将身份验证失败解释为内存损坏,并在指针中设置一个高位,使指针无效并导致应用程序崩溃。

麻省理工学院研究人员发现 Apple M1 CPU 新缺陷

但是 PACMAN “消除了在使用指针身份验证保护的平台上进行控制流劫持攻击的主要障碍。通过微架构侧通道泄漏 PAC 验证结果而不会导致任何崩溃”。

简而言之,攻击方法可以区分正确的 PAC 和不正确的哈希,允许不良行为者“在抑制崩溃的同时暴力破解正确的 PAC 值,并对启用 PA 的控制流劫持攻击受害者程序或操作系统。”

就其本身而言,崩溃预防之所以成功,是因为每个 PAC 值都是通过使用Prime+Probe 攻击的转换后备缓冲区 ( TLB ) 利用基于时间的边信道来推测性地猜测的。

麻省理工学院研究人员发现 Apple M1 CPU 新缺陷

正如在 Spectre 和 Meltdown 的案例中所观察到的,推测执行漏洞将无序执行武器化,这种技术用于通过预测程序执行流的最可能路径来提高现代微处理器的性能。

然而,值得注意的是,威胁模型假定受害者程序(内核)中已经存在可利用的内存损坏漏洞,这反过来又允许非特权攻击者(恶意应用程序)将流氓代码注入到某些内存位置。受害者进程。

研究人员总结说:“这种攻击对于希望实现具有指针身份验证的未来处理器的设计人员具有重要意义,并对未来控制流完整性原语的安全性产生广泛影响。”



原文始发于微信公众号(祺印说信安):麻省理工学院研究人员发现 Apple M1 CPU 新缺陷

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月13日10:57:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  麻省理工学院研究人员发现 Apple M1 CPU 新缺陷 http://cn-sec.com/archives/1111742.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: