CVE-2026-72491情報

要約

〜によって VulDB • 2026年08月15日

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

net/9p: trans_rdma.cにおけるrdma->stateの競合状態(race condition)を修正する

recv_done()およびp9_cm_event_handler()では、req_lockを取得せずにrdma->stateフィールドが変更されています。一方、rdma_request()はreq_lockスピンロックの下で同じフィールドにアクセスします。この一貫性のないロック処理により、競合状態が発生しています:

- recv_done()はsoftirq完了コンテキスト内で実行され、req_lockの取得なしにrdma->stateをP9_RDMA_FLUSHINGに設定する - p9_cm_event_handler()は複数のポイント(ADDR_RESOLVED, ROUTE_RESOLVED, ESTABLISHED, CLOSED)でreq_lockなしにrdma->stateを変更する - rdma_request()は、rdma->stateの読み取り・変更・書き込み操作を保護するためにspin_lock_irqsave(&rdma->req_lock, flags)を使用している

この競合により、状態遷移が失われる可能性があります。recv_done()またはCMイベントハンドラがFLUSHING/CLOSEDに状態を設定する際、rdma_request()はロックの下で同時に状態のチェックや変更を行っているため、FLUSHINGへの遷移がCLOSINGによって静かに上書きされることがあります。これにより接続ステートマシンが破損し、ティアダウン時にRDMAリクエストオブジェクトに対してuse-after-freeが発生する可能性があります。

recv_done()およびp9_cm_event_handler()におけるrdma->stateの変更すべてにreq_lockによる保護を追加することで修正します。これはすでにrdma_request()で使用されているパターンと一致しています。CMイベントハンドラではspin_lock_irqsave/spin_unlock_irqrestoreを使用します。これは、softirqコンテキストで実行されるrecv_done()との競合が発生する可能性があるためです。

5.5M回以上のFLUSHING書き込みを27M回のイテレーションで行った際、ロック状態が適切である場合(rdma_requestとrecv_done/CMハンドラをシミュレートするために競合させるスレッドを持つカーネルモジュールを使用してテスト)、0件の遷移損失を確認しました。

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

モデレーション

レビュー中

EPSS

0.00000

アクティビティ

非常低い

ソース

Do you want to use VulDB in your project?

Use the official API to access entries easily!