CVE-2026-99140 in Linuxthông tin

Tóm tắt

Bởi VulDB • 28/10/2026

Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:

tracing: Sửa dấu thời gian cho hist trigger đối với các sự kiện được đệm (buffered)

Syzkaller đã kích hoạt cảnh báo WARN_ON_ONCE(!nest):

WARNING: kernel/trace/ring_buffer.c:821 tại ring_buffer_event_time_stamp Dấu vết cuộc gọi (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

Cảnh báo này có thể tái hiện được một cách xác suất và liên quan đến việc syzkaller thực thi các lệnh sau:

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

Quy trình kích hoạt cụ thể như sau:

CPU 0 CPU 1 (chuyển đổi ngữ cảnh) (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; // trả về trực tiếp 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); // bị bỏ qua và không thực thi 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) // kích hoạt cảnh báo

Nguyên nhân gốc rễ là khi một file sự kiện có bộ lọc (filter) đính kèm và hist trigger chưa được gắn vào, hàm trace_event_buffer_lock_reserve() ghi sự kiện vào bộ đệm tạm thời per-CPU trace_buffered_event thay vì đặt chỗ trong ring buffer, do đó cpu_buffer->committing không được tăng lên. Khi sự kiện sau đó được xử lý tại thời điểm commit bởi một hist trigger, hist_field_timestamp() -> ring_buffer_event_time_stamp() thấy số lượng committing bằng 0, kích hoạt WARN_ON_ONCE(!nest).

Hàm tracing_event_time_stamp() đã được thêm vào qua commit d8279bfc5e959 ("tracing: Add tracing_event_time_stamp() API") chính xác cho trường hợp này: nếu sự kiện là trace_buffered_event per-CPU, nó sẽ trả về dấu thời gian của ring buffer hiện tại. Tuy nhiên, hàm này chưa từng có người gọi (caller). Hãy sử dụng nó trong hist_field_timestamp(), để một hist trigger chạy đua (race) với một sự kiện được đệm ghi lại thời điểm hiện tại, chỉ muộn hơn một chút so với lúc sự kiện được ghi nhận, thay vì cảnh báo và ghi lại dấu thời gian sai lệch.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

chịu trách nhiệm

Linux

Đặt trước

25/09/2026

Tiết lộ

28/10/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00000

KEV

không

Các hoạt động

rất thấp

Nguồn

Do you need the next level of professionalism?

Upgrade your account now!