漏洞总结:Xiangshan 中 xstatus WPRI 字段意外修改 漏洞概述 在 Xiangshan 处理器中,当执行精心构造的读取或写入 寄存器操作时, 寄存器中的 WPRI(Write Preserved Read Ignored)字段被意外修改为 1。该行为不符合 RISC-V 特权架构规范,且与其他模拟器(如 NEMU 和 SPIKE)的行为不一致。 影响范围 受影响组件:Xiangshan 处理器实现 受影响寄存器: 中的 字段 触发条件:对 寄存器的读写操作(特别是在 M 模式下) 影响工具:NEMU、SPIKE 模拟器行为不一致 修复方案 1. 代码修复:通过多个 Pull Request 修复: - : 修复 sdt/dte 交互逻辑 (#3955, #688) - : 对齐 sdt 与 xiangshan 的逻辑 (#60) - : 修复 xstatus.SDT 的 diff 读取逻辑 (#65) 2. 行为对齐: - 使 Xiangshan 的行为与 NEMU 和 SPIKE 保持一致 - 确保 字段在 禁用时保持未定义但合法值 - 正确处理 对 的影响 3. 文档更新: - 更新 RISC-V 特权手册引用 - 澄清 字段的读写行为规范 POC 代码 状态:已修复并关闭(#3955)