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

Linux内核uvcvideo缓冲区释放漏洞

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

漏洞信息

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

相关标签

Linux KernelDoSuvcvideoLocalDriverBuffer Leak

漏洞概述

Linux内核中的uvcvideo驱动程序存在一个资源管理漏洞。当调用start_streaming()函数尝试启动视频流时,如果因uvc_pm_get()错误导致启动失败,驱动程序未能正确返回已排队的缓冲区。这种逻辑错误可能导致系统在特定工作负载下(如循环使用yavta工具测试视频设备)触发内核警告,甚至导致xHCI控制器崩溃,从而引发系统不稳定或本地拒绝服务。

技术细节

该漏洞位于Linux内核的drivers/media/usb/uvc/uvc_video.c及相关子系统中。在正常的视频流处理流程中,当应用程序请求开始流传输时,内核会调用start_streaming回调。如果在获取电源管理引用(uvc_pm_get)时发生错误,当前的错误处理路径直接返回了错误代码,却忽略了调用vb2_buffer_done()来将缓冲区归还给Videobuf2核心层。这导致缓冲区处于“已排队”但无法被回收的悬空状态。攻击者可以通过本地低权限,利用yavta等工具循环触发设备的开启与关闭操作,不断消耗内核资源或触发死锁检测。最终导致内核打印WARNING日志(videobuf2-core.c:1803),并可能引发USB主机控制器(xHCI)停止响应和设备断开,造成系统崩溃。

攻击链分析

STEP 1
步骤1:获取本地访问权限
攻击者需要拥有目标Linux系统的本地低权限用户访问权限。
STEP 2
步骤2:执行触发脚本
攻击者运行脚本(如提供的PoC),使用yavta工具对视频设备(/dev/video0)进行高频率的流开启和捕获操作。
STEP 3
步骤3:触发漏洞条件
在执行过程中,内核尝试通过uvc_pm_get获取电源管理状态。由于特定硬件或负载条件导致该调用失败,进而触发start_streaming()的错误返回路径。
STEP 4
步骤4:系统崩溃
由于驱动未在错误路径中回收缓冲区,导致资源泄漏或内核断言失败,最终触发WARNING并可能导致xHCI控制器崩溃,实现拒绝服务攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/bin/bash # PoC for CVE-2026-43290 # Description: Trigger the uvcvideo buffer leak by looping video capture attempts. # Requirements: yavta tool, accessible video device (e.g., /dev/video0) while true; do echo "Triggering capture attempt..." # -c3 captures 3 frames yavta -c3 /dev/video0 done

影响范围

Linux Kernel (具体受影响版本需参考Git提交记录修复)

防御指南

临时缓解措施
如果系统不依赖USB视频设备,建议临时禁用或卸载uvcvideo内核模块以规避风险。

参考链接