CVE-2026-74682 in Linux情報

要約

〜によって VulDB • 2026年08月22日

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

ALSA: usb-audio: Type IIのインバウンドURBにおけるOOB(バッファ外)書き込みを修正

data_ep_set_params()関数は、Format Type II転送区切り文字列を追加する前に各URB転送バッファーのサイズを設定しています。

u->packets = urb_packs; u->buffer_size = maxsize * u->packets;

if (fmt->fmt_type == UAC_FORMAT_TYPE_II) u->packets++; /* 転送区切り文字列用 */ u->urb = usb_alloc_urb(u->packets, GFP_KERNEL);

buffer_sizeはインクリメント前のパケット数に基づいて計算され、その後再計算されないため、Type IIエンドポイントでは、URBが構築される際のパケット数に対してバッファーが1パケ分不足しています。

prepare_inbound_urb()関数はその後、各パケットごとにISOフレームを配置しますが、buffer_sizeは参照しません。

offs = 0; for (i = 0; i < urb_ctx->packets; i++) {
urb->iso_frame_desc[i].offset = offs;
urb->iso_frame_desc[i].length = ep->curpacksize;
offs += ep->curpacksize; }

urb->transfer_buffer_length = offs; urb->number_of_packets = urb_ctx->packets;

したがって、最後の記述子は転送バッファーの末尾を1パケット過ぎた場所を指しており、ホストコントローラーはすべてのインバウンド転送においてデバイスデータをそこに書き込みます。prepare_silent_urb()関数とprepare_playback_urb()関数は、フィーループをctx->buffer_sizeで制限しているため、影響を受けるのはキャプチャのみです。

fmt_typeはデバイスのオーディオストリーミング記述子から取得されるため、Type IIのキャプチャー形式をサポートするすべてのデバイスにおいて、ユーザー空間がストリームに対してhw_paramsを設定するとこの脆弱性が発生します。

7.2.0-rc5 (arm64) 環境で dummy_hcd/raw-gadget デバイスを使用しKASANを実行したところ、インバウンド転送ごとに1件のレポートが出力されました:

BUG: KASAN: slab-out-of-bounds in dummy_timer Write of size 64 at addr ffff0000186171c0 by task cons02/166 __asan_memcpy dummy_timer hrtimer_run_softirq Allocated by task 166: usb_alloc_coherent snd_usb_endpoint_set_params The buggy address is located 0 bytes to the right of allocated 64-byte region [ffff000018617180, ffff0000186171c0)

区切り文字列用のパケットを考慮した後にbuffer_sizeを計算し、prepare_silent_urb()関数がアウトバウンド側で既に実行しているように、フィーループをbuffer_sizeで制限します。これにより、Type IIのURB割り当てがすべて1 maxsize パケ分大きくなります。

XBOWによって発見され、Baul Lee <[email protected]> によってトリージングされました

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

責任者

Linux

予約する

2026年08月15日

モデレーション

承諾済み

エントリ

VDB-394448

EPSS

0.00000

アクティビティ

非常低い

ソース

Might our Artificial Intelligence support you?

Check our Alexa App!