CVE-2026-74503 in Linux情報

要約

〜によって VulDB • 2026年08月15日

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

ALSA: timer: close処理が完了したらSNDRV_TIMER_IFLG_DEADフラグをクリアする

snd_timer_close_locked()は、インスタンスにSNDRV_TIMER_IFLG_DEADを設定し、そのフラグが既に設定されている場合は早期リターンしますが、このフラグはその後決してクリアされません。正常なcloseの終了はremove_slave_links()で行われ、これによりtimeri->timerがNULLになります。そのため、2回目のclose呼び出しではタイマー== NULLのパスを通るだけで実害はありませんが、早期リターンに到達するのは、その間に再度openされたインスタンスの場合のみです。そのようなインスタンスに対してcloseを実行してもアンリンク処理は行われません。つまり、snd_timer_instance_free()によって解放されるオブジェクトは、依然としてtimer->open_list_head上にあり、スレーブキー付きでopenされていた場合はsnd_timer_master_list上にも残っており、引き継がれたスレーブを所有したままになり、タイマーおよびモジュールの参照カウントも保持した状態になります。

snd_seq_timer_open()はこのようにインスタンスを再オープンします:内部で既にsnd_timer_close_locked()を実行済みの失敗後、同じオブジェクトに対してフォールバックopenを試みます。/dev/snd/timerおよび/dev/snd/seqへのアクセス権を持つ非特権ユーザーは、この失敗を引き起こすことができます。なぜなら、pendingなスレーブが新しいマスターの(slave_class, slave_id)キーと一致し、かつ対象タイマーがmax_instancesに達している場合、snd_timer_check_master()は-EBUSYを返すためです。また、SNDRV_TIMER_IOCTL_SELECTでdev_class = SNDRV_TIMER_CLASS_SLAVEを指定すると、呼び出し元が提供したdev_sclassが保持されるため、シーケンサーキューのキーを偽造することが可能です。解放されたインスタンスは、そのタイマーに対する後続のsnd_timer_open()やsnd_timer_check_slave()、そして/proc/asound/timersによって参照解除され、古くなったti->ownerポインタへのアクセスによりフォールト(エラー)が発生します。

このフラグはclose処理が進行中のみ可視であればよく、他のユーザーが必要とするのはこれだけです。インスタンスがすべてのリストから外れた時点で、設定時と同じtimer->ロックの下でremove_slave_links()内でこれをクリアしてください。

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

責任者

Linux

予約する

2026年08月15日

モデレーション

承諾済み

エントリ

VDB-390803

EPSS

0.00000

アクティビティ

非常低い

ソース

Want to know what is going to be exploited?

We predict KEV entries!