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)](#一、ATF(TF-A)安全通告 TFV-6 (CVE-2017-5753, CVE-2017-5715, CVE-2017-5754))

[二、Variant 1 (CVE-2017-5753)](#二、Variant 1 (CVE-2017-5753))

[三、Variant 2 (CVE-2017-5715)](#三、Variant 2 (CVE-2017-5715))

[四、Variant 3 (CVE-2017-5754)](#四、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 #1240Pull 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

相关推荐
CyberSecurity_zhang3 天前
Armv8的安全启动
安全·arm·tf-a·tf-m·安全启动
小小工匠1 个月前
Arch - 架构安全性_传输(Transport Security)
架构·security·传输安全·transport
粥粥粥少女的拧发条鸟2 个月前
【论文分享精炼版】 sNPU: Trusted Execution Environments on Integrated NPUs
security·tee·npu
小春学渗透2 个月前
CVE-2024-37032-Ollama漏洞
安全·web安全·网络安全·cve·安全服务
阿呆不呆@qq2 个月前
springblade-JWT认证缺陷漏洞CVE-2021-44910
cve·漏洞复现
dingdingfish2 个月前
Oracle 网络安全产品安全认证检索
oracle·database·security·backup·zdlra
粥粥粥少女的拧发条鸟2 个月前
【论文分享】Graviton: Trusted Execution Environments on GPUs 2018’OSDI
security·gpu
神仙约架3 个月前
【xilinx】MPSoC/RFSoC 设计ARM Cortex A 处理器 (TF-A) 可信固件中可能出现缓冲区溢出问题
arm开发·tf-a·可信固件·mpsoc
Atopos`3 个月前
Spring框架漏洞(附修复方法)
java·服务器·后端·安全·spring·web安全·cve
代码改变世界ctw3 个月前
Armv8/Armv9的Pstate寄存器介绍
汇编·arm开发·trustzone·atf·tee·寄存器·secure