ATF(TF-A)安全通告 TFV-8 (CVE-2018-19440)

news/2024/10/22 15:26:02/

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

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

目录

一、ATF(TF-A)安全通告 TFV-8 (CVE-2018-19440)

二、CVE-2018-19440


一、ATF(TF-A)安全通告 TFV-8 (CVE-2018-19440)

Title

不保存x0~x3寄存器可能会将信息从一个非安全世界的SMC client泄漏到另一个

CVE ID

CVE-2018-19440

Date

27 Nov 2018

Versions Affected

All

Configurations Affected

多个非安全世界SMC clients调用到AArch64 BL31

Impact

泄漏SMC返回值从一个非安全世界SMC client到另一个

Fix Version

Pull Request #1710

Credit

Secmation

二、CVE-2018-19440

        当takeing一个异常到EL3,BL31将保存CPU上下文。其目的是在返回到调用固件的较低异常级别软件之前恢复它。然而,对于SMC异常,通用寄存器x0~x3不是保存在栈上的CPU上下文的一部分。

        根据SMC Calling Convention(SMC调用准则),最多可以通过寄存器x0~x3向调用者返回4个值。在TF-A中,这些返回值被写入CPU上下文中,通常使用include/lib/aarch64/smccc_helpers.h头文件中提供的SMC_RETx()宏之一。

       在返回调用者之前,restore_gp_registers()函数被调用。它恢复从存储在栈上的CPU上下文中获取的所有通用寄存器的值。 这包括寄存器x0~x3,可以在lib/el3_runtime/aarch64/context.S文件第339行中看到(参考commit c385955的代码版本):

        在SMC处理程序不使用所有4个返回值的情况下,其余的在CPU上下文中保持不变。因此,restore_gp_registers()恢复使用这些返回值的前一个SMC请求(或EL3的异步异常)保存的过时值。

        在存在多个非安全世界SMC clients的情况下,这种行为可能会将一些返回值从一个client泄漏到另一个。例如,如果受害者client首先发送一个返回4个值的SMC,恶意client可能会发送第二个SMC,期望没有返回值(例如,SDEI_EVENT_COMPLETE SMC)来获得受害者client的4个返回值。

        一般来说,由于存在多个非安全世界SMC clients,减轻威胁的责任在于EL2软件。当存在时,EL2软件必须trap来自EL1软件的SMC调用以确保安全行为。

        由于这个原因,TF-A不会在SMC同步异常的CPU上下文中保存x0~x3。自第一个版本以来,它一直是这样运行的。

        我们可以确认,至少上游基于kvm的系统减轻了这种威胁,因此不受此问题的影响。应该审核其他EL2软件以评估此威胁的影响。

        EL2软件可能会发现减轻这种威胁有些繁重,因为对于所有smc,它都需要知道哪些返回寄存器包含有效数据,因此它可以清除任何未使用的返回寄存器。另一方面,在EL3中减轻这个问题相对容易。因此,TF-A现在将通过在调用中保留寄存器状态来确保没有信息通过寄存器x0~x3泄露。

        请注意,AArch32 TF-A不受此问题影响。SP_MIN中的SMC处理代码已经保存了所有通用寄存器——包括r0~r3,可以在include/lib/aarch32/smccc_macros.S文件第19行看到(参考commit c385955的代码版本):

参考: 9.8. Advisory TFV-8 (CVE-2018-19440) — Trusted Firmware-A 2.9.0 documentation


http://www.ppmy.cn/news/1047045.html

相关文章

PaddleRS 1.0.0版本安装

PaddleRS 1.0.0版本安装 PaddleRS是百度飞桨、遥感科研院所及相关高校共同开发的基于飞桨的遥感影像智能解译开发套件, 支持图像分割、目标检测、场景分类、变化检测、图像复原等常见遥感任务。 PaddleRS致力于帮助遥感领域科研从业者快速完成算法的研发、验证和调…

七夕最强Python表白代码来了

点击上方Python小二,选择星标公众号 干货速达,不迷路 快到七夕了,大家都懂,这里不过多解释了,送大家几段节日专属Python代码。 玫瑰 毫无疑问,玫瑰一直都是七夕、520......这类节日的专属,带文字…

五分钟粗略了解Linux内核

1 操作系统是什么 用户使用的交互系统 Linux操作系统,Window操作系统 2 内核是什么 从技术上来看,内核其实是硬件和软件之间的连接层,我们也可以称之为中间层。 网卡, 磁盘, 内存,寄存器。。。。硬件设备…

MetaMask Mobile +Chrome DevTools 调试Web3应用教程

注:本教程来源网络,根据项目做的整理 写好了WEB3应用,在本地调试用得好好的,但是用钱包软件访问就报莫名的错,但是又不知道是什么原因,排查的过程非常浪费时间 。 因此在本地同一局域网进行调试就非常有必要…

【数据结构OJ题】合并两个有序链表

原题链接:https://leetcode.cn/problems/merge-two-sorted-lists/description/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 可以先创建一个空链表,然后依次从两个有序链表中选取最小的进行尾插操作。(有点类似双…

【Go语言】go_session(超级详细)

目录 前言附件代码审计Index函数Admin函数Flask函数server.py问题 思路本地搭建环境admin绕过SaveUploadedFile方法payload 总结 前言 国赛初赛有一道题目go session,用go的Gin框架和pongo2模板引擎写的,是关于go的pongo2模板注入和flask的热加载&#…

软考高级系统架构设计师系列之:搭建论文写作的万能模版

软考高级系统架构设计师系列之:搭建论文写作的万能模版 一、选择合适的模版二、论文摘要模版1.论文摘要模版一2.论文摘要模版二3.论文摘要模版三4.论文摘要模版四三、项目背景四、正文写作五、论文结尾六、论文万能模版一、选择合适的模版 选择中、大型商业项目,一般金额在2…

Python Django 模型概述与应用

今天来为大家介绍 Django 框架的模型部分,模型是真实数据的简单明确的描述,它包含了储存的数据所必要的字段和行为,Django 遵循 DRY Principle 。它的目标是你只需要定义数据模型,然后其它的杂七杂八代码你都不用关心,…