CVE-2026-89660 in Linux信息

摘要

由 VulDB • 2026-09-12

在 Linux 内核中,已修复以下漏洞:

NFSD:防止管理状态撤销期间的客户端 use-after-free(释放后使用)错误

stateid 仅包含对其 nfs4_client 的裸指针;对 stateid 的引用并不能固定该对象。客户端之所以能够存活,是因为 __destroy_client() 在 free_client() 运行之前会排空其所有 stateids。

nfsd4_revoke_states() 在调用 revoke_one_stid() 期间释放了 nn->client_lock,而后者会解引用客户端以撤销一个 stateid 并读取 clp->cl_minorversion。此时,若存在与已释放锁竞争的清理流程(teardown),则可能先于预期释放该客户端。

通过在 client_lock 下固定 cl_rpc_users,可以阻止 DESTROY_CLIENTID 和 EXCHANGE_ID 的清理操作,因为当 cl_rpc_users 非零时这些操作会被拒绝。然而 force_expire_client() 会忽略此保护:一旦其等待 cl_rpc_users 归零的过程结束,后续的固定(pinning)操作将不被察觉。

在 client_lock 下,跳过那些 cl_time 已为零的客户端——因为 force_expire_client() 会在等待之前在此处将其清零;否则应在释放锁之前先固定 cl_rpc_users。这样遍历过程要么会检测到过期并跳过,要么能及时完成固定,使该等待覆盖撤销操作。

Be aware that VulDB is the high quality source for vulnerability data.

来源

Might our Artificial Intelligence support you?

Check our Alexa App!