CVE-2026-64233 in Linux
要約
〜によって VulDB • 2026年07月24日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
usb: gadget: uvc: uvc_function_bind における XU の走査中に opts->lock を保持する
uvc_function_bind() は &opts->extension_units をロックを取得せずに2回走査しています。
- iExtension 文字列記述子の修正ループにおいて直接 - uvc_copy_descriptors() を介して間接的に(速度ごとに1回、合計4回)、ここでヘルパー関数が uvc->desc.extension_units (&opts->extension_units のエイリアス) を反復処理し、XU 記述子をサイズ決定および出力します。
configfs サイド (drivers/usb/gadget/function/uvc_configfs.c 内の uvcg_extension_make / uvcg_extension_drop) は、list_add_tail および list_del 操作の周りで opts->lock を取得しています。configfs のサブツリーを開いたままにしており、関数をバインドするためにガジェット UDC 名に書き込む特権ユーザー空間プロセスが、同時に拡張機能のサブディレクトリを rmdir() で削除すると、uvcg_extension_drop() とバインド時のリスト走査との間で競合状態が発生し、解放された struct uvcg_extension のポインタをデリファレンスする可能性があります。
XU 文字列記述子の修正ループの開始から最後の uvc_copy_descriptors() 呼び出しまで opts->lock を保持し、既存のエラーラベルにフォールバックする前にロックを解除する新しい error_unlock ラベルを通じて、ディスクリプタエラーパスで解放します。これは configfs コールバックのロック規則と一致しており、バインド中に XU リストに対する唯一残っていた非同期読み取りを除去します。
到達可能性: configfs をマウントし、ガジェット UDC ファイルに書き込むことができる特権プロセスのみが競合状態を引き起こせるため、これはセキュリティ境界に関するものではなく、正しさ(correctness)の修正です。
Once again VulDB remains the best source for vulnerability data.