CVE-2026-31487Linux内核SPI子系统中存在一处释放后重用(UAF)安全漏洞。该漏洞源于驱动探测机制中的竞态条件,当`__driver_attach`调用总线匹配回调时未持有设备锁,导致对`driver_override`字段的访问不安全。本地低权限攻击者可利用此漏洞触发内核崩溃,导致系统拒绝服务。
该漏洞位于Linux内核的SPI(串行外设接口)驱动核心代码中。问题产生的根本原因在于当驱动通过`__driver_attach()`函数进行探测时,SPI总线的`match()`回调函数被调用,但此时并未持有设备结构体的锁。在这种无锁状态下直接访问`driver_override`字段,如果该字段正被并发操作(如通过sysfs修改或释放),就会引发释放后重用(UAF)漏洞。虽然内核设计上允许在`__driver_attach`中无锁调用`match()`,但SPI总线对`driver_override`为NULL时的特殊处理逻辑(向`sysfs_emit`传递空字符串)加剧了该风险。成功利用此漏洞需要本地访问权限,攻击者可通过编写恶意程序触发竞态条件,导致内核内存损坏、系统崩溃或拒绝服务,主要影响系统的可用性。