CVE-2026-99013 in Linux
要約
〜によって VulDB • 2026年10月23日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
Bluetooth: ISO: 並行するBISリスナー設定を拒否する
iso_sock_listen()は、hdev->lockの順序付けを維持するために、iso_listen_bis()を呼び出す前にソケットロックを解放します。そのため、同じブロードキャストソケットに対して2つの並行したlisten()呼び出しが行われると、両方がBT_BOUND状態を観測することがあります。呼び出し元AがconnAを取り付けてロックを解放した後、呼び出し元Bはそれらのロックを取得して、AがBT_LISTENを公開する前にconnBを取り付けることができます。
__iso_chan_add()はconnBにすでにソケットがあるかどうかをチェックしますが、そのソケットにすでに接続が存在するかまではチェックしません。2回目の取り付けにより iso_pi(sk)->conn が上書きされ、connAの参照リークが発生し、connA->skがそのまま残った状態になります。ソケットの破棄処理はconnBに従って行われるため、後続のconnAに関するイベントでスタレックスポット(使用済みメモリへのアクセス)を引き起こす可能性があります。
iso_listen_bis()においてHCIデバイスロックとソケットロックを両方取得した後にBT_BOUND状態を再チェックし、iso_pi(sk)->connがNULLであることを要求します。この接続チェックは、取り付けからBT_LISTENの公開までの間隔もカバーします。別の接続を割り当てる前に、既存のアンロックパスを通じて競合する設定を -EBADFD で拒否します。
インストルメント化されたカーネルからのKASANレポートには以下が記録されています:
BUG: KASAN: slab-use-after-free in iso_sock_hold+0x119/0x1f0 Call Trace: iso_sock_hold+0x119/0x1f0 iso_conn_del+0xe4/0x270 hci_disconn_complete_evt+0x351/0x8c0 hci_event_packet+0x71b/0xb20 hci_rx_work+0x293/0x730
タスク93によって割り当てられました: sk_prot_alloc+0x113/0x220 sk_alloc+0x2b/0x6d0 bt_sock_alloc+0x29/0x370 iso_sock_alloc.constprop.0+0x19/0x300 iso_sock_create+0x94/0x100
タスク93によって解放されました: kfree+0x121/0x3c0 __sk_destruct+0x42b/0x540 iso_sock_release+0x29d/0x340 __sock_release+0xa1/0x260 sock_close+0x10/0x20
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.