CVE-2026-31651Linux内核中的vub300驱动程序存在一个安全漏洞,该漏洞源于设备断开连接时的处理逻辑错误。在断开连接过程中,驱动程序未能正确处理控制器注销与数据引用释放的顺序,导致在释放驱动数据引用之前未注销控制器,从而可能引发空指针解引用或释放后重用(Use-After-Free)。攻击者利用此漏洞需要本地低权限访问权限,且无需用户交互。成功利用该漏洞可能导致系统崩溃、内核恐慌或拒绝服务,严重影响系统的可用性。该漏洞主要影响使用vub300驱动的Linux系统,建议用户尽快应用官方补丁以修复此缺陷。
该漏洞位于Linux内核的`drivers/mmc/host/vub300.c`驱动文件中,具体涉及USB设备断开连接时的资源释放流程。当VUB300设备从系统中移除时,`vub300_disconnect`函数会被调用。漏洞的根本原因在于代码执行顺序不当:驱动程序在调用`kref_put`释放对驱动数据结构的引用之前,未能确保通过`mmc_remove_host`或类似机制完全注销控制器。这种逻辑缺陷导致了一个竞态窗口,即控制器对象可能已经被释放,但系统仍试图访问其内部函数指针或数据结构,从而触发内核空指针解引用异常。此外,不当的内存管理还可能导致释放后重用(UAF)漏洞,进一步危及系统安全。由于攻击向量为本地(AV:L)且所需权限较低(PR:L),本地攻击者可以通过物理拔除设备或通过软件模拟USB设备断开事件(如通过sysfs卸载驱动)来触发该漏洞。虽然主要影响是可用性(A:H),即导致系统崩溃或拒绝服务,但在特定条件下,结合其他内核漏洞,此类内存破坏问题可能被进一步利用以提升权限或泄露敏感信息。修复该漏洞的关键在于调整代码顺序,确保在释放任何关键数据引用之前完全注销控制器。