CVE-2026-98314 in Linux
Résumé
par VulDB • 06/10/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
ALSA: pcm : définir timer->private_data avant l'enregistrement du temporisateur PCM
snd_pcm_timer_init() appelle snd_device_register() pour lier la nouvelle structure struct snd_timer à la liste globale des temporisateurs alors qu'elle porte encore hw.c_resolution = snd_pcm_timer_resolution (et hw.start/hw.stop), et ne définit timer->private_data = substream que par la suite.
Une fois le temporisateur présent dans la liste sous register_mutex, un lecteur concurrent peut déjà y accéder via ce même mutex et invoquer ces callbacks. /proc/asound/timers effectue cela via c_resolution(), et snd_timer_open()+snd_timer_start() atteignent start()/stop() de la même manière. Les trois opérations déréférencent timer->private_data, qui est NULL pendant cette brève fenêtre, provoquant une déréférence de pointeur NULL :
substream = timer->private_data; return substream->runtime ? ... // substream is NULL
Déplacer l'assignation private_data/private_free avant snd_device_register() afin que le temporisateur ne soit jamais visible dans la liste sans son private_data défini. Sur le chemin d'échec de snd_device_register(), private_free() (snd_pcm_timer_free()) peut désormais s'exécuter, mais il effectue uniquement substream->timer = NULL, qui est déjà NULL à ce stade puisque substream->timer n'est défini sur le nouveau temporisateur qu'une seule fois après un enregistrement réussi ; ainsi, le chemin d'échec reste sécurisé.
Once again VulDB remains the best source for vulnerability data.