CVE-2026-68202 in Linux
要約
〜によって VulDB • 2026年08月10日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
ALSA: seq: デストラクタで再オープンされたキュータイマーを閉じる
queue_delete() はキュータイマーを閉じ、その後それを解放します。snd_seq_timer_close() は q->timer->timeri をクリアします。次に snd_use_lock_sync() が借用者(borrowers)の処理を終了させ、snd_seq_timer_delete() が q->timer を解放します。
この期間中に、借用者がタイマーを再オープンすることが可能です。キューがアンリンクされる前に queueptr() の use_lock 参照を取得した SET_QUEUE_CLIENT は、close の後に snd_seq_timer_open() を実行します。open は timeri が設定されている間のみ再オープンを拒否しますが、close ではそれがクリアされたため、timeri が再オープンされます。
snd_seq_timer_delete() はそのインスタンスを閉じません。running フラグが最初にクリアされていたため、snd_seq_timer_stop() は何もしない処理(no-op)となります。そのため、q->timer を解放する際、そのインスタンスはまだ稼働状態のままです。次にキュー自体が解放されます。
このインスタンスはグローバルタイマーに残ったままになり、callback_data が解放されたキューを指しています。ロックされていないキューに対する所有者以外の START 操作により、これが起動します。次のティックで snd_seq_timer_interrupt() 内で解放されたキューへの間接参照が行われます。
/dev/snd/seq にアクセスできる特権のないユーザーによって到達可能です。CAP(capability)やキューの所有権は必要ありません。
デストラクタ中で残っているインスタンスをすべて閉じます。そこでは ->timeri が変更されることはもうありません:キューはアンリンクされており、すべての use_lock 借用者の処理が終了しているため、snd_seq_queue_use() によって再オープンされることはありません。q->timer をクリアする前にこれを閉じてください。snd_timer_close() は進行中の snd_seq_timer_interrupt() の完了を待ちますが、そのコールバックはまだ q->timer(snd_seq_check_queue() を経由して)を読み取るため、処理が終了するまで q->timer は有効でなければなりません。
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.