安全之安全(security²)博客目录导读
ATF(TF-A)安全通告汇总
目录
一、ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031)
二、CVE-2017-15031
一、ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031)
Title | 未初始化或保存/恢复PMCR_EL0可能会泄露安全世界的时间信息 |
---|---|
CVE ID | CVE-2017-15031 |
Date | 02 Oct 2017, updated on 04 Nov 2019 |
Versions Affected | All, up to and including v2.1 |
Configurations Affected | All |
Impact | 泄露敏感的安全世界时间信息 |
Fix Version | Pull Request #1127 (merged on 18 October 2017) Commit e290a8fcbc (merged on 23 August 2019) Commit c3e8b0be9b (merged on 27 September 2019) |
Credit | Arm, Marek Bykowski |
二、CVE-2017-15031
PMCR_EL0(性能监视控制寄存器Performance Monitors Control Register)提供性能监视实现的详细信息,包括实现的计数器数量,并配置和控制计数器。如果PMCR_EL0.DP位设置为零,在安全世界执行期间cycle counter周期计数器(当启用时)仍计数,即使被调试信号禁止。
由于TF-A在非安全世界和安全世界之间切换时不会保存和恢复PMCR_EL0,因此非安全世界代码可以设置PMCR_EL0.DP为零,从而导致安全世界时间信息的泄漏。当进入EL3和转换到S-EL1时,应将此寄存器添加到保存/恢复寄存器列表中。
此外,PMCR_EL0.DP有一个架构上未知的复位值。由于TF-A未初始化此寄存器,因此至少在某些实现中,默认情况下PMCR_EL0.DP可能会被初始化为0。在安全上下文中,这个和其他具有架构未知复位值的位应该初始化为合理的默认值。
同样的问题也存在于等效的AArch32寄存器PMCR中,AArch32中PMCR_EL0.DP在架构上复位值为0。
注意:上面引用的起初pull request只修复了S-EL1的问题,EL3在后来的提交中修复了。
参考:9.5. Advisory TFV-5 (CVE-2017-15031) — Trusted Firmware-A 2.9.0 documentation