RISC-V "Smstateen/Ssstateen" 扩展安全机制总结 漏洞概述 该文档描述了RISC-V架构中为了解决隐蔽信道(Covert Channels)问题而设计的状态启用扩展(Smstateen/Ssstateen)。 问题背景:当特权级操作系统(OS)或虚拟机监控器(Hypervisor)切换时,如果扩展引入了新的状态寄存器(如CSR),且这些状态在上下文切换时未被正确保存或重置,攻击者可能利用这些寄存器作为隐蔽信道来窃取信息。 核心机制:通过引入 (机器级)、 (虚拟机级)和 (用户级)寄存器,允许高层特权软件(如OS或Hypervisor)控制低层特权软件对扩展状态的访问权限。 影响范围 受影响组件:RISC-V架构中实现了扩展(如AIA、向量扩展等)且涉及状态切换的硬件实现。 受影响角色: Hypervisor/OS:需要正确配置 和 寄存器,以防止被管理的虚拟机或用户程序通过未初始化的状态寄存器进行通信。 扩展实现者:必须确保扩展状态在上下文切换时能被正确隔离。 修复方案 1. 寄存器配置: 在机器模式下,通过设置 寄存器来启用或禁用对特定扩展状态的访问。 在虚拟机模式下,通过设置 寄存器来控制虚拟机对扩展状态的访问。 在用户模式下,通过设置 寄存器来控制用户程序对扩展状态的访问。 2. 初始化要求: 所有 寄存器在复位时初始化为零。 软件(OS/Hypervisor)在上下文切换前,必须确保 寄存器的状态被正确保存和恢复。 如果某个扩展状态被禁用(对应 位为0),则访问该状态的指令将引发非法指令异常或虚拟指令异常。 3. 位分配: 和 寄存器的高32位(对于RV64)或全部32位(对于RV32)用于控制对扩展状态的访问。 每个位对应一个特定的扩展状态,允许精细控制。 4. 兼容性: * 该扩展设计为向后兼容,允许旧版软件在不支持此扩展的硬件上运行,但可能无法利用其安全特性。 POC代码/利用代码 页面中未包含具体的POC代码或利用代码。