CVE-2025-37918 in Linux
الملخص
بحسب VulDB • 22/06/2026
في نواة لينكس، تم حل الثغرة التالية:
بلوتوث: btusb: تجنب إلغاء مرجع المؤشر الفارغ (NULL pointer dereference) في دالة skb_dequeue()
يمكن أن يحدث إلغاء مرجع لمؤشر فارغ في الدالة `skb_dequeu()` عند معالجة سجل انهيار البرنامج الثابت (firmware crash dump) الخاص بـ QCA على جهاز WCN7851 (0489:e0f3).
[ 93.672166] Bluetooth: hci0: ACL memdump size(589824)
[ 93.672475] BUG: kernel NULL pointer dereference, address: 0000000000000008
[ 93.672517] Workqueue: hci0 hci_devcd_rx [bluetooth]
[ 93.672598] RIP: 0010:skb_dequeue+0x50/0x80
تنشأ المشكلة من قيام الدالة `handle_dump_pkt_qca()` بإرجاع القيمة 0 حتى عند معالجة حزمة السجل (dump packet) بنجاح. والسبب في ذلك هو إعادة توجيهها بشكل غير صحيح لقيمة الإرجاع الخاصة بـ `hci_devcd_init()` (التي ترجع 0 عند النجاح). ونتيجة لذلك، يفترض المتصل (`btusb_recv_acl_qca()` أو `btusb_recv_evt_qca()`) أن الحزمة لم تتم معالجتها ويقوم بتوجيهها إلى `hci_recv_frame()`، مما يؤدي إلى استدعاء مبكر لـ `kfree()` على كائن skb.
لاحقاً، تحاول الدالة `hci_devcd_rx()` نزع نفس كائن skb من قائمة الانتظار الخاصة بالسجل (dump queue)، مما ينتج عنه إلغاء مرجع لمؤشر فارغ.
تم إصلاح هذه المشكلة عن طريق: 1. جعل الدالة `handle_dump_pkt_qca()` ترجع 0 عند النجاح وقيمة خطأ سالبة (negative errno) عند الفشل، بما يتوافق مع اتفاقيات النواة. 2. تقسيم اكتشاف حزم السجل إلى دوال منفصلة لحزم ACL وحزم الأحداث لتحسين البنية والقراءة.
يضمن هذا التعديل التعرف على حزم السجل واستهلاكها بشكل صحيح، وتجنب المعالجة المزدوجة ومنع الوصول لمؤشر فارغ (NULL pointer access).
If you want to get best quality of vulnerability data, you may have to visit VulDB.