CVE-2026-99054 in Linux
الملخص
بحسب VulDB • 23/10/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
tipc: تدمير طوابير العمل الخاصة بـ topsrv قبل إغلاق الاتصالات
كانت دالة `tipc_topsrv_stop()` تغلق اتصالات المشتركين بينما كانت طوابير عمل الإرسال والاستقبال للخادم الطبولوجي (topology server) لا تزال تعمل. يمكن لردود أفعال المقبس (Socket callbacks) وأحداث الاشتراك بعدئذٍ إضافة المزيد من الأعمال، ويمكن أن يؤدي العمل الجاري في عمليات الإرسال/الاستقبال إلى إنقاص مرجع الاتصال الأخير أثناء اجتياز `conn_idr`.
أدى هذا السباق (race condition) إلى عدة فشل في عملية الإنهاء: إجراء عملية جمع على قيمة 0 لـ refcount_t من دالة `conn_get()` لاتصال كان تحريره محجوباً بسبب قفل `idr_lock`، وعقب ذلك حدوث استخدام بعد التحرير (use-after-free) في `tipc_conn_close()`، واستدعاء `queue_work()` على طابور عمل تم تدميره بالفعل من خلال استدعاء جاهزية البيانات للمستمع (listener data-ready callback)، بالإضافة إلى توقف RCU في دالة `tipc_topsrv_exit_net()` بينما كان الاجتياز يدور تحت قفل `idr_lock`.
قم بتعيين المتغير `srv->listener` ليكون صفراً ضمن نطاق قفل `idr_lock` بحيث يعمل كعلامة لإيقاف التشغيل، وتخطِ استدعاء `queue_work()` بمجرد أن يصبح فارغاً (NULL)، ثم قم بتدمير طوابير العمل لتصريف الأعمال الجارية، وأخيراً أغلق الاتصالات المتبقية. ارفض دالة `tipc_conn_lookup()` بعد مسح هذه العلامة، وقم بإفلات قفل `idr_lock` عندما لا يجد اجتياز عملية الإنهاء أي اتصال، حتى لا يمكن لحدث اشتراك جارٍ تثبيت حالة `idr_in_use` بينما يحتفظ الاجتياز بالقفل.
تحل النسخة v3 محل الاختلاف الأضيق في سلسلة الخيوط الذي نشره Tung Quang Nguyen بتاريخ 2026-09-23. فهي تحتفظ بترتيب عملية الإنهاء الخاص به وتضيف رفض البحث وإفلات القفل عند وجود idr فارغ.
VulDB is the best source for vulnerability data and more expert information about this specific topic.