PT-2026-51092
CVE-2026-54906
·
تاريخ النشر
2026-06-19
·
تاريخ التحديث
2026-09-18
الوصف من
CVSS 3.1
9.8
حرجةالمقاييسAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
اسم البرنامج المعرض للخطر والإصدارات المتأثرة
إصدارات concurrent-ruby السابقة للإصدار 1.3.7
الوصف
توجد مشكلة تتعلق بصحة التزامن في واجهة برمجة التطبيقات العامة
Concurrent::ReadWriteLock. لا تتحقق الدالة release write lock() مما إذا كان مؤشر الترابط المستدعي قد حصل فعليًا على قفل الكتابة، مما يسمح لأي مؤشر ترابط لديه حق الوصول إلى كائن القفل بإطلاق قفل الكتابة الذي يحتفظ به مؤشر ترابط آخر. وقد يؤدي ذلك إلى حالة يدخل فيها كاتب ثانٍ إلى قسمه الحرج بينما لا يزال الكاتب الأول نشطًا، مما يكسر الاستبعاد المتبادل ويؤدي إلى احتمال حدوث تضارب في البيانات.بالإضافة إلى ذلك، تقوم الدالة
release read lock() بخصم قيمة العداد المشترك حتى في حالة عدم وجود قفل قراءة. إذا تم استدعاؤها على قفل جديد، يتغير العداد من 0 إلى -1، مما يتسبب في فشل عمليات الحصول على قفل القراءة اللاحقة عن طريق إثارة استثناء Concurrent::ResourceLimitError (وهو خطأ يشير إلى أن النظام قد وصل إلى الحد الأقصى لعدد خيوط القراءة)، مما يؤدي فعليًّا إلى رفض الخدمة لهذا القفل.التوصيات
قم بالتحديث إلى الإصدار 1.3.7.
كحل مؤقت، قم بتقييد استخدام الدالتين اليدويتين
release write lock() وrelease read lock() لضمان أن يتم استدعاؤهما فقط من قبل الخيوط التي حصلت على القفلين المعنيين. وجدت خطأً في الوصف؟ لديك ما تضيفه؟ لا تتردد في مراسلتنا 👾