Odebrany

CVE-2026-99140

opublikowano:
modyfikacja:
Ocena CVSS
n/a
Brak oceny

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

W jądrze Linuksa usunięto następującą lukę:

śledzenie: Napraw znaczniki czasu wyzwalacza hist dla zdarzeń buforowanych

Syzkaller wywołał ostrzeżenie WARN_ON_ONCE(!nest):

OSTRZEŻENIE: kernel/trace/ring_buffer.c:821 w ring_buffer_event_time_stamp
Śledzenie połączeń:
ring_buffer_event_time_stamp
hist_field_timestamp
hist_fn_call
event_hist_trigger
zdarzenie_wyzwalacze_call
__event_trigger_test_discard
trace_event_buffer_commit
do_trace_event_raw_event_sched_switch
trace_event_raw_event_sched_switch

Ostrzeżenie jest prawdopodobnie powtarzalne i jest powiązane z syzkallerem
wykonując następujące polecenia:

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

Konkretny proces wyzwalania jest następujący:

Procesor 0 Procesor 1
(przełączanie kontekstu) (echo 'hist:keys=common_timestamp' > \
zdarzenia/sched/sched_switch/trigger)
do_trace_event_raw_event_##call
trace_event_buffer_lock_reserve
if (!tr->no_filter_buffering_ref &&
plik_trace->flagi i EVENT_FILE_FL_FILTERED)
powrót wpisu; // wróć bezpośrednio
event_hist_trigger_parse
hist_register_trigger
tracing_set_filter_buffering(plik->tr, prawda);
tr->no_filter_buffering_ref++;
__trace_buffer_lock_reserve
rb_start_commit
local_inc(&cpu_buffer->zatwierdzanie); // pominięty i nie wykonany
trace_event_buffer_commit
__event_trigger_test_discard
zdarzenie_wyzwalacze_call
event_hist_trigger
hist_fn_call
hist_field_timestamp
ring_buffer_event_time_stamp
gniazdo = local_read(&cpu_buffer->zatwierdzanie);
WARN_ON_ONCE(!nest) // wywołaj ostrzeżenie

Główną przyczyną jest to, że gdy plik zdarzeń ma dołączony filtr i
wyzwalacz hist nie został jeszcze podłączony, trace_event_buffer_lock_reserve()
zamiast tego zapisuje zdarzenie w buforze tymczasowym Trace_buffered_event dla każdego procesora
zarezerwowania go w buforze pierścieniowym, więc zatwierdzenie cpu_buffer->nie jest
zwiększone. Gdy zdarzenie jest później przetwarzane w czasie zatwierdzenia przez hist
wyzwalacz, hist_field_timestamp() -> ring_buffer_event_time_stamp() widzi
zerowa liczba popełnionych błędów, wyzwalająca WARN_ON_ONCE(!nest).

tracing_event_time_stamp() została dodana przez zatwierdzenie d8279bfc5e959 („tracing:
Dodaj API tracing_event_time_stamp()”) dokładnie w tym przypadku: jeśli zdarzenie
jest zdarzeniem trace_buffered_event na procesor, zwraca bieżący bufor pierścieniowy
znacznik czasu. Ale nigdy nie zyskała rozmówcy. Użyj go w hist_field_timestamp(),
tak, że wyzwalacz hist, który następuje po buforowanym zdarzeniu, rejestruje
aktualnego czasu, który jest tylko nieznacznie późniejszy niż moment, w którym miało miejsce wydarzenie
nagrany, zamiast ostrzegać i rejestrować fałszywy znacznik czasu.

>_ Referencje

Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.

This product uses the NVD API but is not endorsed or certified by the NVD.

Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.

CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.

NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org