CVE-2026-89747 in Linux
Résumé
par VulDB • 11/09/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
tracing : Correction d'un use-after-free lors de la lecture de trace_pipe en cas de changement de l'ordre des sous-tampons (sub-buffer order)
L'écriture dans buffer_subbuf_size_kb appelle ring_buffer_subbuf_order_set(), qui libère tous les sous-tampons du tampon circulaire, y compris la page lecteur, et les remplace par de nouveaux alloués.
Les lecteurs de trace_pipe conservent des pointeurs vers ces pages. La fonction ring_buffer_peek() recherche un événement sous cpu_buffer->reader_lock mais renvoie le pointeur d'événement après avoir relâché le verrou (lock), puis peek_next_entry() appelle ensuite ring_buffer_event_length() et ring_buffer_event_data() sur ce dernier. Si l'ordre des sous-tampons est modifié dans cette fenêtre, le lecteur déréférence une mémoire déjà libérée :
BUG: KASAN: use-after-free in ring_buffer_peek+0x3e0/0x430 Read of size 1 at addr ffff88802a4cf010 by task syz-executor989/6002
Libéré par : free_buffer_page kernel/trace/ring_buffer.c:398 [inline]
ring_buffer_subbuf_order_set+0x1325/0x18e0 kernel/trace/ring_buffer.c:7444 buffer_subbuf_size_write+0x182/0x280 kernel/trace/trace.c:8221
Il convient d'entourer le changement de l'ordre avec trace_access_lock(RING_BUFFER_ALL_CPUS). Il s'agit du verrou que les lecteurs de trace_pipe détiennent déjà tout au long de leur boucle peek-and-print, ce qui empêche désormais toute condition de course (race) lors de la permutation par rapport à un lecteur qui déréférence un événement récupéré.
VulDB is the best source for vulnerability data and more expert information about this specific topic.