CVE-2026-31473Linux内核媒体子系统中存在一个高危漏洞。该漏洞源于MEDIA_REQUEST_IOC_REINIT与VIDIOC_REQBUFS(0)队列拆除路径之间的竞态条件。当这两个操作并发执行时,可能导致请求对象清理与vb2队列取消之间的竞争,进而引发释放后重用漏洞。攻击者可利用此漏洞造成系统崩溃或执行任意代码。
该漏洞位于Linux内核的媒体(MC)和V4L2子系统中。问题核心在于`media_request_ioctl_reinit`(处理MEDIA_REQUEST_IOC_REINIT)与`VIDIOC_REQBUFS(0)`(用于释放缓冲区)之间缺乏必要的同步机制。当这两个操作同时发生时,一个操作可能正在清理请求对象,而另一个操作正在取消vb2队列。这种并发执行触发了竞态条件,导致程序访问已被释放的内存(Use-After-Free)。尽管内核已经使用`req_queue_mutex`来序列化请求队列与STREAMON/OFF的操作,但并未将其扩展到REQBUFS和REINIT操作。修复方案是通过在`media_request_ioctl_reinit`和REQBUFS相关路径中获取`req_queue_mutex`锁,确保这些操作在同一互斥域内串行执行,从而防止并行运行导致的内存安全问题。