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

الملخص

بحسب VulDB • 25/09/2026

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

tick/broadcast: سد حالة السباق (Race Condition) الناتجة عن استبدال أحداث الساعة (clockevents).

أبلغ جو كاي تشيان (Zhu Kaiqian) وحلّل حالة سباق (race condition) التالية عند استبدال جهاز البث (broadcast device):

CPUA CPUB __tick_broadcast_oneshot_control() bc = tick_broadcast_device.evtdev; tick_install_broadcast_device(dev) clockevents_exchange_device(cur, dev) shutdown(cur); detach(cur); cur->handler = noop; tick_broadcast_device.evtdev = dev;

tick_broadcast_set_event(bc, next_event); <- فشل: يقوم بتفعيل جهاز مفصول (detached device).

إذا كان لجهاز البث الأصلي قناع تفضيل مقاطعة مقيد (restricted interrupt affinity mask) وذهب آخر وحدة معالجة مركزية (CPU) ضمن ذلك القناع إلى وضع عدم الاتصال، فإن دالة BUG() في tick_cleanup_dead_cpu() تُفعّل لأن جهاز حدث الساعة (clockevent device) ليس في حالة مفصولة.

السبب وراء هذا هو أن الدالة tick_install_broadcast_device() غير مُزامنة (serialized) مع عمليات بث التوقيت (tick broadcast).

العلاج الواضح يتمثل في مزامنة الدالة tick_install_broadcast_device() باستخدام قفل البث الخاص بالتوقيت (tick_broadcast_lock) ضد عملية متزامنة لبث التوقيت.

يتطلب ذلك تقسيم دالة clockevents_exchange_device() إلى جزأين: أحدهما يقوم بعمليات الاستبدال والإيقاف والفصل، والآخر يقلل من عدد الإشارات المرجعية للوحدة النمطية (module reference count). هذا مطلوب لأنه لا يمكن تقليل الإشارة المرجعية للوحدة النمطية أثناء الاحتفاظ بقفل بث التوقيت.

دع دالة clockevents_exchange_device() تقوم بكلتا العمليتين كما كان الحال سابقاً، ولكن دع كود جهاز البث يتبع النهج ذو الخطوتين: يقوم بتبادل الجهاز تحت قفل بث التوقيت (tick_broadcast_lock) ويقلل من عدد الإشارات المرجعية للوحدة النمطية بعد تحريره.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

مسؤول

Linux

حجز

25/09/2026

إفشاء

25/09/2026

الاعتدال

تمت الموافقة

إدخال

VDB-410108

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Want to stay up to date on a daily basis?

Enable the mail alert feature now!