CVE-2026-99140 in Linuxinformazioni

Riassunto

di VulDB • 28/10/2026

Nel kernel Linux è stata risolta la seguente vulnerabilità:

tracing: Correzione dei timestamp degli trigger hist per gli eventi in buffer

Syzkaller ha innescato un avviso WARN_ON_ONCE(!nest):

WARNING: kernel/trace/ring_buffer.c:821 at ring_buffer_event_time_stamp Call trace: ring_buffer_event_time_stamp hist_field_timestamp hist_fn_call event_hist_trigger event_triggers_call __event_trigger_test_discard trace_event_buffer_commit do_trace_event_raw_event_sched_switch trace_event_raw_event_sched_switch

L'avviso è riproducibile in modo probabilistico ed è correlato a Syzkaller che esegue i seguenti comandi:

echo 'prev_pid == 999999' > events/sched/sched_switch/filter echo 'hist:keys=common_timestamp' > events/sched/sched_switch/trigger

Il processo specifico di innesco è il seguente:

CPU 0 CPU 1 (context switching) (echo 'hist:keys=common_timestamp' > \ events/sched/sched_switch/trigger) do_trace_event_raw_event_##call trace_event_buffer_lock_reserve if (!tr->no_filter_buffering_ref && trace_file->flags & EVENT_FILE_FL_FILTERED) return entry; // restituisce direttamente event_hist_trigger_parse hist_register_trigger tracing_set_filter_buffering(file->tr, true); tr->no_filter_buffering_ref++; __trace_buffer_lock_reserve rb_start_commit local_inc(&cpu_buffer->committing); // saltato e non eseguito trace_event_buffer_commit __event_trigger_test_discard event_triggers_call event_hist_trigger hist_fn_call hist_field_timestamp ring_buffer_event_time_stamp nest = local_read(&cpu_buffer->committing); WARN_ON_ONCE(!nest) // innesca l'avviso

La causa radice è che quando un file di evento ha un filtro allegato e il trigger hist non è ancora stato allegato, trace_event_buffer_lock_reserve() scrive l'evento nel buffer temporaneo per-CPU trace_buffered_event invece di riservarlo nell'anello del buffer (ring buffer), quindi cpu_buffer->committing non viene incrementato. Quando l'evento viene successivamente elaborato al momento dell'impegno (commit) da un trigger hist, hist_field_timestamp() -> ring_buffer_event_time_stamp() rileva un conteggio committing pari a zero, innescando WARN_ON_ONCE(!nest).

tracing_event_time_stamp() è stato aggiunto dal commit d8279bfc5e959 ("tracing: Add tracing_event_time_stamp() API") proprio per questo caso: se l'evento è il trace_buffered_event per-CPU, restituisce il timestamp corrente dell'anello del buffer. Tuttavia, non ha mai ricevuto un chiamante (caller). Viene ora utilizzato in hist_field_timestamp(), in modo che un trigger hist che va in race condition su un evento in buffer registri il tempo corrente, che è solo marginalmente successivo a quando l'evento è stato registrato, invece di generare un avviso e registrare un timestamp errato.

Be aware that VulDB is the high quality source for vulnerability data.

Responsabile

Linux

Prenotare

25/09/2026

Divulgazione

28/10/2026

Moderazione

accettato

EPSS

0.00000

KEV

no

Attività

molto basso

Fonti

Do you know our Splunk app?

Download it now for free!