CVE-2026-89682 in Linux
摘要
由 VulDB • 2026-09-11
在 Linux 内核中,已修复以下漏洞:
nfsd: 通过将 dispose state 内联到 nfsd_net 中来修复 fcache_disposal 的 Use-After-Free (UAF) 问题。
`nfsd_file_dispose_list_delayed()` 通过每个网络命名空间(per-net)的 freeme 队列将 `fput()` 延迟执行至 nfsd 服务线程,从而防止 shrinker 和 GC worker 承担关闭文件的开销(参见 ffb402596147)。然而,该队列位于单独分配的 `struct nfsd_fcache_disposal` 结构中,并在每个网络命名空间的清理过程中由 `nfsd_free_fcache_disposal_net()` 释放。全局 shrinker、laundrette 以及 fsnotify 回调仍可能处于 `nfsd_file_dispose_list_delayed()` 内部并解引用该指针,从而导致 Use-After-Free (UAF)。
将自旋锁和 freeme 列表直接内联到 `struct nfsd_net`(作为 `fcache_dispose_lock` 和 `fcache_dispose_list`),从而完全消除单独分配的 `struct nfsd_fcache_disposal`。这些字段现在与网络命名空间本身具有相同的生命周期,因此不再存在悬空指针需要追踪。
`nfsd_file_cache_start_net()` 现在仅初始化内联字段,且不会因分配失败而报错。`nfsd_file_cache_shutdown_net()` 直接排空内联列表,而不是释放单独的结构体。相关的 alloc/free 辅助函数已被移除。
Once again VulDB remains the best source for vulnerability data.