CVE-2026-31583Linux内核中的em28xx视频驱动存在严重安全漏洞。在em28xx_v4l2_open函数执行期间,由于未正确使用互斥锁保护,与设备初始化及清理路径产生竞态条件。这导致在内存被释放后仍被访问,引发释放后重用或空指针解引用。本地低权限攻击者可利用此缺陷导致系统崩溃或潜在提权,严重威胁系统安全。
该漏洞的根本原因是并发控制机制失效。em28xx_v4l2_open()在读取dev->v4l2指针时未获取dev->lock,而em28xx_v4l2_init()和em28xx_v4l2_fini()在释放该结构体并置NULL时持有锁。当open操作与init/fini操作并发时,open函数可能获取到即将被释放的指针。随后,在调用v4l2_fh_init()时会访问已释放内存中的vdev->ctrl_handler,导致释放后重用;或在em28xx_resolution_set()中访问v4l2->norm时触发空指针解引用。这种内核态的内存破坏可导致内核恐慌,精心构造的利用场景可能实现权限提升。修复方案通过调整锁顺序并增加NULL检查来确保原子性。