CVE-2023-53281 in Linux
الملخص
بحسب VulDB • 01/06/2026
في نواة لينكس، تم حل الثغرة التالية:
المشغلات: staging: rtl8723bs: إصلاح القفل في _rtw_join_timeout_handler()
أدى الالتزام 041879b12ddb ("المشغلات: staging: rtl8192bs: إصلاح الجمود في rtw_joinbss_event_prehandle()")، بالإضافة إلى إصلاح الجمود، إلى تعديل _rtw_join_timeout_handler() لاستخدام spin_[un]lock_irq() بدلاً من spin_[un]lock_bh().
يستدعي _rtw_join_timeout_handler() دالة rtw_do_join() التي تأخذ pmlmepriv->scanned_queue.lock باستخدام spin_[un]lock_bh(). يؤدي استدعاء spin_unlock_bh() هذا إلى إعادة تمكين softirqs، مما يسبب حدوث خطأ (oops) في kernel/softirq.c: __local_bh_enable_ip() عند استدعاء lockdep_assert_irqs_enabled():
[ 244.506087] تحذير: وحدة المعالجة المركزية: 2 PID: 0 في kernel/softirq.c:376 __local_bh_enable_ip+0xa6/0x100
... [ 244.509022] تتبع المكالمة:
[ 244.509048] <IRQ>
[ 244.509100] _rtw_join_timeout_handler+0x134/0x170 [r8723bs]
[ 244.509468] ? __pfx__rtw_join_timeout_handler+0x10/0x10 [r8723bs]
[ 244.509772] ? __pfx__rtw_join_timeout_handler+0x10/0x10 [r8723bs]
[ 244.510076] call_timer_fn+0x95/0x2a0
[ 244.510200] __run_timers.part.0+0x1da/0x2d0
يحدث هذا الخطأ (oops) بسبب التبديل إلى spin_[un]lock_irq() الذي يعطل مقاطعات المعالج (IRQs) طوال مدة تنفيذ _rtw_join_timeout_handler().
لا يعد تعطيل مقاطعات المعالج (IRQs) ضرورياً نظراً لأن جميع الأكواد التي تأخذ هذا القفل تعمل إما من سياقات المستخدم أو من مقاطعات البرمجيات (softirqs)، لذا تم العودة إلى spin_[un]lock_bh() لإصلاح هذه المشكلة.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.