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

CVE-2026-43231 Linux内核内存泄露漏洞

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

漏洞信息

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

相关标签

Memory LeakLinux KernelDoSLocalMedia Driver

漏洞概述

Linux内核中的radio-keene驱动程序存在一个内存泄露漏洞。该漏洞源于`usb_keene_probe`函数的错误处理路径缺陷。在初始化v4l2控制处理器并添加控件后,若后续的设备注册操作失败,程序未能正确释放已分配的内存资源。本地攻击者可利用此漏洞,通过特定的操作触发该错误路径,导致内核内存持续泄露,长期运行可能耗尽系统内存,进而造成拒绝服务。

技术细节

该漏洞位于Linux内核的`drivers/media/radio/radio-keene.c`驱动文件中。在`usb_keene_probe`函数执行期间,系统首先调用`v4l2_ctrl_handler_init`分配并初始化控制处理器,随后添加必要的控件。然而,在执行`v4l2_device_register`或`video_register_device`进行设备注册时,如果发生错误(例如内存不足或设备冲突),代码将跳转至`err_v4l2`标签进行清理。在此错误路径中,原代码仅调用了`v4l2_device_unregister`,却遗漏了至关重要的`v4l2_ctrl_handler_free`调用。这导致先前分配的控制处理器及其关联的内核内存对象永远不会被释放。攻击者需具备本地低权限,可通过模拟设备故障或利用特定硬件条件反复触发该错误路径,导致内核内存泄露累积,最终引发系统崩溃或服务不可用。

攻击链分析

STEP 1
步骤1
攻击者获得本地系统的低权限访问权限。
STEP 2
步骤2
攻击者触发加载受影响的radio-keene驱动程序,通常通过连接特定USB设备或模拟设备操作。
STEP 3
步骤3
攻击者通过某种手段(如资源耗尽或特定设备状态)导致`v4l2_device_register`或`video_register_device`调用失败。
STEP 4
步骤4
程序执行错误处理路径`err_v4l2`,由于漏洞存在,未释放v4l2控制处理器内存。
STEP 5
步骤5
攻击者重复上述过程,导致内核内存持续泄露,最终耗尽内存引发系统拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * Conceptual PoC for Memory Leak in radio-keene driver * This code demonstrates the vulnerable logic flow. * Triggering this in a real environment requires specific hardware or fault injection. */ #include <linux/module.h> #include <linux/usb.h> #include <media/v4l2-ctrls.h> #include <media/v4l2-device.h> static int usb_keene_probe(struct usb_interface *intf, const struct usb_device_id *id) { struct keene_device *radio; int retval; radio = kzalloc(sizeof(struct keene_device), GFP_KERNEL); if (!radio) return -ENOMEM; // Initialize control handler retval = v4l2_ctrl_handler_init(&radio->hdl, 2); if (retval) { goto err_free_mem; } // Add controls v4l2_ctrl_new_std(&radio->hdl, &keene_ctrl_ops, V4L2_CID_AUDIO_MUTE, 0, 1, 1, 1); if (radio->hdl.error) { retval = radio->hdl.error; goto err_free_ctrl; // Vulnerable path might skip this in some versions } radio->v4l2_dev.ctrl_handler = &radio->hdl; // Simulate failure in device registration to trigger error path retval = v4l2_device_register(&intf->dev, &radio->v4l2_dev); if (retval < 0) { goto err_v4l2; // Jump to error path } // ... rest of the probe ... return 0; err_v4l2: // VULNERABILITY: Missing v4l2_ctrl_handler_free(&radio->hdl); // This causes the memory allocated for the handler to leak. v4l2_device_unregister(&radio->v4l2_dev); err_free_ctrl: v4l2_ctrl_handler_free(&radio->hdl); // This is the fix err_free_mem: kfree(radio); return retval; }

影响范围

Linux Kernel (Versions prior to commit 1d8558a232ecb187e8e0328d6347a125f437a0fc)
Linux Kernel (Versions prior to commit 242b0aabb1866024a7995a767ac330c158b39aa4)
Linux Kernel (Versions prior to commit 27c508f61963013fdf29097578284099ee7a85a4)

防御指南

临时缓解措施
限制非特权用户对硬件设备的访问权限,防止恶意用户触发驱动加载或初始化过程。

参考链接

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