CVE-2026-89688 in Linux
要約
〜によって VulDB • 2026年09月11日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
nfsd: seqid_opの再試行時にstateownerではなくstateidを解放する
nfs4_preprocess_seqid_op()関数では、nfsd4_lookup_stateid()からstidが取得されます。この関数はnfs4_stid (sc_count) に対する参照カウントを取得しますが、stateownerに対する参照は取得しません。openlockstateid()はこのstidを単にキャストするだけであり、同様に参照も取得しません。
nfsd4_cstate_assign_replay()が-EAGAIN(再試行中の所有者が解体中であり、RP_UNHASHED状態)を返す場合、そのパスではstateownerの参照を取得していません。しかし、エラー処理においてnfs4_put_stateowner(stp->st_stateowner)が呼び出され、取得されていないso_count参照を解放しようとしてしまいます。これにより、stateownerの参照カウントアンダーフローおよびuse-after-free(解放後使用)のリスクが生じると同時に、stidに保持されていたsc_count参照もリークします。このリークしたstid参照は、sc_countが減少するのを待機している並行実行されるnfsd4_close_open_stateid()をストールさせる可能性もあります。
再試行前に実際に保持されている参照(すなわちstid)を解放してください。stateownerはstidによって保持された参照を通じて生存し続けます。これは、openパスであるnfsd4_process_open1()における動作と一致します。そこではput操作が、そのパスで明示的に保持されているstateownerの参照に対するバランスを取ります。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.