ATF(TF-A)安全通告 TFV-3 (CVE-2017-7563)

news2024/11/16 13:53:55

安全之安全(security²)博客目录导读

ATF(TF-A)安全通告汇总

目录

一、ATF(TF-A)安全通告 TFV-3 (CVE-2017-7563)

二、CVE-2017-7563


一、ATF(TF-A)安全通告 TFV-3 (CVE-2017-7563)

Title

RO内存始终在AArch64 Secure EL1下可执行

CVE ID

CVE-2017-7563

Date

06 Apr 2017

Versions Affected

v1.3 (since Pull Request #662)

Configurations Affected

xlat_tables库的AArch64 BL2, TSP或其他用户在AArch64安全EL1执行

Impact

意外的特权升级

Fix Version

Pull Request #924

Credit

ARM

二、CVE-2017-7563

        ARM可信固件(TF-A)中的翻译表库(lib/xlat_tables和lib/xlat_tables_v2下)提供api来帮助MMU中的程序翻译表(translation tables)。xlat_tables client以mmap_region结构的形式指定其所需的内存映射。每个mmap_region都有由mmap_attr_t枚举类型表示的内存属性。它包含控制数据访问权限(MT_RO/MT_RW)和指令执行权限(MT_EXECUTE/MT_EXECUTE_NEVER)的标志。因此,同时指定MT_RO和MT_EXECUTE_NEVER的映射应该导致一个只读(RO),不可执行的内存区域。

        对于在Secure EL1上执行的AArch64映像,此功能不能正确工作。任何映射为RO的内存区域将始终是可执行的,无论client是否指定了MT_EXECUTE或MT_EXECUTE_NEVER。

        已知该漏洞会影响启用SEPARATE_CODE_AND_RODATA构建选项的平台上的BL2和TSP(Test Secure Payload)镜像,其中包括所有ARM标准平台以及上游的Xilinx和NVidia平台。这些平台上这些镜像的RO数据意外地是可执行的,而不是不可执行的。其他平台或xlat_tables clients也可能受到影响。

        该漏洞主要在Pull Request #662之后出现。在此之前,xlat_tables client不能将指令执行权限单独指定给数据访问权限。所有RO normal内存区域都是隐式可执行的。在Pull Request #662之前,该漏洞只会在映射为RO的设备内存中出现;但很少使用此映射,尽管上游QEMU平台在使用DEVICE2_BASE构建选项时使用此映射。

        请注意,利用此漏洞还需要一个或多个单独的漏洞。

        该漏洞是由于错误地处理了转换表中的execute-never位。EL3转换机制(translation regime)使用单个XN位来确定一个区域是否可执行。安全EL1&0转换机制(translation regime)处理2个虚拟地址(VA)范围,因此使用2位,UXN和PXN。xlat_tables库只处理XN位,它映射到Secure EL1&0转换机制(translation regime)中的UXN。因此,该程序具有安全EL0执行权限,但始终将内存保留为安全EL1的可执行内存。

        以下方法可减轻该漏洞

        1)xlat_tables库通过设置SCTLR_ELx.WXN位确保所有读写(RW)内存区域都是不可执行的。这将覆盖转换表中XN、UXN或PXN位的任何值。参见enable_mmu()函数:

sctlr = read_sctlr_el##_el();               \
sctlr |= SCTLR_WXN_BIT | SCTLR_M_BIT;       \

e9a5b2ab32a84fcfa098454150147ed3.png

e1129fc9d6334dffa54787346d1a6e0c.png

91753137c5d54f149feb2654e5e07725.png

        2)AArch32配置不受影响。这里的XN位控制当前执行的转换机制的执行权限,这是期望的行为。

        3)ARM TF EL3代码(例如BL1和BL31)通过设置SCR_EL3.SIF位确保映射到安全世界的所有非安全内存都是不可执行的。参见el3_common_macros中的el3_arch_init_common宏。

d068e6ac06754d3b8db2c620f677ffc3.png

参考:9.3. Advisory TFV-3 (CVE-2017-7563) — Trusted Firmware-A 2.9.0 documentation

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

字符设备驱动框架解析

一、字符设备驱动框架解析 设备的操作函数如果比喻是桩的话(性质类似于设备操作函数的函数,在一些场合被称为桩函数),则: 驱动实现设备操作函数 ----------- 做桩 insmod调用的init函数主要作用 --------- 钉桩 rm…

LinearAlgebraMIT_11_MatrixSpace/Rank==1‘sMatrix/SmallWorldGraph

x.1 矩阵空间 向量空间定义:满足加法和数乘的封闭性。就类似向量空间一样,也存在着矩阵空间的定义。举个例子,例如所有的3x3的矩阵构成的矩阵空间M,它的纬度就是9,如[1, 0, …], [0, 1, …]。对于M中所有对称矩阵组成…

Ansible学习笔记3

ansible模块: ansible是基于模块来工作的,本身没有批量部署的能力,真正具有批量部署的是ansible所运行的模块,ansible只是提供一个框架。 ansible支持的模块非常多,我们并不需要把每个模块记住,而只需要熟…

Ubuntu20以上高版本如何安装低版本GCC

安装了Ubuntu 20.04之后,通过命令行 sudo apt-get install build-essential安装gcc,再通过命令行 gcc -v可查看gcc版本为gcc13 如果想用低版本的gcc,比如gcc4.8,尝试输入命令 sudo apt-get install gcc-4.8会提示找不到gcc4.8的…

胡歌深夜发文:我对不起好多人

胡歌的微博又上了热搜。 8月29日01:18分,胡歌微博发文称:“我尽量保持冷静,我对不起好多人,我希望对得起这短暂的一生”,并配了一张自己胡子拉碴的图,右眼的伤疤清晰可见。 不少网友留言称“哥你又喝多了吗…

基于Java+SpringBoot+Vue前后端分离教师工作量管理系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

希尔排序(JAVA实例代码)

目录 希尔排序 一、概念及其介绍 二、适用说明 三、过程图示 四、Java 实例代码 ShellSort.java 文件代码: 希尔排序 一、概念及其介绍 希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进。 希尔排序又称缩小增量排序&#…

【2023年11月第四版教材】《第9章-范围管理》(第二部分)

《第9章-范围管理》(第二部分) 4 规划范围管理4.1 范围管理计划★★★ (21下29)4.2 需求管理计划★★★ (22上27) 5 收集需求5.1 数据收集★★★5.2 决策★★★5.3 数据表现★★★5.4 人际关系与团队技能★…

【pyqt5界面化开发-6】抽屉布局界面的开发

目录 0x01 前言: 一、封装的主窗口类 第一步:封装窗口类 第二步:添加抽屉界面 第三步:添加抽屉界面的相关布局 第四步:每一个抽屉界面的点击触发 二、封装的抽屉类 三、程序入口程序 四、完整代码 0x01 前言&…

Windows端口占用处理

端口被占用时,大部分是后台服务持续运行使用了某个端口。这样会导致我们使用了相同端口的新程序无法正常启动,我们需要找到端口被占用的应用程序,方法比较简单,如下以3000端口被占用为例: 1、打开windows的cmd命令行窗…

数据结构与算法基础-学习-30-插入排序之直接插入排序、二分插入排序、希尔排序

一、排序概念 将一组杂乱无章的数据按一定规律顺次排列起来。 将无序序列排成一个有序序列(由小到大或由大到小)的运算。 二、排序方法分类 1、按数据存储介质 名称描述内部排序数据量不大、数据在内存,无需内外交换存交换存储。外部排序…

LNMT的多机部署和双机热备

目录 一、环境 二、配置tomcat 三、配置nfs共享 四、配置nginx 1、两台都需要折磨配置 2、在http下面插入这两条信息 五、配置keepalived 1、安装 2、重新启动一下keepalived查看IP 六、验证双机热备 1、查看调度器备的IP,ip漂移说明keepalived生效 2、访…

Python切换输入法的实战代码

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

MySQL一行记录是如何存储的?

目录 MySQL的数据存放在哪个文件? 表空间文件的结构是怎么样的? 1、行(row) 2、页(page) 3、区(extent) 4、段(segment) InnoDB 行格式有哪些&#xf…

简述SpringMVC

一、典型的Servlet JSP JavaBean UserServlet看作业务逻辑处理(Controller)User看作模型(Model)user.jsp看作渲染(View) 二、高级MVC 由DispatcherServlet对请求统一处理 三、SpringMVC MVC与Spr…

雪花算法实现原理和精度失效问题

一、雪花算法的实现原理 雪花算法是一个全局唯一算法,它主要出现在像分库分表场景中作为业务主键、 或者作为一些像订单号这类的 id 生成器。 所以单纯就全局唯一性质来说,有很多的实现方式,比如 UUID , Redis 的原子递增 &#…

春秋云镜 CVE-2018-3191

春秋云镜 CVE-2018-3191 Weblogic WLS Core Components 反序列化命令执行漏洞 靶标介绍 Oracle Fusion Middleware 的 Oracle WebLogic Server 组件中的漏洞(子组件:WLS Core Components)。受影响的受支持版本包括 10.3.6.0、12.1.3.0 和 1…

基于Java+SpringBoot+Vue前后端分离工作流程管理系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

QT6为工程添加资源文件,并在ui界面引用

以添加图片资源为例 右键工程名字(不是最上面的名字),点击添加现有文件 这种方式虽然添加到了工程中,但不能在UI设计界面完成引用。主要原因可能是未把文件放入到项目资源文件中,以下面一种方式可以看出区别。 点击添…

clickhouse 系列2:clickhouse 离线安装

1.下载rpm包 Altinity/clickhouse - Packages packagecloud 使用wget下载到本地目录 wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-common-static-20.8.3.18-1.el7.x86_64.rpm/download.rpm wget