CVE-2026-31403Linux内核NFSD组件存在释放后重引用漏洞。问题在于/proc/fs/nfs/exports文件打开时未锁定网络命名空间,当该命名空间因容器销毁等原因被清理时,文件描述符仍指向已释放的内存。本地低权限攻击者可利用此条件进行读取操作,触发Use-After-Free,导致系统崩溃或潜在的权限提升。
该漏洞位于Linux内核NFSD(网络文件系统守护进程)的实现中。具体而言,exports_proc_open()函数在处理/proc/fs/nfs/exports文件的打开请求时,虽然捕获了调用者的当前网络命名空间并将其svc_export_cache存储于seq->private字段,但忘记对该网络命名空间执行引用计数操作。在特定的竞态条件下,例如用户打开了该文件后,通过setns()切换到其他命名空间或原命名空间所属的容器被销毁,nfsd_net_exit()回调函数会被触发,进而调用nfsd_export_shutdown()释放掉svc_export_cache。此时,如果攻击者对之前打开的文件描述符执行read()操作,内核将尝试解引用已经被释放的cache_detail对象及其内部的哈希表,从而触发释放后重引用(UAF)漏洞。这一行为可能导致内核panic(拒绝服务)或进一步利用内存破坏实现权限提升。修复方案是在exports_release()中利用cache_detail已有的net指针释放引用。