ATF(TF-A)安全通告 TFV-6 (CVE-2017-5753, CVE-2017-5715, CVE-2017-5754)

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

目录

一、ATF(TF-A)安全通告 TFV-6 (CVE-2017-5753, CVE-2017-5715, CVE-2017-5754)

二、Variant 1 (CVE-2017-5753)

三、Variant 2 (CVE-2017-5715)

四、Variant 3 (CVE-2017-5754)


一、ATF(TF-A)安全通告 TFV-6 (CVE-2017-5753, CVE-2017-5715, CVE-2017-5754)

Title

TF-A披露基于cache时间侧信道的前瞻执行处理器漏洞

CVE ID

CVE-2017-5753 / CVE-2017-5715 / CVE-2017-5754

Date

03 Jan 2018 (Updated 11 Jan, 18 Jan, 26 Jan, 30 Jan and 07 June 2018)

Versions Affected

All, up to and including v1.4

Configurations Affected

All

Impact

泄露安全世界的数据到非安全世界

Fix Version

Pull Request #1214Pull Request #1228Pull Request #1240 and Pull Request #1405

Credit

Google / Arm

        本安全通告描述了当前对TF-A披露的前瞻执行处理器漏洞的理解,该漏洞是由Google Project Zero团队发现的。要了解Arm系统上这些漏洞的背景和更广泛的影响,请参阅Arm处理器安全更新(Arm Processor Security Update)。

二、Variant 1 (CVE-2017-5753)

        在撰写本文时,TF-A代码中没有发现任何易受攻击的模式,因此没有任何修复方法被应用或计划应用。

三、Variant 2 (CVE-2017-5715)

        在易受攻击的cpu上,Arm建议在进入安全世界执行任何分支指令之前,尽早使分支预测器失效。有许多实现定义的方法可以达到这一点。

        对于Cortex-A57和Cortex-A72 cpu,这个通告中的Pull Requests (PRs)通过在进入EL3时禁用和重新启用MMU,使分支预测器失效。

        对于Cortex-A73和Cortex-A75 cpu,PRs通过在进入EL3时,暂时陷入AArch32 Secure-EL1并执行BPIALL指令使分支预测器失效。这个解决方案比“MMU禁用/启用”的解决方案复杂得多。“MMU禁用/启用”不能有效地使Cortex-A73/Cortex-A75的分支预测器失效。

        请注意,如果其他特权软件,例如富操作系统内核,在上下文切换过程中通过发送一个SMC(执行固件分支预测失效)来实现自己的分支预测失效。那么,为了使这些解决方案起作用,就需要依赖于该建议中的PRs。如果其他特权软件能够在本地解决漏洞(例如通过自身实现“MMU禁用/启用”),则不存在这样的依赖。

        Pull Request #1240                Pull Request #1240和Pull Request #1405通过实现指定的CVE-2017-5715 SMC调用 (SMCCC_ARCH_WORKAROUND_1)来优化早期的修复,该SMC调用以供非安全世界特权软件使用。这比调用其他任意SMC(例如PSCI_VERSION)更有效。SMCCC_ARCH_WORKAROUND_1的详细信息可以在CVE-2017-5715缓解规范(CVE-2017-5715 mitigation specification)中找到。规范和实现还使非安全世界能够发现这个固件服务的存在。

        在Juno R1上,使用上文描述的“MMU禁用/启用”和“在AArch32 Secure-EL1执行BPIALL”解决方案,我们测量了Cortex-A57上的PSCI_VERSION和SMCCC_ARCH_WORKAROUND_1 SMCs的时间延迟。这包括花费在符合AArch64的SMC调用约定(SMCCC)的测试代码上的时间。对于SMCCC_ARCH_WORKAROUND_1,测试代码使用了SMCCC v1.1,这减少了保存/恢复所需的通用寄存器的数量。虽然BPIALL指令在Cortex-A57上不能有效地使分支预测器失效,但是在禁用MMU的情况下进入Secure-EL1,这种解决方法确实有效地使分支预测器失效。因此,这是一个合理的比较。

        实际比较结果如下:

Test

Time (ns)

PSCI_VERSION baseline (without PRs in this advisory)

515

PSCI_VERSION baseline (with PRs in this advisory)

527

PSCI_VERSION with “MMU disable/enable”

930

SMCCC_ARCH_WORKAROUND_1 with “MMU disable/enable”

386

PSCI_VERSION with “BPIALL at AArch32 Secure-EL1”

1276

SMCCC_ARCH_WORKAROUND_1 with “BPIALL at AArch32 Secure-EL1”

770

        由于这个问题的高度严重性和广泛的适用性,尽管有一些性能和代码大小的开销,上述解决方案在默认情况下是启用的(仅在易受影响的cpu上)。如果平台不需要它们,可以选择在编译时禁用它们。Pull Request #1240对未受影响的平台禁用该解决方案。

        怎么禁用呢?

        对于易受影响的AArch32-only cpu(例如Cortex-A8, Cortex-A9和Cortex-A17),应该在进入安全世界时尽早使用BPIALL指令。对于Cortex-A8,在早期处理器初始化时也需要将ACTLR[6]设置为1。请注意,BPIALL指令在使Cortex-A15上的分支预测器失效方面并不有效。对于该CPU,在早期处理器初始化期间将ACTLR[0]设置为1,并通过执行一个ICIALLU指令使分支预测器失效。

        在AArch32 EL3系统上,monitor和secure-SVC代码通常是紧密集成的,例如作为可信操作系统的一部分。因此,任何Variant 2的解决方案应由该软件供应商提供,且不在TF-A的范围之内。然而,Pull Request #1228中提供了极小的AArch32 Secure Payload (SP_MIN)的实现样例。

        其他Arm cpu不容易受到这种或其他变体的攻击。这包括Cortex- A76,Cortex- A53,Cortex- A55,Cortex- A32,Cortex- A7和Cortex- A5。

        有关非ARM架构CPU的更多信息,请联系CPU供应商。

四、Variant 3 (CVE-2017-5754)

        这个变体只能在相同的translation regime的异常级别之间利用,例如在EL0和EL1之间。因此,这种变体不能用于从非安全世界访问安全内存,也不适用于TF-A。然而,Secure Payloads(例如,Trusted OS)应该为易受攻击的cpu提供缓解措施,以保护它们自己不受Secure-EL0应用程序的攻击。

        唯一易受此变体影响的Arm CPU是Cortex-A75。

参考:

9.6. Advisory TFV-6 (CVE-2017-5753, CVE-2017-5715, CVE-2017-5754) — Trusted Firmware-A 2.9.0 documentation

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

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

相关文章

tp5中的事务处理

使用事务首先要数据库支持事务; 如下MySQL数据库user表开启事务支持,即设计表->引擎设置为InnoDB->保存 事务处理 1. 数据库的表引擎需要是 InnoDB 才可以使用,如果不是调整即可; 2. 事务处理,需要执行多个 SQ…

一、Go的前景与优势、基础语法

Go简介 Go的公司、场景应用 公司占比: 字节跳动领先,公司内部有上万个微服务使用go来编写,不久前也开源了GO RPC框架KiteX。 同时,腾讯、百度、美团、滴滴、深信服、平安、OPPO、知乎、去哪儿、360、金山、微博、哩哔哩、七牛、…

MOCK测试

介绍 mock:就是对于一些难以构造的对象,使用虚拟的技术来实现测试的过程。 mock测试:在测试过程中,对于某些不容易构造或者不容易获取的对象,可以用一个虚拟的对象来代替的测试方 法。 接口Mock测试:在接口…

Microsoft365家庭版1年订阅新功能及版本对比

Microsoft 365可帮助您工作、学习、组织、连接和创,只需一项方便的订阅,即可尽享具有 Microsft 365 的6款精品应用、可同时登录5 台设备(包括 Windows、macOS、iOS 和 Android 设备)、高级安全性等,并且可以自由管理授…

中间件多版本冲突的4种解决方案和我们的选择

背景 在小小的公司里面,挖呀挖呀挖。最近又挖到坑里去了。一个稳定运行多年的应用,需要在里面支持多个版本的中间件客户端;而多个版本的客户端在一个应用里运行时会有同名类冲突的矛盾。在经过询问chatGPT,百度,googl…

c语言--浮点数(float)与0值比较

我们定义一个float类型的数据a,赋值为123456789并输出: int main() {float a;a 123456789;printf("%f\n",a);return 0; }输出结果为: 由此可以看出,程序输出的结果并不是其被赋予的值。即说明了浮点数存在一定的误差。…

CentOS 7查看磁盘空间

CentOS如何查看硬盘大小 CentOS是一种基于Linux的操作系统,主要用于服务器端应用。在服务器管理中,硬盘大小是一个非常重要的指标,查看硬盘大小可以帮助系统管理员有效地管理硬盘空间和避免硬盘满了的情况。 方法一:使用df命令 …

【Express.js】express-validator

express-validator express.js 集成 express-validator进行数据校验 在最初的时候,对于请求的数据校验,我们是自定义一个中间件,然后在里面通过最原生的方式检验。在本节,我们将尝试用一种更优雅的方式进行数据校验。 准备工作…

明月之刃:armbian巧借nmtui管理网络连接

文章目录 nmtui简介安装nmtuinmtui使用连接wifi设置主机名称 nmtui简介 nmtui是NetworkManager TUI(Text User Interface)的缩写,它提供了一个可视化的界面来管理网络连接。但是,在Debian系统中,没有默认安装nmtui工具…

各地区-各行业法人单位、区划数63个指标(2010-2022年)

一、数据介绍 数据名称:各地区-各行业法人单位、区划数63个指标 数据年份:2010-2022年(法人单位至2021年) 数据样本:404条 数据来源:自我整理 二、指标说明 行政区划代码 地区 长江经济带 经度 纬…

Maven项目防止配置文件读取不到

1. 配置方法 我们使用IDEA创建一个基本的Maven项目时,默认情况下是从src/main/resources中读取xml或properties配置文件的。但是我们有时会把一些xml或properties配置文件放在代码目录下(即src/main/java下)。因此我们在pom.xml中进行如下配…

Python(八十三)字符串的比较操作

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

pgsql checkpoint机制(1)

检查点触发时机 检查点间隔时间由checkpoint_timeout设置pg_xlog中wall段文件总大小超过参数max_WAL_size的值postgresql服务器在smart或fast模式下关闭手动checkpoint 为什么需要检查点? 定期保持修改过的数据块作为实例恢复时起始位置(问题&#xf…

WebAPIs 第一天

1.声明变量const优先(补充) 2.WebAPI基本认知 作用和分类 DOM树和DOM对象 3.获取DOM元素 4.DOM修改元素内容 5.操作元素属性 6.定时器-间歇函数 一.声明变量const优先 ① 变量声明有var let const ② 建议const优先,尽量使用const…

java的内存模型

Java内存基础 并发编程模型的两个关键问题 线程之间如何通信及线程之间如何同步 线程之间的通信机制有两种:共享内存和消息传递。 在共享内存的并发模型里,线程之间共享程序的公共状态,通过写-读内存中的公共状态 进行隐式通信。在消息传…

财务管理系统javaweb会计账房进销存jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 财务管理系统javaweb java,Struts2,bootstrap,mysql,…

jzoj 1028: 【入门】最小公倍数

1028: 【入门】最小公倍数 时间限制: 1.000 Sec 内存限制: 16 MB 提交: 19748 解决: 13503 题目描述 求两个整数M和N的最小公倍数。 输入 输入一行,包括两个整数. 输出 输出只有一行(这意味着末尾有一个回车符号),包括1个…

删除块参照 删除块定义

删除块参照 void CDwgDatabaseUtil::DeleteBlockReference(CString strBlockName) {// 锁定文档acDocManager->lockDocument(acDocManager->curDocument());AcDbObjectId objRecId;if (

Vue中实现图片懒加载简单说明

1.安装 npm i vue-lazyload1.2.6 2.导入 import VueLazyload from "vue-lazyload"; 3.注册插件 说明:main.js文件 import imgs_src from "src" Vue.use(VueLazyload, {// 懒加载默认图片loading:"imgs_src" }); 4.前台 说明:vue文…

关于Transformer的理解

关于Transformer, QKV的意义表示其更像是一个可学习的查询系统,或许以前搜索引擎的算法就与此有关或者某个分支的搜索算法与此类似。 Can anyone help me to understand this image? - #2 by J_Johnson - nlp - PyTorch Forums Embeddings - these ar…