安全之安全(security²)博客目录导读
RME系统中的应用处理单元(PE)之间的架构差异可能会带来潜在的安全风险并增加管理软件的复杂性。例如,通过在ID_AA64MMFR0_EL1.PARange中为每个PE设置不同的值来支持不同的物理范围,可能会妨碍内存隔离的执行。通过CTR_EL0.L1Ip支持不同的缓存策略,可能会因缓存维护操作不正确而危及Realm内存的机密性。 本节的规则旨在尽量减少应用PE之间的架构差异,并保证在存在差异的情况下不危及RME的安全保证。
RME系统中的应用PE除非本规范明确允许,否则不应有架构差异。
架构特性必须在所有支持它的应用PE上使用相同的修订版和相同的特性ID实现。这确保了软件行为的可预测性,并简化了在证明报告中对支持的架构扩展和特性的报告。 仅当某个特性不向Realm暴露且不被RMSD使用时,才可能支持不统一的架构特性。Arm强烈建议RME系统中的所有应用PE实现架构特性的统一支持,如果无法实现,必须保证可以通过EL2或EL3的控制隐藏Realms的非统一特性。这些控制可以是EL2的寄存器和指令陷阱(trap)控制或EL3的特性启用配置。使用陷阱(trap)控制来保证特性统一性的缺点是要求RMSD软件依赖于平台,并且可能无法完全防止恶意尝试使用该特性。
允许应用PE在以下架构寄存器中存在差异:
服务器基础系统体系结构允许以下差异,但RME系统体系结构不允许:
架构扩展的一个实现定义属性或应用处理单元(PE)之间的实现定义差异,不得导致可能破坏RME安全保证的风险。
当以下情况为真时,PE行为是不可预测的:
- 应用PE之间的实现定义差异对软件可见,例如通过不同PE的系统寄存器值。
- 软件在PE上运行时假定的寄存器值与PE的实际硬件值不匹配。
- 这种不匹配可能发生的一个例子是,如果软件通过在不同的PE上读取该值来获取它。
在Arm架构中定义的不可预测的行为被限制为禁止特权升级。