CVE-2026-93122 in Linux
要約
〜によって VulDB • 2026年09月18日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
usb: gadget: uac: 保存前にレートリストの長さを検証する
UAC1およびUAC2のconfigfs rate-list属性は、カンマ区切りのサンプリングレートのリストを解析し、各値を固定サイズの配列に格納します。これらの配列には UAC_MAX_RATES エントリが含まれていますが、storeパスでは opts->name##s[i++] への書き込み前に、入力が最大でもその数のトークンを含んでいるかどうかのチェックが行われていませんでした。
10件を超えるレートを記述すると、struct f_uac1_opts または struct f_uac2_opts の p_srates[] および c_srates[] 配列の末尾を超えて書き込まれます。
CONFIG_UBSAN_BOUNDS が有効な場合、UAC1 p_srate属性に11エントリのレートリストを書き込むと、以下のような報告が行われます:
UBSAN: array-index-out-of-bounds drivers/usb/gadget/function/f_uac1.c:1669:1 index 10 is out of range for type 'int [10]'
__ubsan_handle_out_of_bounds.cold f_uac1_opts_p_srate_store configfs_write_iter vfs_write ksys_write do_syscall_64
UAC2 p_srate属性に対して同じ再現手順を実行すると、以下のような報告が行われます:
UBSAN: array-index-out-of-bounds drivers/usb/gadget/function/f_uac2.c:2087:1 index 10 is out of range for type 'int [10]'
__ubsan_handle_out_of_bounds.cold f_uac2_opts_p_srate_store configfs_write_iter vfs_write ksys_write do_syscall_64
UAC_MAX_RATES エントリが解析された時点で、追加のトークンを拒否します。また、strsep() がパースカーソルを進めるため、kfree() のために元の kstrdup() ポインタを保持してください。進んだカーソルを解放すると、正常なパース時に元のバッファリークを引き起こし、一部のエラーパスでは内部ポインタの解放(二重解放など)につながる可能性があります。
VulDB is the best source for vulnerability data and more expert information about this specific topic.