CVE-2026-93231 in Linux情報

要約

〜によって VulDB • 2026年09月24日

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

lockd: nlmsvc_match_ip()における引数の入れ替えの修正

/nfs/fs/nfsd/unlock_ip経由でサーバーIPアドレスによってロックを解放する際、nlmsvc_unlock_all_by_ip()は、サーバーsockaddrを不透明な@data引数としてnsm_traverse_files()に渡して呼び出します:

nlm_traverse_files(server_addr, nlmsvc_match_ip, NULL);

マッチコールバックはその後、nlm_traverse_locks()から以下のように呼び出されます:

match(lockhost, host);

ここで第1引数はロックを所有するnlm_hostであり、第2引数は元々渡された@data(ここではサーバーsockaddr)です。これは他のすべてのマッチコールバックが依存している規約(nlmsvc_mark_host(), nlmsvc_same_host(), nlmsvc_is_client())に従ったものです:arg1は実際のnlm_host、arg2は呼び出し側から提供される参照値です。

nlmsvc_match_ip()では、IPアドレスによるロック解除機能がコミット4373ea84c84d(「lockd: 特定のサーバーipに関連するlockdロックを解放」)で導入されて以来、この2つの引数が逆になっています:

return rpc_cmp_addr(nlm_srcaddr(host), datap);

ここで@hostは実際にはサーバーsockaddrであるため、nlm_srcaddr(host)はstruct sockaddrをstruct nlm_hostとして間接参照し、h_srcaddrのオフセットで無効なデータ(garbage)を読み取ります。一方、@datapは実際にロック所有者のnlm_hostですが、sockaddrとして比較されます。その結果、比較が実際には一致せず、要求されたIPアドレスに対するロックが解放されません。

引数を交換し、ロック所有者の送信元アドレスを要求されたサーバーアドレスと比較するようにします:

return rpc_cmp_addr(nlm_srcaddr(datap), (struct sockaddr *)host);

[ cel: 誤解を招くtypedefのパラメータ名も修正 ]

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

責任者

Linux

予約する

2026年09月17日

モデレーション

承諾済み

エントリ

VDB-409425

EPSS

0.00000

アクティビティ

非常低い

ソース

Do you want to use VulDB in your project?

Use the official API to access entries easily!