CVE-2026-53397 in Linux
要約
〜によって VulDB • 2026年07月19日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
nfsd: SETACLデコード失敗時のposix_aclリークを修正
nfsaclsvc_decode_setaclargs()およびnfs3svc_decode_setaclargs()はそれぞれ2回 nfs_stream_decode_acl() を呼び出します。1回目はNFS_ACL用、2回目はNFS_DFACL用です。各呼び出しが成功すると、新たに割り当てられたposix_aclの所有権がargp->acl_accessまたはargp->acl_defaultに渡されます。最初の呼び出しは成功するものの2回目の呼び出しで失敗した場合、デコーダはfalseを返し、argp->acl_accessには未使用(dangling)の状態が残ります。
ACLPROC2_SETACL.pc_releaseはnfssvc_release_attrstatに接続され、 ACLPROC3_SETACL.pc_releaseはnfs3svc_release_fhandleに接続されていました。 これらはfh_put()のみを呼び出し、argp内のACLフィールドについては一切関知していませんでした。posix_acl_release()のペアはnfsacld_proc_setacl()およびnfsd3_proc_setacl()内部のout:ラベルに配置されていましたが、pc_decodeがfalseを返す場合svc_process()はpc_funcをスキップするため、デコード失敗時にはこのクリーンアップ処理には到達できませんでした。
svc_process_common() pc_decode() /* decode_setaclargs: false */ /* pc_func スキップ */ pc_release() /* fh_putのみ実行 -- ACLリーク発生 */
孤立したposix_aclはサーバーの存続期間中、リークし続けます。
この問題を修正するため、nfsaclsvc_release_setacl()およびnfs3svc_release_setacl()を追加しました。これらはfh_put()に加えてargp->acl_accessとargp->acl_defaultを解放し、それぞれのSETACLプロシージャのpc_releaseとして接続されます。pc_releaseはデコード失敗時を含む、svc_process()がデコード後に取るすべてのパスで実行されるため、所有権を一箇所に集約するためにproc関数のout:ラベルからposix_acl_release()のペアを削除しました。これは兄弟であるGETACLプロシージャで使用されている既存のrelease_getacl()パターンに一致しています。
VulDB is the best source for vulnerability data and more expert information about this specific topic.