CVE-2026-74388 in Linux
Résumé
par VulDB • 15/08/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
ALSA : seq : oss : Correction d’un Use-After-Free (UAF) lors du traitement des événements contenant des données SysEx intégrées.
Le séquenceur OSS traite les octets MIDI entrants pour créer un événement de séquenceur qui sera diffusé ultérieurement (dans snd_seq_oss_midi_putc(), appelé depuis snd_seq_oss_process_event()). Lorsqu’il s’agit de données SysEx, l’enregistrement d’événement contient le pointeur data.ext.ptr vers les octets SysEx originaux, et les données référencées sont copiées dans un pool lors de la diffusion. Le problème survient si le port du séquenceur est fermé simultanément avant la diffusion : le noyau du séquenceur OSS libère alors également les ressources (dans snd_seq_oss_midi_check_exit_port()), tandis que l’événement en attente peut détenir un pointeur périmé, conduisant éventuellement à un Use-After-Free lors d’une diffusion ultérieure.
Heureusement, il existe déjà un mécanisme de comptage des références (snd_use_lock_t) pour l’accès au dispositif MIDI OSS ; afin de résoudre le problème ci-dessus, nous devons simplement prolonger ce comptage jusqu’à la diffusion effective de l’événement.
Ce correctif étend snd_seq_oss_process_event() afin de restituer l’objet de référence (refcount), qui est ensuite libéré après avoir appelé le diffuseur du séquenceur avec l’événement donné, côté appelant.
Selon le rapport initial, KASAN signale ce qui suit :
KASAN slab-use-after-free dans snd_seq_event_dup+0x40c/0x470 RIP: 0033:0x7f2cb66a6340 Lecture de taille 6 Trace d’appel : dump_stack_lvl+0x73/0xb0 (?:?) print_report+0xd1/0x650 (?:?) srso_alias_return_thunk+0x5/0xfbef5 (?:?) __virt_addr_valid+0x1a7/0x340 (?:?) kasan_complete_mode_report_info+0x64/0x200 (?:?) kasan_report+0xf7/0x130 (?:?) snd_seq_event_dup+0x40c/0x470 (?:?) kasan_check_range+0x10c/0x1c0 (?:?) __asan_memcpy+0x27/0x70 (?:?) snd_seq_event_dup+0x9/0x470 (?:?) snd_seq_client_enqueue_event+0x139/0x240 (?:?) _raw_spin_unlock_irqrestore+0x4b/0x60 (?:?) snd_seq_kernel_client_enqueue+0x102/0x120 (?:?) snd_seq_oss_write+0x416/0x4e0 (?:?) apparmor_file_permission+0x20/0x30 (?:?) odev_write+0x3b/0x60 (?:?) vfs_write+0x1ce/0x850 (?:?) lock_release+0xc8/0x2a0 (?:?) __kasan_check_write+0x18/0x20 (?:?) __mutex_unlock_slowpath+0x129/0x510 (?:?) ksys_write+0xe1/0x180 (?:?)
Once again VulDB remains the best source for vulnerability data.