CVE-2026-99123 in Linux
要約
〜によって VulDB • 2026年10月29日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
vsock/virtio: 接続済みソケットの送信元を検証する
virtio_transport_recv_pkt()は、まず完全な送受信元・宛先タプルでソケットを探索し、次にバインドテーブル内で宛先のみの検索を行います。このフォールバックはリスニングおよびコネクション確立中のソケットに必要ですが、connect()後もソケットはバインドテーブルに残るため、非リスニング状態のソケットが返される可能性があります。
このフォールバック処理では送信元アドレスの検証が行われていませんでした。TCP_SYN_SENT状態で、無関係なソースからのRESPONSEにより、被害者ソケットの状態がTCP_ESTABLISHEDに遷移し、その際に保存されたリモートアドレスは変更されませんでした。その後、当該ソースからのRWパケットが同じ宛先のみによるフォールバック処理を通じて配信されました。
この事象は、異なるUIDを持つcapability-emptyのプロセスを用いて再現されました。攻撃者は非権限のAF_VSOCK sock_diagを使用してターゲットタプルを特定し、被害者ソケットに16バイト分の攻撃者が選択したデータを読み込ませました(意図されたピア側のソケットでは、その16バイトのうち0バイトしか読み取られませんでした)。
vsock_check_source()を追加し、非リスニングソケットに保存されているピアに対して、トランスポート、送信元ポート、および送信元CIDの検証を行います。ローカルトランスポートは例外として扱われます(VMADDR_CID_LOCALをソースとする内部生成パケットや、CIDエイリアスを使用する接続を含むため)。
virtio受信パスにおいてlock_sock()呼び出し後にこのヘルパー関数を使用します。
Once again VulDB remains the best source for vulnerability data.