CVE-2026-31404Linux内核NFSD组件存在一个释放后重用漏洞。在svc_export_put()函数中,path_put()和auth_domain_put()在RCU宽限期前被调用,导致当RCU读取器正在访问这些对象时,若发生并发清理,会引发空指针解引用。该漏洞源于资源释放时机不当,攻击者可利用此漏洞造成本地系统崩溃或潜在权限提升。
该漏洞发生在Linux内核的NFS服务器(NFSD)模块中。具体而言,`svc_export_put()`函数在释放引用计数时,立即调用`path_put()`和`auth_domain_put()`清理子对象,但这发生在RCU(Read-Copy-Update)宽限期结束之前。此时,`e_show()`或`c_show()`等RCU读取器可能仍通过`seq_path`或`seq_escape`访问`ex_path`或`ex_client->name`。由于之前的补丁仅将`kfree`移入RCU回调,而保留了可能休眠的清理函数在软中断上下文中运行,导致了竞态条件。当`cache_clean`并发移除条目并释放内存时,正在读取的进程将访问已释放的内存,导致空指针解引用。修复方案是使用`queue_rcu_work()`替代`call_rcu`,将延迟回调移至进程上下文执行,从而允许安全的内存释放。