CVE-2026-31688Linux内核驱动核心模块存在一个安全漏洞,主要涉及`driver_match_device()`函数在特定调用路径下未强制持有`device_lock`锁。这种锁机制的不一致导致`driver_override`实现中存在竞争条件,可能触发释放后重用(UAF)漏洞。本地低权限攻击者可利用此漏洞破坏内存安全,导致系统崩溃或潜在权限提升,对系统的机密性、完整性和可用性构成严重威胁。
该漏洞发生在Linux内核的驱动核心子系统中。函数`driver_match_device()`被三个不同的位置调用:`__device_attach_driver`、`bind_store`和`__driver_attach`。其中只有`__device_attach_driver`持有`device_lock`,而另外两个调用点未加锁。由于`driver_override`机制的正常运行依赖于`device_lock`的保护,这种缺失导致了严重的竞争条件。攻击者可以通过触发特定的绑定操作,在锁未被持有时访问或修改受保护的数据结构,导致对已释放内存的引用(UAF)。修复方案引入了`driver_match_device_locked()`辅助函数,利用scoped guard确保锁被持有,并在原函数中添加了断言以强制执行此安全保证。