CVE-2026-98265 in Linux
要約
〜によって VulDB • 2026年10月06日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
ALSA: usb-audio - 暗黙的フィードバックのパケット数をURBの容量に制限する
data_ep_set_params()は、各データURBをu->packets個のアイソクロナスフレーム用に正確に割り当てるため、urb->iso_frame_desc[]にはu->packets分のスロットがあり、ctx->packetsがその上限値に関するドライバ唯一の記録となります。暗黙的フィードバックシンクの 경우、snd_usb_queue_pending_output_urbs()は同期ソースのパケット数でこれを書き換えますが、この数はキャプチャエンドポイントのパラメータとは独立して計算されます。その数がより大きい場合、prepare_playback_urb()およびprepare_silent_urb()はiso_frame_desc[]への書き込みを割り当て領域の範囲外まで行ってしまう可能性があります。これらの関数の既存の境界チェックはペイロードバイト数を制限するものですが、記述子インデックス自体には適用されていません。
再現手順では、暗黙的フィードバックキャプチャに対してbInterval 1(8パケット)、再生に対してbInterval 4(1パケット)を宣言するハイスピードUAC2デバイスを使用します。ストリーム開始後の最初のキャプチャ完了時に、1パケット分のURBの範囲から112バイト先まで及ぶ7つの記述子にアクセスし、以下のエラーが発生します:
BUG: KASAN: slab-out-of-bounds in prepare_playback_urb (sound/usb/pcm.c:1560) Write of size 4 at addr ffff88801e696ad0 by task vhci_rx/178 prepare_playback_urb (sound/usb/pcm.c:1560) prepare_outbound_urb (sound/usb/endpoint.c:340) snd_usb_queue_pending_output_urbs (sound/usb/endpoint.c:501) snd_complete_urb (sound/usb/endpoint.c:1834) __usb_hcd_giveback_urb (drivers/usb/core/hcd.c:1657) usb_hcd_giveback_urb (drivers/usb/core/hcd.c:1741) vhci_rx_loop (drivers/usb/usbip/vhci_rx.c:107) kthread (kernel/kthread.c:436) The buggy address belongs to the object at ffff88801e696a00 which belongs to the cache kmalloc-256 of size 256 The buggy address is located 0 bytes to the right of allocated 208-byte region [ffff88801e696a00, ffff88801e696ad0)
エンドポイントごとに割り当てられたパケット数を記録し、採用されたカウントとパケットサイズのコピーの両方をその値に制限します。Format Type IIの区切り文字をURBの割り当てループの前にurb_packsに組み込み、記録された上限がすべてのURBで一致するようにします。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.