CVE-2026-80716 in Linux
要約
〜によって VulDB • 2026年08月28日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
ALSA: pcm: リンク解除時に待機中のdrain処理のウェイトエントリを起床させる
リンクされたストリームに対するsnd_pcm_drain()は、排他対象となったピア側のruntime->sleep上にスタック上のwait entry(待機エントリー)を配置します。その後、schedule_timeout()によってそのpeerが呼び出し元のグループにまだ存在する場合のみ、それが削除されます。しかし、待機中にグループの所属関係が変更され、シグナルまたはタイムアウトによりスリープが終了した場合(autoremove_wake_function()が実行されない場合)、finish_wait()はスキップされ、snd_pcm_drain()はそのストリームのsleepリスト上にエントリーが残った状態で戻ります。その後wake_up()が呼び出されると、解放されたスタックフレームを走査することになります。この問題は、排他対象となったストリームまたはdraining中のストリームのいずれかをリンク解除することで到達可能です。
closeパス(snd_pcm_drop() -> snd_pcm_post_stop())とは異なり、snd_pcm_unlink()はスリープキューを一度も起床させません。グループ所属関係の変更前にグループロックの下で全てのグループメンバーを起床させることで、リンクされたdrainerが解放され、ストリームがまだグループ化されている間にそのエントリーを削除します。
この脆弱性の原因となったのは、snd_pcm_link_rwsemが待機中および削除処理の両方で保持されなくなり、削除処理がグループ所属関係に条件付けられたことによるものです(Fixes参照)。その後finish_wait()への切り替えにより、この条件付き削除が残されたため、シグナル/タイムアウトの場合の問題は残ったままとなりました。
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.