ARM PAC指针认证的侧信道攻击——PACMAN安全漏洞

目录

Q1. PACMAN论文的内容是什么?

Q2. Arm处理器是否存在漏洞?

Q3. 受Arm合作伙伴架构许可设计的处理器实现是否受到影响?

Q4. Cortex-M85受到影响吗?

Q5. Cortex-R82受到影响吗?

Q6. 指针认证如何保护软件?

Q7. PACMAN的详细工作原理是什么?

Q8. PACMAN的局限性是什么?

Q9. 用户是否应对PACMAN感到担忧?

Q10. 是否有可用于缓解PACMAN的方法?


Arm最近得知PACMAN漏洞的存在(详见https://pacmanattack.com/),本文解答了有关该漏洞的问题。本文涉及以下10个问题:

  1. PACMAN论文的主题是什么?

  2. Arm的CPU是否受到影响?

  3. 由Arm的合作伙伴根据架构许可设计的处理器实现是否会受到影响?

  4. Cortex-M85是否受到影响?

  5. Cortex-R82是否受到影响?

  6. 指针认证如何保护软件?

  7. PACMAN的详细工作原理是什么?

  8. PACMAN有哪些局限性?

  9. 用户是否应对PACMAN感到担忧?

  10. 是否有可用于缓解PACMAN的方法?

如果您是Arm被许可方,并有其他问题,请联系您的客户团队以获取更多信息。

Q1. PACMAN论文的内容是什么?

麻省理工学院的研究人员发表了一篇描述PACMAN技术的论文。该方法利用恶意软件对指针认证代码(PAC)进行暴力破解。这种技术使用speculation(推测、投机)来创建一个“oracle”以确定这些代码。这允许攻击者利用这些代码来降低指针认证提供的保护,以对抗面向返回编程(ROP)和面向跳转编程(JOP)攻击。ROP和JOP将现有例程的片段链接在一起形成gadgets“小工具”,然后可以利用这些小工具构建更大的功能序列,用于进一步的攻击。

有关详细信息,请查阅发布在https://pacmanattack.com/上的论文。

Q2. Arm处理器是否存在漏洞?

是的。一些支持指针认证功能(FEAT_PAuth或FEAT_PAuth2)的Cortex-A、Neoverse处理器和其他Arm处理器实现容易受到PACMAN攻击。

指针认证功能是在Arm架构版本Armv8.3-A中引入的。在Arm架构的后续版本中,指针认证功能已经得到增强,引入了一个故障特性(FEAT_FPAC),允许在指针认证尝试失败时引发故障。这个故障特性在本文末尾的Q10中所解释的缓解措施中是必要的。

【注意】对于Cortex-A和Neoverse CPU, ID_AA64ISAR1_EL1寄存器中的API位表示该CPU上是否可用指针身份验证或故障特性(FEAT_FPAC)。相关寄存器功能查询请参考http://hehezhou.cn/

c4448da05c8548a093cce197a270788e.png

下表提供了支持指针认证的已发布处理器是否受到影响的信息:“漏洞状态”为“受影响”表示列出的CPU容易受到PACMAN攻击。

c02519e50a52407a9669cd348174f765.png

Q3. 受Arm合作伙伴架构许可设计的处理器实现是否受到影响?

Arm无法对合作伙伴的实现进行评论。请直接联系这些合作伙伴。

Q4. Cortex-M85受到影响吗?

不受影响。Cortex-M85实现了PAC的M-class版本,但并不容易受到攻击。A类和M类PAC架构之间存在区别,避免了这种攻击。M类认证指令在对错误的PAC进行认证时会生成同步故障,而不是修改寄存器结果(这可能允许通过其他侧信道推测性地检测和泄漏认证状态)

a085e9b6b18f4d6dbd6ab17afdd855ef.png

还请注意,M类的PAC是一个完整的32位值,因为它保存在一个单独的寄存器中(而不是存储在指针的高16位地址位中)。这意味着在M类CPU上,任何可能的PAC空间都会比A类CPU上的空间大得多。此外,指针本身在M类设备上不会被修改,因此在推测地执行无效的认证步骤时,内存访问模式不会发生变化。

最后,这些类型的攻击通常需要一个开放的软件堆栈或用户可以将恶意代码加载到系统上的其他方法。通常,Cortex-M设备的使用模型是使用闭源软件堆栈

Q5. Cortex-R82受到影响吗?

Cortex-R82实现了故障特性(FEAT_FPAC),但并不容易受到攻击。当在执行对PAC进行认证的指令时,Cortex-R82在推测性执行时表现与易受攻击的A类CPU不同,该行为不允许攻击软件创建“oracle”。

Q6. 指针认证如何保护软件?

攻击者可以利用内存破坏漏洞来更改存储在内存中的指针或返回地址,然后劫持程序的控制流。遵循这一模式的攻击包括面向返回编程(ROP)和面向跳转编程(JOP),其中攻击者将指向执行所需任务的代码片段(称为“小工具”)的指针链接在一起。

指针认证通过在地址的未使用高位插入指针验证码(PAC),保护内存中的指针免受恶意篡改。这个代码充当签名,它在对指针进行解引用(在间接分支或内存访问时)之前进行验证。如果指针被篡改,认证很可能会失败,CPU将引发故障,从而抵御攻击。

有关更多信息,请参阅《ARM安全架构——为复杂软件提供保护》文档。

Q7. PACMAN的详细工作原理是什么?

PACMAN是一种技术,允许攻击者通过滥用推测执行来暴力破解PAC。需要强调的是,只有在攻击者已经具备破坏内存中受保护指针的能力的情况下,PACMAN才能发挥作用。由于指针认证的存在,为了修改受保护的指针,攻击者需要找到有效的PAC。

在受影响的CPU上,失败的AUT指令会以一种使得解引用导致翻译故障的方式修改指针。执行路径(通过和认证失败的路径)之间的差异可能会转化为不同的微架构副作用,如果被观察到,就会创建一个“推测性oracle”。

微架构副作用的经典例子包括TLB和缓存分配,可以通过时间测量观察到。具体而言,PACMAN论文依赖于TLBs。错误指令永远不会retire,因为错误预测的分支会刷新pipeline,错误不会发生,攻击者可以重复,直到找到有效的PAC。

ce0646c9f98248dfaadd284168280152.png

PACMAN的主要思想是,攻击者可以通过在推测执行下触发AUT指令的执行(例如,通过错误预测的分支,类似于Spectre攻击),调用这个“oracle”并使用不同的PAC值(每次触发内存破坏时)直到找到有效的PAC为止。在这一点上,攻击者将通过创建具有有效PAC的恶意指针来继续攻击。 

Q8. PACMAN的局限性是什么?

正如上文所述,PACMAN有几个要求和限制:

  1. 能够破坏受害者内存中的指针。
  2. 找到一个合适的"小工具",即能够控制目标AUT指令在推测执行下执行。
  3. 支持PAC的易受攻击CPU在推测执行下执行AUT指令时产生不同的微架构副作用。
  4. 能够观察到这些通常比较杂乱的微架构副作用(例如,TLB分配)。
  5. PAC keys预计会根据执行上下文的变化而变化;在一个上下文中有效的PAC在不同的上下文中可能会失效。
  6. 推测窗口的持续时间设定了可以执行和链式执行的"小工具"数量的上限。此外,每个"小工具"的微架构副作用必须能够被攻击者区分。

需要注意的是,这些要求使得远程攻击变得极不可能,因此攻击者必须能够加载和运行恶意软件或脚本到系统中。然而,在类似JavaScript的JIT环境中,这可能会变得更容易。

Q9. 用户是否应对PACMAN感到担忧?

Arm已经审查了PACMAN论文,虽然它提出了一种新颖且有趣的推测侧信道变体,但Arm认为指针认证仍然在防范ROP和JOP等攻击方面提供了相当大的价值。

用户应该意识到,没有使用指针认证构建的软件已经容易受到ROP/JOP的攻击,因此在该软件上执行这些攻击并不需要PACMAN。

此外,考虑到PACMAN的局限性和推测攻击的历史,我们认为在实际应用中不太可能使用PACMAN来破解指针认证。

Q10. 是否有可用于缓解PACMAN的方法?

对于通用软件,Arm建议继续使用标准的保护机制(在上文Q6中讨论,并在《ARM安全架构——为复杂软件提供保护》文档中有详细介绍),因为它们可以防范ROP和JOP攻击。

可以通过以下代码序列进一步缓解PACMAN。然而,这需要提前了解运行代码序列的CPU的具体实现,并且带有额外的性能影响。

对于实现故障特性(FEAT_FPAC)的CPU,使用XPAC指令(见下图)在每个AUT指令之后显式清除PAC字段将阻止PACMAN攻击创建“oracle”的能力。然而,这意味着不能使用组合认证和分支或认证和加载指令。

3f7c09337bc94b49a5866fdca5e1640a.png

27636d27407348fabcee797e5790712f.png

【注意】

上图的方法依赖于故障的AUT指令不会stalling younger指令,这在Arm实现中是成立的。一个替代且性能更好的序列,可以避免这种限制,但需要牺牲一个额外的寄存器(在下面的示例中为X3),是将上图中的以下代码序列进行转换:

LDR X0, [X1]
AUT X0
XPAC X0
LDR X2, [X0]

into:

LDR X0, [X1]
MOV X3, X0
XPAC X0
AUT X3
LDR X2, [X0]

【警告】

上述缓解方法不应在未实现故障特性(FEAT_FPAC)的CPU实现上使用,因为这实际上会禁用PAC提供的保护。ID_AA64ISAR1_EL1寄存器中的API位指示在给定的Cortex-A或Neoverse CPU上是否可用指针认证或故障特性(FEAT_FPAC)。

在无法实际使用XPAC指令或CPU未实现故障特性(FEAT_FPAC)的情况下,用户可以在AUT指令之后添加推测barriers。然而,Arm认为在所有可能的情况下使用推测barriers将对性能产生严重的影响。

无论CPU是否支持故障特性(FEAT_FPAC),Arm仍然强烈建议在当前Arm CPU中使用指针认证来缓解ROP/JOP风格的攻击。如果没有指针认证来防范ROP/JOP攻击,攻击者可能会迅速且轻松地创建ROP/JOP小工具。

参考

https://developer.arm.com/documentation/ka005109/latest/

http://hehezhou.cn/

ARM安全架构——为复杂软件提供保护

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/371171.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VC++添加菜单学习

新建一个单文档工程; 完成以后看一下有没有出现如下图的 资源视图 的tab;如果没有,在文件列表中找到xxx.rc2文件; 点击 资源视图 的tab,或者双击 .rc2 文件名,就会转到如下图的资源视图;然后展…

AI助力农作物自动采摘,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建作物生产场景下番茄采摘检测计数分析系统

去年十一那会无意间刷到一个视频展示的就是德国机械收割机非常高效自动化地24小时不间断地在超广阔的土地上采摘各种作物,专家设计出来了很多用于采摘不同农作物的大型机械,看着非常震撼,但是我们国内农业的发展还是相对比较滞后的&#xff0…

MySQL 架构和性能优化

重点: 视图,函数,存储过程,触发器,事件( 了解 ) 用户管理,密码管理 grant revoke 权限管理 MySQL 架构( 了解 ) 存储引擎:MyISAM 和 InnoDB …

黑豹程序员-ElementPlus支持树型组件带图标以及icon避坑

效果 vue代码 参数说明&#xff1a;node当前节点&#xff0c;data当前节点后台传入数据。 el-tree自身不支持图标&#xff0c;需要自己去利于实现&#xff0c;并有个坑&#xff0c;和elementui写法不同。 <el-col :span"12"><el-form-item label"绑定…

Unity类银河恶魔城学习记录1-12 PlayerComboAttack源代码 P39

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili PlayerPrimaryAttack.cs using System.Collections; using System.Collect…

k8s学习-Kubernetes的网络

Kubernetes作为编排引擎管理着分布在不同节点上的容器和Pod。Pod、Service、外部组件之间需要⼀种可靠的方找到彼此并进行通信&#xff0c;Kubernetes网络则负责提供这个保障。1.1 Kubernetes网络模型 Container-to-Container的网络 当Pod被调度到某个节点&#xff0c;Pod中的…

贪心算法篇

“靠漫步&#xff0c;将生趣填饱~” 贪心算法简介&#xff1f; 贪心算法&#xff08;Greedy Algorithm&#xff09;&#xff0c;也称为贪婪算法&#xff0c;是一种在解决问题时采取贪心策略的方法。其基本原理是很简单的&#xff1a; “在每个决策点上都选择当下看似最好的选项…

kvm qemu 优化 windows 虚拟机速度

主要优化磁盘 io 和网络 io 都选为 virtio windows 驱动下载 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.185-2/virtio-win-0.1.185.iso I also had incredibly slow performance with my virtual HDD. The followin…

Open CASCADE学习|分割曲线

1、通过参数进行分割 分别获得曲线的 FirstParameter 和 LastParameter &#xff0c;然后对参数进行分割&#xff0c;获得n个ui&#xff0c;并对每个ui调用D0&#xff08;获得这个点的坐标值&#xff09;或D1&#xff08;获得这个点的坐标值和切向量&#xff09;。这个方法的优…

【算法】排序——蓝桥杯、排个序、图书管理员、错误票据、分数线划定

文章目录 蓝桥杯排个序图书管理员错误票据分数线划定 蓝桥杯 排个序 题目标签&#xff1a;冒泡排序 题目编号&#xff1a;1264 排个序 我们尝试对数组a中的元素进行重新排序&#xff0c;以满足特定的条件。具体来说&#xff0c;它试图将数组a排序为升序&#xff0c;但有一个…

STM32定时器中断

定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时发出中断 定时器就是一个计数器 预分频器&#xff1a;对系统时钟进行分频得到定时器时钟频率 自动重装在值&#xff1a;计数多少个进入中断 基本定时器两个&#xff0c;tim6和7&#xff0c;挂载在apb1 通…

设计模式-行为型模式(上)

行为型模式用于描述程序在运行时复杂的流程控制&#xff0c;即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务&#xff0c;它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式&#xff0c;前者采用继承机制来在类间分派行为&…

Electron实战(二):将Node.js和UI能力(app/BrowserWindow/dialog)等注入html

文章目录 设置webPreferences参数安装electron/remotemain进程中初始化html中使用dialog踩坑参考文档 上一篇&#xff1a;Electron实战(一)&#xff1a;环境搭建/Hello World/打包exe 设置webPreferences参数 为了能够在html/js中访问Node.js提供fs等模块&#xff0c;需要在n…

第五讲:函数与类库

第五讲:函数与类库 第五讲:函数与类库函数定义实参变量的作用域返回值代码复用类创建和使用类继承导入类模块与库概念标准库第三方库

MySQL-----约束

目录​​​​​ 约束 一 主键约束 1-1 操作-添加单列主键 1-2 操作-添加多列主键 1-3 修改表结构添加主键 1-4 删除主键约束 二 自增长约束 2-1 指定自增长字段的初始值 2-2 删除自增列 三 非空约束 3-1 创建非空约束 3-2 删除非空约束 四 唯一约束…

26.云原生ArgoCD高级之ApplicationSet

云原生专栏大纲 文章目录 ApplicationSet介绍ApplicationSet 特性ApplicationSet 安装ApplicationSet 工作原理ApplicationSet 生成器列表类型生成器集群生成器基础使用方法Label Selector 指定集群Values 字段传递额外的参数 git生成器git目录生成参数排除目录git文件生成器矩…

NLP入门系列—词嵌入 Word embedding

NLP入门系列—词嵌入 Word embedding 2013年&#xff0c;Word2Vec横空出世&#xff0c;自然语言处理领域各项任务效果均得到极大提升。自从Word2Vec这个神奇的算法出世以后&#xff0c;导致了一波嵌入&#xff08;Embedding&#xff09;热&#xff0c;基于句子、文档表达的wor…

物联网与智慧景区的未来:机遇与挑战并存

随着科技的不断发展&#xff0c;物联网技术在智慧景区中的应用越来越广泛&#xff0c;为旅游业带来了巨大的变革。然而&#xff0c;在物联网与智慧景区的未来发展中&#xff0c;机遇与挑战并存。本文将探讨物联网与智慧景区面临的机遇和挑战&#xff0c;并提出应对措施&#xf…

【复现】WordPress html5-video-player SQL 注入漏洞_39

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 在WordPress中播放各种视频文件。一个简单&#xff0c;可访问&#xff0c;易于使用和完全可定制的视频播放器&#xff0c;适用于所…

[开源]GPT Boss – 用图形化的方式部署您的私人GPT镜像网站

在这个以数据和智能为核心的时代&#xff0c;掌握最新的技术趋势是每个企业和个人都需要做到的。这就是GPT Boss存在的意义&#xff1a;一个基于OpenAI技术的一站式GPT应用解决方案。 自2022年起&#xff0c;GPT Boss团队便投身于人工智能领域&#xff0c;将OpenAI的GPT模型带给…