CVE-2026-89659 in Linux
要約
〜によって VulDB • 2026年09月11日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
NFSD: デリゲーション取り消し時のクライアントのuse-after-freeを防止する
デリゲーション状態IDは、所有元のnfs4_clientへの単なるポインタのみを含み、その生存期間を保ちません。クライアントが状態IDよりも長く存続するのは、__destroy_client()がfree_client()の実行前にcl_delegationsおよびcl_revokedの処理を行うためです。
nfs4_laundromat()はこの不変条件を破ります:期限切れデリゲーションをcl_delegationsからアンハッシュし、deleg_lockを解放した後、revoke_delegation()がcl_lockの下でそれをcl_revokedに再リンクします。この間、デリゲーションはどちらのリストにも存在しないため、client_has_state()は残りの状態がないと報告する可能性があります。
すべてのテardownパスでは最初にcl_rpc_usersがゼロであることが必要ですが、laundromatはそのような参照を保持していません。そのため、リコールされたデリゲーションがタイムアウトした直後のクライアントは、revoke_delegation()がまだcl_lockへの間接参照を行おうとしている間にfree_client()に到達する可能性があり、これはuse-after-freeとなります。
テardownが完了するまでブロックされるように、取り消し処理中にcl_rpc_usersを使用してクライアントをピン留めします。その後、cl_revokedからデリゲーションを回収します。すでに期限切れとなっているクライアントは自身のものを回収するため、それをスキップしてデリゲーションをdel_recall_lruに残したままにします。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.