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安全架构——为复杂软件提供保护

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 实现 五子棋小游戏【附源码】

引言 五子棋是一种古老而深受欢迎的策略游戏,它具有简单的规则和无穷的变化。作为一种传统的中国棋类游戏,五子棋已经在世界范围内流行起来,并成为智力挑战和休闲娱乐的优秀选择。 规则和玩法: 五子棋使用一个15x15的棋盘&#x…

MIMIC数据库, 使用Python研究万古霉素的剂量 (一)

一、万古霉素 是一种杀菌型 抗生素,抑制细菌细胞壁的合成 万古霉素对以下细菌有效: 大多数革兰阳性球菌和杆菌有抗菌活性,包括几乎所有耐青霉素和头孢菌素的 Staphylococcus aureus 和凝固酶阴性葡萄球菌株 许多菌株 肠球菌 (…

【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“

使用idea运行项目,显示错误信息如下: 原因是:idea配置的maven加载不到autoconfigure。 解决方案一: 第6步绕过证书语句如下: -Dmaven.wagon.http.ssl.insecuretrue -Dmaven.wagon.http.ssl.allowalltrue 打开终端&am…

2V2无人机红蓝对抗仿真

两架红方和蓝方无人机分别从不同位置起飞,蓝方无人机跟踪及击毁红方无人机 2020a可正常运行 2V2无人机红蓝对抗仿真资源-CSDN文库

【并发编程】原子累加器

📝个人主页:五敷有你 🔥系列专栏:并发编程 ⛺️稳重求进,晒太阳 JDK8之后有专门做累加的类,效率比自己做快数倍以上 累加器性能比较 参数是方法 // supplier 提供者 无中生有 ()->结果// func…

ElasticSearch搜索与分析引擎-Linux离线环境安装教程

目录 一、下载安装包 网盘链接: 二、安装流程及遇到的问题和解决方案 (1)JDK安装 (2)Elasticsearch安装 (3)Kibana安装 ​(4)Ik分词器安装 三、启动过程中的问题 &#xff…

zabbix监控mariadb数据库

zabbix监控mariadb数据库 1.创建监控用户及授权 [rootchang ~]# mysql -uroot -p123qqq.A MariaDB [(none)]> CREATE USER monitor% IDENTIFIED BY 123qqq.A; MariaDB [(none)]> GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO monitor%; Maria…

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

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

Android SELinux:保护您的移动设备安全的关键

Android SELinux:保护您的移动设备安全的关键 1 引言 移动设备在我们的生活中扮演着越来越重要的角色,我们几乎把所有重要的信息都存储在这些设备上。然而,随着移动应用程序的数量不断增加,安全性也变得越来越关键。这就是为什么…

Android14之Selinux报错:unknown type qemu_device at token (一百八十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

PyTorch使用

前言 系统环境:win10 使用Anaconda,Anaconda的安装自行百度。 conda 23.7.4 目录 前言 创建虚拟环境 1、查看当前有哪些虚拟环境 2、创建虚拟环境pytorch 3、激活及关闭pytorch虚拟环境 4、删除pytorch虚拟环境 使用yolov5测试 1、切换至yolo…

ubuntu离线安装k8s

目录 一、前期准备 二、安装前配置 三、安装docker 四、安装cri-dockerd 五、部署k8s master节点 六、整合kubectl与cri-dockerd 七、网络等插件安装 八、常见问题及解决方法 一、前期准备 ①ubuntu系统 本地已安装ubuntu系统,lsb_release -a命令查看版本信…

《vtk9 book》 官方web版 第3章 - 计算机图形基础 (2 / 6)

3.4 表面特性 当光线穿过空间时,其中一些光线会与我们的物体相交。当这种情况发生时,光线会与物体表面相互作用,产生一种颜色。部分由此产生的颜色实际上并不是由直接光线产生的,而是来自其他物体反射或散射的环境光。环境光照模型…

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

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

Spring框架——主流框架

文章目录 Spring(轻量级容器框架)Spring 学习的核心内容-一图胜千言IOC 控制反转 的开发模式Spring快速入门Spring容器剖析手动开发- 简单的 Spring 基于 XML 配置的程序课堂练习 Spring 管理 Bean-IOCSpring 配置/管理 bean 介绍Bean 管理包括两方面: Bean 配置方式基于 xml 文…

网络空间内生安全数学基础(2)——编码信道数学模型

目录 (零)这篇博客在干什么(一)内生安全与香农信道编码定理(二)基本定义(三)编码信道存在定理(三.壹)编码信道存在第一定理(三.贰)编码…

[python] 过年燃放烟花

目录 新年祝福语 一、作品展示 二、作品所用资源 三、代码与资源说明 四、代码库 五、完整代码 六、总结 新年祝福语 岁月总是悄然流转,让人感叹时间的飞逝,转眼间又快到了中国传统的新年(龙年)。 回首过去&#xf…

LLM - Qwen-72B LoRA 训练与推理实战

目录 一.引言 二.模型简介 1.Qwen-Model 总览 2.Qwen-Chat-72B - PreTrain - Tokenizer - Base Line - SFT / RLHF 3.Qwen-72 模型架构 - Config.json - c_attn/c_proj - Attention Forward - ROPE - Qwen MLP - Qwen Block 三.QLoRA 与 Infer 实战 1.SFT 指…

JavaScript鼠标拖放(Drag and Drop)

🧑‍🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 拖放是现代界面不可或缺的交互方式之一。本文将介绍如何用JavaScript…

【蓝桥杯冲冲冲】 [SCOI2005] 骑士精神

蓝桥杯备赛 | 洛谷做题打卡day28 文章目录 蓝桥杯备赛 | 洛谷做题打卡day28[SCOI2005] 骑士精神题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示题解代码我的一些话[SCOI2005] 骑士精神 题目描述 输入格式 第一行有一个正整数 T T T( T ≤ 10