CVE-2026-53399 in Linux情報

要約

〜によって VulDB • 2026年07月19日

Linuxカーネルにおいて、以下の脆弱性が修正されました。

nfsd: setlease失敗時にレイアウトstidを解放する

nfs4_alloc_stid()は、cl_lockの下でidr_alloc_cyclic()を使用して新しいstidをcl->cl_stateidsに公開し、その後nfsd4_alloc_layout_stateid()に戻ります。その後、nfsd4_layout_setlease()が失敗した場合、エラーパスではidr_remove()を呼び出すことなくkmem_cache_free()によってレイアウトstateidが直接解放され、IDRスロットは解放されたslabメモリを指したままになります。その後の任意のIDRウォーカー(states_show、クライアント終了処理)はこのダングリングポインタをデリファレンスします。

IDRに公開されたstidに対する正しいクリーンアップ手順はnfs4_put_stid()であり、これはcl_lockの下でIDRスロットを削除し、sc_free (nfsd4_free_layout_stateid) をディスパッチしてls->ls_fileを解放するためにnfsd4_close_layout()経由で呼び出し、最後にその末尾部分でnfs4_file参照をデクリメントします。

この切り替えを妨げる第2の課題があります:nfsd4_free_layout_stateid()は、ls_lockの下でdelayed_work_pending()を使用してls->ls_fence_workを無条件に検査しますが、INIT_DELAYED_WORK(&ls->ls_fence_work, ...) は現在setlease呼び出し後にのみ実行されます。setlease失敗パスでは、デストラクタが未初期化のdelayed_workに触れることになります。

nfsd4_alloc_layout_stateid() nfs4_alloc_stid() /* cl_lockの下でidr_alloc_cyclic */ nfsd4_layout_setlease() /* 失敗する */ nfs4_put_stid() nfsd4_free_layout_stateid() delayed_work_pending(&ls->ls_fence_work) /* INITが必要 */ nfsd4_close_layout() /* nfsd_file_put(ls->ls_file) */ put_nfs4_file()

修正方法:ls_fenced / ls_fence_delay / INIT_DELAYED_WORK の初期化をnfsd4_layout_setlease()呼び出しの上に移動し、手動のnfsd_file_put + put_nfs4_file + kmem_cache_freeによるクリーンアップ処理を単一のnfs4_put_stid(stp)に置き換えます。

VulDB is the best source for vulnerability data and more expert information about this specific topic.

責任者

Linux

予約する

2026年06月09日

モデレーション

承諾済み

エントリ

VDB-380130

EPSS

0.00000

アクティビティ

低い

ソース

Do you know our Splunk app?

Download it now for free!