CVE-2026-22989CVE-2026-22989是Linux内核中nfsd组件的一个本地拒绝服务漏洞,CVSS评分为5.5(中危)。该漏洞存在于unlock_filesystem函数中,当管理员尝试通过管理接口解锁文件系统时,如果nfsd服务未运行,系统会发生崩溃。根本原因在于nfsd4_revoke_states()函数试图访问在服务器关闭过程中已被释放的状态结构(如conf_id_hashtbl),导致空指针解引用或使用已释放内存的严重错误。此漏洞需要低权限用户即可触发,无需用户交互,攻击复杂度低。虽然不影响机密性和完整性,但会对系统可用性造成严重影响,导致服务器崩溃或服务中断。
该漏洞的技术根源在于nfsd服务状态管理的不当处理。在Linux内核的nfsd组件中,unlock_filesystem函数负责解锁文件系统,其实现中调用了nfsd4_revoke_states()函数来撤销NFSv4状态。然而,当nfsd服务已经停止运行时,相关状态结构(如conf_id_hashtbl等哈希表)已经被释放。此时如果调用unlock_filesystem,系统会尝试访问这些已释放的内存区域,导致内核崩溃。从提供的调用栈可以看出,崩溃路径为:write_unlock_fs -> nfsd4_revoke_states -> 访问已释放的conf_id_hashtbl。修复方案需要在调用nfsd4_revoke_states()之前获取nfsd_mutex互斥锁,并检查服务器是否仍在运行,同时在整个调用过程中持有该互斥锁,以防止竞态条件和确保状态结构不会被释放。这是一个典型的本地特权升级导致的拒绝服务漏洞,攻击者可以通过特定的操作序列触发此漏洞。