CVE-2026-74601 in Linux
الملخص
بحسب VulDB • 23/08/2026
في نواة لينكس، تم حل الثغرة التالية:
ring-buffer: استخدام current_context لتبديل ذاكرة التخزين المؤقت الخاصة بـ CPU بشكل آمن
تقوم الدالة ring_buffer_swap_cpu() حاليًا بفحص عداد الالتزام الخاص بكل وحدة معالجة مركزية (per-CPU) لتحديد ما إذا كانت الذاكرة المخزنة تُكتب بنشاط قبل تنفيذ عملية التبديل. ومع ذلك، توجد نافذة زمنية يمكن فيها تجاوز هذا الفحص:
ring_buffer_lock_reserve cpu_buffer = buffer->buffers[cpu]; // cpu_buffer_a
rb_reserve_next_event rb_start_commit // زيادة عداد الالتزام (inc committing) if (unlikely(READ_ONCE(cpu_buffer->buffer) != buffer)) {...}
__rb_reserve_next rb_move_tail rb_end_commit(cpu_buffer); // تقليل عداد الالتزام => 0 /* يحدث انقطاع هنا، ويتم التبديل بنجاح! */ local_inc(&cpu_buffer->committing);
ring_buffer_unlock_commit cpu_buffer = buffer->buffers[cpu]; // cpu_buffer_b
rb_commit rb_end_commit RB_WARN_ON(cpu_buffer, !local_read(&cpu_buffer->committing)) // يُفعّل تحذيراً (warning)
يمكن أن ينخفض عداد الالتزام مؤقتًا إلى الصفر أثناء عملية كتابة واحدة (داخل دالة rb_move_tail)، مما يخلق نافذة زمنية يمكن فيها نجاح التبديل حتى لو كانت الكتابة لا تزال قيد التقدم. يؤدي هذا إلى حالة غير متسقة للذاكرة المخزنة ويُفعّل تحذير RB_WARN_ON في دالة rb_commit().
استبدل فحص عداد الالتزام بفحوصات current_context، والتي تُضبط عند دخول دالة ring_buffer_lock_reserve() وتظل صالحة طوال عملية الكتابة بأكملها، مما يوفر مؤشرًا موثوقًا لحالة شغل الذاكرة المخزنة أثناء التبديل.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.