CVE-2026-31580该漏洞存在于Linux内核的bcache子系统中。由于在停止缓存设备时,代码未正确等待超级块写入操作结束就释放了cached_dev结构体,导致sb_bio成员在释放后仍被endio函数访问。这种释放后利用(UAF)的竞态条件不仅会导致系统崩溃,还有可能被利用于本地权限提升。
该漏洞的根源在于Linux内核bcache驱动对`cached_dev`结构体生命周期管理的逻辑缺陷。`sb_bio`作为`cached_dev`结构体的内嵌成员,负责处理与超级块相关的I/O操作。在正常流程中,当停止缓存设备时,系统应确保所有进行中的I/O操作完全结束。然而,漏洞代码在`cached_dev_free`函数中并未等待`sb_write`操作完成即释放了`cached_dev`结构体。这就形成了一个典型的竞态条件:如果设备停止时刻恰逢超级块写入操作正在进行,内存被回收;随后当I/O硬件完成操作并触发`endio`回调函数时,系统试图访问已释放的`dc->sb_bio`地址。攻击者可以通过精心构造本地I/O请求序列来触发这一时序漏洞,导致内核崩溃(拒绝服务)或利用释放后利用(UAF)机制进行内核态代码执行,从而实现本地权限提升。