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

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

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

目录

[一、ATF(TF-A)安全通告 TFV-8 (CVE-2018-19440)](#一、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

相关推荐
沛沛老爹2 天前
CROSS 技术全解析:边缘计算如何成为行业价值新引擎
人工智能·边缘计算·security·connectivity·optimization·smart·cross
安全二次方security²1 个月前
SCP-Firmware安全通告:CVE-2024-11863和CVE-2024-11864
安全通告·arm安全架构·scp-firmware·scmi·cve-2024-11863·cve-2024-11864·dos拒绝服务攻击
Neolock1 个月前
Next.js 中间件鉴权绕过漏洞 (CVE-2025-29927) 复现利用与原理分析
网络·web安全·中间件·cve·next.js
摸鱼也很难2 个月前
JAVA组件的利用漏洞 && Shlr搜索引擎 && shiro身份 && Log4j日志
cve·漏洞复现·组件安全
摸鱼也很难2 个月前
框架的CVE漏洞利用 && php类 && java类 && 手工操作和自动化操作&&蓝队分析漏洞利用的流量特征
cve·漏洞复现·蓝队流量分析
dingdingfish2 个月前
Oracle 数据库安全评估(DBSAT)简明过程
oracle·database·security·assessment·dbsat
代码改变世界ctw4 个月前
Armv8/Armv9架构从入门到精通-介绍
arm·trustzone·atf·tee·armv8·armv9·周贺贺
星尘安全4 个月前
急需升级,D-Link 路由器漏洞被僵尸网络广泛用于 DDoS 攻击
网络·智能路由器·ddos·漏洞·cve
小小工匠4 个月前
Web安全 - “Referrer Policy“ Security 头值不安全
安全·web安全·security·referrer policy