CVE-2026-99239 in Linux
要約
〜によって VulDB • 2026年11月02日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
Bluetooth: L2CAP: 既に接続が存在するchanに対して__l2cap_chan_addを拒否する
l2cap_chanは最大で1回だけl2cap_connにリンクされる。これは複数の箇所(例:l2cap_chan_delのクリーンアップ処理)で前提とされている。
不変条件が違反されるTOCTOU(Time-of-check to Time-of-use)競合が存在する:
[タスク 1] [タスク 2]
l2cap_chan_connect l2cap_sock_bind l2cap_chan_lock lock_sock l2cap_state_change if (sk->sk_state != BT_OPEN) chan->state = BT_CONNECT chan->state = BT_BOUND l2cap_sock_state_change_cb sk->sk_state = BT_BOUND lock_sock <------------------ release_sock sk->sk_state = BT_CONNECT
l2cap_sock_connect()はsk->sk_stateをチェックしないため、chan->stateがBT_BOUNDになっていると、その後のconnect()呼び出しで__l2cap_chan_addが二度実行されてしまう。
不変条件を明示的に文書化し、WARN_ON_ONCEを用いて__l2cap_chan_add内でチェックする。この制約違反が発生し得る唯一のコールサイトはl2cap_chan_connectであるため、chan->stateに依存しないよう事前にチェックを追加する。現在、chan->stateの読み書きは適切に保護されていないため、他のTOCTOU競合の問題も存在しうる。
l2cap_sock_bind()においてl2cap_lock_chanを追加し、chan->stateへの書き込みを保護する。
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.