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…

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; }输出结果为: 由此可以看出,程序输出的结果并不是其被赋予的值。即说明了浮点数存在一定的误差。…

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

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

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

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

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,…

两只小企鹅(Python实现)

目录 1 和她浪漫的昨天 2 未来的旖旎风景 3 Python完整代码 1 和她浪漫的昨天 是的,春天需要你。经常会有一颗星等着你抬头去看; 和她一起吹晚风吗﹖在春天的柏油路夏日的桥头秋季的公园寒冬的阳台; 这世界不停开花,我想放进你心里一朵&am…

Linux 终端命令之文件浏览(1) cat

Linux 文件浏览命令 cat, more, less, head, tail,此五个文件浏览类的命令皆为外部命令。 hannHannYang:~$ which cat /usr/bin/cat hannHannYang:~$ which more /usr/bin/more hannHannYang:~$ which less /usr/bin/less hannHannYang:~$ which head /usr/bin/he…

tensorflow 1.14 的 demo 02 —— tensorboard 远程访问

tensorflow 1.14.0, 提供远程访问 tensorboard 服务的方法 第一步生成 events 文件: 在上一篇demo的基础上加了一句,如下, tf.summary.FileWriter("./tmp/summary", graphsess1.graph) hello_tensorboard_remote.py …

PG常用SQL

数据库 创建数据库 PostgreSQL 创建数据库可以用以下三种方式: 1、使用 CREATE DATABASE SQL 语句来创建。2、使用 createdb 命令来创建。3、使用 pgAdmin 工具。 CREATE DATABASE 创建数据库 CREATE DATABASE 命令需要在 PostgreSQL 命令窗口来执行&#xff0…

【数据结构】哈希表

总结自代码随想录 哈希表的原理: 对象通过HashCode()函数会返回一个int值;将int值与HashTable的长度取余,该余数就是该对象在哈希表中的下标。

python ffmpeg合并ts文件

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家:点击跳转 当你从网站下载了一集动漫,然后发现是一堆ts文件,虽然可以打开,但是某个都是10秒左右,…

智安网络|恶意软件在网络安全中的危害与应对策略

恶意软件是指一类具有恶意目的的软件程序,恶意软件是网络安全领域中的一个严重威胁,给个人用户、企业和整个网络生态带来巨大的危害。通过潜伏于合法软件、邮件附件、下载链接等途径传播,破坏用户计算机系统、窃取敏感信息、进行勒索等不法行…

什么是DNS的递归查询和迭代查询?

在 DNS 查询中,有两种主要的查询方式:递归查询和迭代查询。它们的工作方式和关系如下: 递归查询 (Recursive Query): 当一个客户端(例如你的电脑或手机)向 DNS 服务器(通常是你的本地 DNS 服务器…