IPBUF安全漏洞报告
English
CVE-2023-53547 CVSS 5.5 中危

CVE-2023-53547 Linux内核amdgpu驱动SDMA v4清理缺陷漏洞

披露日期: 2025-10-04
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

漏洞编号
CVE-2023-53547
漏洞类型
空指针解引用/通用保护故障
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel (drm/amdgpu驱动,SDMA v4 4.2.2)

相关标签

Linux内核amdgpuSDMA v4通用保护故障空指针解引用拒绝服务本地提权内核漏洞AMD GPU驱动漏洞

漏洞概述

CVE-2023-53547是Linux内核中AMD GPU驱动(amdgpu)的一个安全漏洞,具体存在于SDMA(System Direct Memory Access)v4版本4.2.2的软件关闭(sw_fini)流程中。该漏洞在驱动模块卸载或设备关闭过程中触发通用保护故障(general protection fault),导致内核崩溃。

漏洞的根本原因在于sdma_v4_0_sw_fini函数在执行SDMA实例上下文销毁时,amdgpu_sdma_destroy_inst_ctx调用amdgpu_ucode_release进而调用release_firmware,最终在free_fw_priv函数中出现空指针或非法地址解引用问题。攻击者通过在本地系统上加载和卸载受影响的amdgpu驱动模块,即可触发该漏洞,导致系统拒绝服务(内核崩溃)。

该漏洞的CVSS评分为5.5,属于中危级别。攻击向量为本地攻击(AV:L),需要低权限(PR:L),无需用户交互(UI:N),对机密性和完整性无影响,但对可用性影响为高(A:H)。这意味着该漏洞虽然不能直接用于权限提升或数据窃取,但可以被本地低权限用户利用来造成系统拒绝服务,影响系统稳定性。

该漏洞影响使用AMD GPU硬件且运行受影响Linux内核版本的系统,特别是在服务器和工作站环境中,频繁的驱动加载/卸载操作可能增加被利用的风险。漏洞已于2025年10月4日公开披露,相应的修复补丁已合并到Linux内核稳定分支中。

技术细节

该漏洞的技术原理涉及amdgpu驱动中SDMA v4固件释放流程中的空指针解引用问题。具体技术细节如下:

1. **触发路径**:当系统执行amdgpu驱动的软件关闭流程(sw_fini)时,调用链为 sdma_v4_0_sw_fini() → amdgpu_sdma_destroy_inst_ctx() → amdgpu_ucode_release() → release_firmware() → free_fw_priv()。

2. **根本原因**:在free_fw_priv函数中,对固件私有数据(fw_priv)进行释放时,由于指针未正确初始化或已被释放,导致对非规范地址(non-canonical address)0xd5e5a4ae79d24a32的解引用,触发x86架构的通用保护故障(#GP)。

3. **漏洞触发条件**:在SDMA 4.2.2硬件上,当驱动模块被卸载或GPU设备关闭时,如果固件上下文未被正确初始化或初始化过程中出现异常,sw_fini流程中的清理代码将尝试释放无效的固件资源指针。

4. **利用方式**:攻击者只需具有本地低权限访问权限,通过以下步骤即可触发:
- 加载amdgpu驱动模块
- 访问AMD GPU设备节点
- 卸载驱动模块或触发设备关闭事件
- 内核在清理过程中触发通用保护故障,导致系统崩溃(内核panic)

5. **影响范围**:该漏洞仅影响使用AMD SDMA 4.2.2引擎的GPU硬件,对其他SDMA版本无影响。漏洞不影响数据机密性和完整性,但会导致系统完全不可用。

攻击链分析

STEP 1
步骤1:环境准备
攻击者需要在一台配备AMD SDMA 4.2.2 GPU硬件的Linux系统上获得本地低权限访问权限。系统需要运行存在漏洞的Linux内核版本。
STEP 2
步骤2:加载驱动模块
攻击者通过modprobe amdgpu命令加载amdgpu内核模块,此时内核会初始化SDMA v4固件上下文,为后续触发漏洞做准备。
STEP 3
步骤3:访问GPU设备
攻击者通过打开/dev/dri/renderD128等GPU设备节点,触发SDMA实例上下文的创建,确保固件上下文被加载。
STEP 4
步骤4:触发驱动卸载
攻击者执行rmmod amdgpu命令卸载驱动模块,触发sdma_v4_0_sw_fini()函数调用,进入固件释放清理流程。
STEP 5
步骤5:触发通用保护故障
在清理过程中,free_fw_priv函数尝试释放未正确初始化的固件私有数据指针,导致对非规范地址的解引用,触发x86通用保护异常(#GP),内核崩溃,系统拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2023-53547 PoC - Trigger amdgpu SDMA v4 sw_fini crash // This PoC triggers the vulnerability by loading and unloading the amdgpu // driver on a system with AMD SDMA 4.2.2 hardware #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <sys/stat.h> // Step 1: Ensure amdgpu module is loaded // Run: modprobe amdgpu // This initializes the SDMA v4 firmware contexts // Step 2: Access the AMD GPU device to trigger initialization int trigger_vulnerability() { int fd; // Open the AMD GPU render node // This triggers SDMA instance context creation fd = open("/dev/dri/renderD128", O_RDWR); if (fd < 0) { perror("Failed to open GPU device"); return -1; } printf("GPU device opened, SDMA contexts initialized\n"); close(fd); return 0; } // Step 3: Unload the amdgpu module to trigger sw_fini // Run: rmmod amdgpu // This will call sdma_v4_0_sw_fini() -> amdgpu_sdma_destroy_inst_ctx() // -> amdgpu_ucode_release() -> release_firmware() -> free_fw_priv() // which triggers the general protection fault int main() { printf("CVE-2023-53547 PoC - amdgpu SDMA v4 sw_fini crash\n"); printf("WARNING: This will crash the kernel on vulnerable systems\n"); // Trigger SDMA context initialization if (trigger_vulnerability() != 0) { return 1; } printf("Now run 'rmmod amdgpu' to trigger the crash\n"); printf("Or run: sudo rmmod amdgpu\n"); return 0; } // Shell-based trigger: // $ sudo modprobe amdgpu // $ ls /dev/dri/renderD* # Trigger device access // $ sudo rmmod amdgpu # This triggers the GP fault in free_fw_priv+0xd/0x70

影响范围

Linux Kernel < 6.6 (含受影响amdgpu驱动的版本)
Linux Kernel 6.6.x (受影响版本)
Linux Kernel 6.1.x LTS (受影响版本)
Linux Kernel 5.15.x LTS (受影响版本)
Linux Kernel 5.10.x LTS (受影响版本)

防御指南

临时缓解措施
在无法立即升级内核的情况下,建议采取以下临时缓解措施:1)限制本地用户加载和卸载amdgpu内核模块的权限,通过移除普通用户的CAP_SYS_MODULE能力实现;2)限制/dev/dri/renderD*等GPU设备节点的访问权限,仅允许可信用户访问;3)避免在生产环境中频繁加载/卸载amdgpu驱动模块;4)监控系统中是否存在异常的amdgpu模块操作行为;5)配置系统自动重启或恢复机制,以应对可能的内核崩溃事件。

参考链接

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