CVE-2026-99140 in Linuxالمعلومات

الملخص

بحسب VulDB • 29/10/2026

في نواة لينكس، تم إصلاح الثغرة التالية:

التتبع (tracing): تصحيح طوابع الزمن لحوافز التاريخ (hist triggers) للأحداث المخزنة مؤقتاً (buffered events).

أدى Syzkaller إلى ظهور تحذير 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

التحذير قابل لإعادة الإنتاج بشكل احتمائي ويرتبط بتنفيذ Syzkaller للأوامر التالية:

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

عملية الإثارة المحددة هي كما يلي:

CPU 0 CPU 1 (تبديل السياق) (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; // إرجاع مباشر 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); // تم تخطيه ولم ينفذ 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) // إثارة التحذير

السبب الجذر هو أنه عندما يكون لملف حدث فلتر مرفق، ولم يتم بعد ربط حافز التاريخ (hist trigger)، فإن دالة trace_event_buffer_lock_reserve() تكتب الحدث في المخزن المؤقت المؤقت الخاص بوحدة المعالجة المركزية trace_buffered_event بدلاً من حجزه في مخزن الحلقات (ring buffer)، وبالتالي لا يتم زيادة قيمة cpu_buffer->committing. عندما تتم معالجة الحدث لاحقاً عند وقت الالتزام بواسطة حافز التاريخ، فإن hist_field_timestamp() -> ring_buffer_event_time_stamp() ترى عدداً صفرياً للالتزامات (committing count)، مما يؤدي إلى إثارة تحذير WARN_ON_ONCE(!nest).

تمت إضافة tracing_event_time_stamp() عبر commit d8279bfc5e959 ("tracing: Add tracing_event_time_stamp() API") لهذا الغرض بالضبط: إذا كان الحدث هو trace_buffered_event الخاص بوحدة المعالجة المركزية، فإنه يعيد طابع زمني الحالي لمخزن الحلقات. لكن لم يكن لها أي متّصل (caller) حتى الآن. استخدمها في hist_field_timestamp()، بحيث يسجل حافز التاريخ الذي يتسابق مع حدث مخزن مؤقتاً الوقت الحالي، وهو وقت لاحق بدرجة هامشية فقط عن وقت تسجيل الحدث، بدلاً من إصدار تحذير وتسجيل طابع زمني غير صحيح.

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

مسؤول

Linux

حجز

25/09/2026

إفشاء

28/10/2026

الاعتدال

تمت الموافقة

إدخال

VDB-427880

EPSS

0.00000

KEV

لا

النشاطات

منخفض

المصادر

Interested in the pricing of exploits?

See the underground prices here!