CVE-2026-89968 in Linux情報

要約

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

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

nvmet-tcp: 要求されていない H2CData PDU を拒否する

nvmet_tcp_handle_h2c_data_pdu() は、TTAG が有効な範囲内のコマンドインデックスであり、かつそのコマンドのデータバッファがマップされていることのみをチェックした後に、H2CData PDU を受け入れます。ターゲット側が R2T(Ready To Transfer)を送信して実際にデータを要求していたかどうかはチェックされません。

リモートホストはこの点を悪用できます。R2T パスを取る書き込みコマンドを提出し、ターゲットが R2T を送信する前に、そのコマンドのタグに対応する H2CData PDU を送信します。データによりコマンドが早期に完了しますが、その後コマンドが同期的に失敗した場合(例:nvmet_check_transfer_len() で検出される長さの不整合)、再度完了処理が行われます。各完了処理で nvmet_tcp_queue_response() が呼び出されるため、同じコマンドがリンクされたままの状態で queue->resp_list に2回追加されます。2回目の llist_add() によりノードが自身を指すようになり(lentry->next == lentry)、自己参照状態となります。

その後、nvmet_tcp_process_resp_list() がこの自己参照ノードを走査し、コマンドを resp_send_list に2回追加します。CONFIG_DEBUG_LIST を有効にしている場合、「list_add double add」チェックがトリガーされ(カーネル BUG 発生)、無効化されている場合はループが終了せず nvmet_tcp ワークキューがハングアップします(ソフトロックアップ)。これはリモートからトリIGGER可能であり、allow_any_host サブシステム上では認証不要で攻撃可能です。

コマンドに対して R2T が送信されたかどうかを追跡し、R2T の前に到着した H2CData PDU を拒否するようにしました。このフラグはコマンドの再利用時にクリアされ(nvmet_tcp_get_cmd() で cmd->flags がゼロに設定)、単一の要求済み転送における複数の H2CData PDU にわたってセットされたままになります。

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

責任者

Linux

予約する

2026年09月11日

モデレーション

承諾済み

エントリ

VDB-405782

EPSS

0.00000

アクティビティ

非常低い

ソース

Want to know what is going to be exploited?

We predict KEV entries!