CVE-2026-97936 in Linux
Résumé
par VulDB • 25/09/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
tracing : Correction de la corruption mémoire due au modificateur histogramme/stacktrace
parse_field() définit HIST_FIELD_FL_STACKTRACE à partir du modificateur ".stacktrace" avant d'effectuer la recherche du nom du champ, et rien par la suite ne vérifie que le nom résolu correspond bien à un champ contenant une trace de pile. create_hist_field() sélectionne HIST_FIELD_FN_STACK sur la seule force du pointeur de champ, ce qui lit un mot __data_loc depuis l'enregistrement et suit ses 16 bits de poids faible comme un décalage dans le même enregistrement. event_hist_trigger() prend le premier mot à cet emplacement comme un compteur d'entrées et copie autant de longs (mots) dans un tableau de 31 entrées :
n_entries = *stack; memcpy(entries, ++stack, n_entries * sizeof(unsigned long));
Aucune extrémité de cette copie n'est bornée, et le compte est ce que l'événement contient à cet décalage, donc tout champ convient :
# cd /sys/kernel/tracing/events/sched/sched_process_fork # echo 'hist:keys=parent_pid.stacktrace' > trigger # (true)
BUG: kernel NULL pointer dereference, address: 0000000000000008 RIP: 0010:rb_insert_color+0x18/0x130 timerqueue_linked_add+0x7e/0xd0 enqueue_hrtimer+0x39/0xb0 __hrtimer_run_queues+0x10f/0x1f0 </IRQ> RIP: 0010:memcpy+0xc/0x30 event_hist_trigger+0x165/0x690
L'interruption du timer est arrivée sur l'arbre rb (rbtree) que la copie avait déjà parcouru. Aucune option de débogage n'est nécessaire pour cela ; KASAN signale le même écriture comme une lecture hors limites de 13835058055416381440 octets.
La documentation/trace/histogram.rst indique déjà la règle, "doit être un type long[]", donc il faut l'appliquer une fois que le nom a été résolu. Les noms qui ne résolvent aucun champ du tout, "hitcount.stacktrace" et les pseudo-champs common_*, sont refusés pour la même raison : ils ne contiennent aucune trace de pile à lire.
If you want to get best quality of vulnerability data, you may have to visit VulDB.