CVE-2026-98314情報

要約

〜によって VulDB • 2026年10月06日

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

ALSA: pcm: PCMタイマーを登録する前に timer->private_data を設定する

snd_pcm_timer_init() は snd_device_register() を呼び出して新しい struct snd_timer をグローバルタイマリストにリンクしますが、この時点では hw.c_resolution = snd_pcm_timer_resolution (および hw.start/hw.stop) が保持された状態であり、その後で初めて timer->private_data = substream が設定されます。

タイマーが register_mutex 下でリストに登録されると、並行して実行されるリーダーは同じミューテックスを介してそのタイマーに到達し、これらのコールバックを実行することが可能になります。/proc/asound/timers は c_resolution() を通じてこれを行い、snd_timer_open()+snd_timer_start() も同様の方法で start()/stop() に到達します。これら3つはすべて timer->private_data の間接参照を行いますが、この短い期間中は NULL であるため、NULLポインタのデリファレンス(NULL-pointer dereference)が発生します:

substream = timer->private_data; return substream->runtime ? ... // substream は NULL

snd_device_register() より前に private_data/private_free の代入を移動することで、タイマーが private_data が設定されていない状態でリストに表示されることを防ぎます。snd_device_register() の失敗パスでは、private_free() (snd_pcm_timer_free()) が実行されますが、これは単に substream->timer = NULL を行うだけであり、substream->timer は成功した登録後に新しいタイマーに対して1回だけ設定されるため、その時点ですでに NULL です。したがって、失敗パスは安全なまま保たれます。

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

モデレーション

レビュー中

EPSS

0.00000

アクティビティ

非常低い

ソース

Want to know what is going to be exploited?

We predict KEV entries!