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 #1214, Pull Request #1228, Pull 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
相关文章:

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, C…...
vue3 基础语法 02
你好,今天过的怎么样呀,嘿嘿,加油夏 💕 文章目录 一、模板语法 一、模板语法 React的开发模式: React 使用的 jsx,对应的代码编写的类似于js的一种语法;通过 Babel 将 jsx , 编译成…...

版本控制工具——git
版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。 版本控制最主要的功能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠实地了记录下来。每一次文件的改变,文件的…...

超详细,自动化测试实战-获取配置文件信息(实例源码)
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 配置文件的类型 …...
spring 2.7.14 cors 设置 allowedOrigins(“*“)通配符 失效怎么解决
失效代码: package com.yukuanyan.searcher_web.config;import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebM…...
一、Go的前景与优势、基础语法
Go简介 Go的公司、场景应用 公司占比: 字节跳动领先,公司内部有上万个微服务使用go来编写,不久前也开源了GO RPC框架KiteX。 同时,腾讯、百度、美团、滴滴、深信服、平安、OPPO、知乎、去哪儿、360、金山、微博、哩哔哩、七牛、…...

shell脚本循环语句
shell脚本循环语句 一.echo命令二.查看当前系统的时间--date命令三.循环语句for四.while循环语句结构五.while循环语句结构(迭代)六.continue和break 一.echo命令 echo -n 表示不换行输出 echo -e输出转义符,将转义后的内容输出到屏幕上 常…...

二叉树题目:二叉树的直径
文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:二叉树的直径 出处:543. 二叉树的直径 难度 3 级 题目描述 要求 给定二叉树的根结点 root \texttt{root} root,返回其直径…...

嵌入式:C高级 Day4
一、整理思维导图 二、写一个函数,获取用户的uid和gid并使用变量接收 三、整理冒泡排序、简单选择排序和快速排序的代码 冒泡排序 #include <myhead.h>void output(int arr[], int len); void bubble_sort(int arr[], int len);int main(int argc, const ch…...
cmake常用命令(1)——函数相关
一、function/endfunction cmake中的函数与其他语言相似,表示一个命令集,可以被重复调用。形式如下: function(<name> [<arg1> ...])<commands> endfunction() function:表示函数开始 <name>…...
阿里三年功能测试的一些感悟
一、前言 功能测试是测试工程师的基础功,很多人功能测试还做不好,就想去做性能测试、自动化测试。很多人对功能测试的理解就是点点点,如何自己不用心去悟,去研究,那么你的职业生涯也就停留在点点点上了。在这里&#…...

React源码解析18(4)------ completeWork的工作流程【mount】
摘要 经过上一章,我们得到的FilberNode已经具有了child和return属性。一颗Filber树的结构已经展现出来了。 那我们最终是想在页面渲染真实的DOM。所以我们现在要在completeWork里,构建出一颗离屏的DOM树。 之前在说FilberNode的属性时,我们…...
Kafka: 详解、使用教程和示例
Kafka: 详细介绍、使用教程和示例 什么是 Kafka? Kafka 是一个分布式的流处理平台,最初由 LinkedIn 开发,现已成为 Apache 基金会的顶级项目。它以高吞吐量、可靠性和可扩展性而闻名,被广泛应用于实时数据传输、日志收集、事件处…...

【LeetCode周赛】LeetCode第358场周赛
LeetCode第358场周赛 数组中的最大数对和翻倍以链表形式表示的数字限制条件下元素之间的最小绝对差 数组中的最大数对和 给你一个下标从0开始的整数数组nums。请你从nums中找出和最大的一对数,且这两个数数位上最大的数字相等。 返回最大和,如果不存在满…...

Node.js学习笔记-04
这第九章也是个大重点 九、玩转进程 Node在选型时决定在V8引擎之上构建,也就意味着它的模型与浏览器类似。 本章关于进程的介绍和讨论将会解决如下两个问题: 单进程单线程并非完美,如今CPU基本均是多核的,真正的服务器…...

基于dbn+svr的交通流量预测,dbn详细原理
目录 背影 DBN神经网络的原理 DBN神经网络的定义 受限玻尔兹曼机(RBM) DBN+SVR的交通流量预测 基本结构 主要参数 数据 MATALB代码 结果图 展望 背影 DBN是一种深度学习神经网络,拥有提取特征,非监督学习的能力,是一种非常好的分类算法,本文将DBN+SVR用于交通流量预测…...

【第一阶段】kotlin中反引号中的函数名特点
在kotlin中可以直接中文定义函数,使用反引号进行调用 eg: fun main() {2023年8月9日定义的函数(5) }private fun 2023年8月9日定义的函数(num:Int){println("反引号的用法$num") }执行结果 在Java中is,in可以定义方法,但是在kotlin中is,in是…...

数据分析-python学习 (1)numpy相关
内容为:https://juejin.cn/book/7240731597035864121的学习笔记 导包 import numpy as np numpy数组创建 创建全0数组,正态分布、随机数组等就不说了,提供了相应的方法通过已有数据创建有两种 arr1np.array([1,2,3,4,5]) 或者datanp.loadt…...
数据库的游标
数据库的游标(Cursor)是用于在数据库中进行数据操作的一个控制结构。它类似于在编程语言中使用的指针或迭代器,用于遍历数据库结果集并在结果集上执行各种操作。 游标允许我们在数据库查询的结果集中逐行移动,并对每一行执行特定…...

【设计模式】前端控制器模式
前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理。该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。以下是这种…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...

Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...