IPBUF安全漏洞报告
English
CVE-2025-63384 CVSS 6.5 中危

RISC-V Rocket-Chip SRET指令特权级降级失效漏洞 (CVE-2025-63384)

披露日期: 2025-11-10

漏洞信息

漏洞编号
CVE-2025-63384
漏洞类型
特权级保留漏洞
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
RISC-V Rocket-Chip

相关标签

RISC-VRocket-ChipSRET指令特权级保留硬件漏洞芯片安全CVE-2025-63384

漏洞概述

RISC-V Rocket-Chip v1.6及之前版本中存在一个严重的安全漏洞,该漏洞影响SRET(Supervisor-mode Exception Return)指令的实现。SRET指令本应在异常返回时根据sstatus.SPP位的设置将处理器特权级从Machine-mode(M-mode)降级到Supervisor-mode(S-mode)。然而,由于硬件实现缺陷,处理器在执行SRET指令后错误地保持在M-mode,导致原本应该受限的S-mode代码获得了完整的M-mode权限。这种特权级保留漏洞使得低权限代码能够绕过安全隔离,以最高权限执行任意操作,可能导致机密数据泄露、系统完整性破坏等严重后果。攻击者无需特殊权限即可利用此漏洞,且无需用户交互。

技术细节

在RISC-V架构中,SRET指令用于从异常处理程序返回,并将处理器特权级从M-mode切换回S-mode(如果sstatus.SPP位为0)。sstatus.SPP位指示异常发生前的特权级:0表示U-mode,1表示S-mode。在正常的异常返回流程中,当处理器处于M-mode时执行SRET指令,应根据sstatus.SPP位恢复到对应的低特权级。然而,在Rocket-Chip v1.6及更早版本中,SRET指令的实现存在逻辑错误,导致特权级转换机制失效。处理器在执行SRET后仍然保持在M-mode,而sstatus.SPP位的值被忽略。攻击者可以通过触发异常进入M-mode,然后利用SRET指令的错误行为实现特权级保留,从而在M-mode下执行任意代码。这种漏洞可能被用于绕过安全监控、访问受保护的内存区域或执行特权操作。

攻击链分析

STEP 1
步骤1
攻击者以S-mode或U-mode权限运行代码,触发一个异常(如非法指令异常)
STEP 2
步骤2
异常处理程序将处理器切换到M-mode,并设置sstatus.SPP位指示异常前处于S-mode
STEP 3
步骤3
在异常处理完成后,执行SRET指令期望返回S-mode,但由于漏洞存在,处理器仍保持在M-mode
STEP 4
步骤4
攻击者现在以M-mode(最高特权级)身份执行代码,可以访问所有受保护的寄存器和内存区域
STEP 5
步骤5
攻击者利用M-mode权限执行恶意操作,如读取敏感数据、修改系统配置或破坏系统完整性

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-63384 PoC - SRET Privilege Retention # Target: RISC-V Rocket-Chip <= v1.6 # This PoC demonstrates the SRET privilege level retention vulnerability # In vulnerable versions, SRET fails to drop from M-mode to S-mode # Register definitions .equ SSTATUS, 0x100 .equ SPP, 0x1 # Supervisor Previous Privilege bit # PoC assembly code (RISC-V assembly) poc_sret_exploit: # Set sstatus.SPP to indicate we came from S-mode # This should cause SRET to return to S-mode csrr t0, sstatus ori t0, t0, SPP # Set SPP bit csrw sstatus, t0 # Trigger an exception (e.g., illegal instruction) # This will enter M-mode exception handler .word 0xFFFFFFFF # Illegal instruction # After exception handling, execute SRET # Vulnerable behavior: stays in M-mode instead of returning to S-mode sret # If vulnerable: We are now in M-mode (highest privilege) # Attacker can now execute M-mode privileged instructions # Example: Access protected registers or memory csrr t1, mstatus # Read M-mode status csrr t2, mie # Read M-mode interrupt enable # Store captured privileged information sw t1, 0(t3) # Write to memory sw t2, 4(t3)

影响范围

RISC-V Rocket-Chip < v1.6
Rocket-Chip v1.6及之前所有版本

防御指南

临时缓解措施
目前没有有效的临时缓解措施可以完全消除此硬件漏洞。建议尽快升级到Rocket-Chip的修复版本(v1.6之后)。在等待官方修复期间,可以通过对操作系统进行加固来降低风险,例如:限制M-mode代码的执行路径、增加特权级转换的完整性检查、部署运行时监控工具检测异常特权行为。但这些措施只能降低利用风险,无法从根本上解决硬件缺陷。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表