CVE-2026-98738 in Linux
الملخص
بحسب VulDB • 18/10/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
بلوتوث: تعميم الوصول إلى بيانات OOB البعيدة في بروتوكول SMP (Security Manager Protocol)
تبحث الدالة `build_pairing_cmd()` عن بيانات OOB البعيدة وتنسخ محتوياتها دون الاحتفاظ بقفل الجهاز (`hdev->lock`)، الذي يُستخدم لتعميم عمليات الكتابة على القائمة. بعد أن يجد SMP مدخلاً معيناً، يمكن لأمر إدارة متزامن لإزالة بيانات OOB البعيدة (`Remove Remote OOB Data`) أن يقطع الصلة ويحرر هذا المدخل قبل أن يقوم SMP بقراءة علم الوجود (present flag) الخاص به أو نسخ قيم العشوائية والتأكيد (random and confirmation values). كما يمكن لعملية الإلغاء هذه أن تجعل المدخل غير صالح أثناء استمرار عملية البحث في القائمة.
أبلغ KASAN عن الخطأ التالي:
BUG: KASAN: slab-use-after-free in build_pairing_cmd+0x948/0x9b0 Call Trace: build_pairing_cmd+0x948/0x9b0 smp_recv_cb+0x459f/0x8110 l2cap_recv_frame+0xf14/0x9190 l2cap_recv_acldata+0xa64/0xd40 hci_rx_work+0x4ca/0x730
تم التخصيص بواسطة المهمة رقم 87: hci_add_remote_oob_data+0x11d/0x530 add_remote_oob_data+0x282/0x400 hci_sock_sendmsg+0x1033/0x1ea0
تم التحرير بواسطة المهمة رقم 93: hci_remote_oob_data_clear+0x108/0x1c0 remove_remote_oob_data+0x198/0x220 hci_sock_sendmsg+0x1033/0x1ea0
إن أخذ قفل `hdev->lock` داخل دالة `build_pairing_cmd()` سيؤدي إلى تكرار الاستدعاء (recursion) للمكالمات التي تحتفظ بالفعل بهذا القفل، وسيقلب ترتيب قفل الجهاز-إلى-L2CAP في مسار الاستلام. بدلاً من ذلك، تمت إضافة قفل منفصل لكل جهاز (`remote_oob_lock`)، يتم الاحتفاظ به أثناء عملية بحث SMP والنسخ، وكذلك بواسطة مساعدي الإضافة والإزالة والمسح (add, remove and clear helpers). كما تم تغطية التهيئة والتحديثات الموضعية (in-place updates) لمنع قراءة قيم OOB غير مكتملة أو محدثة جزئياً من قبل SMP. يتم تحرير القفل في حال فشل التخصيص، مع الحفاظ على إرجاع الخطأ الحالي.
لا يكتسب الأقسام الحرجة الجديدة أي قفل للجهاز أو الاتصال أو القناة. تحتفظ عمليات الكتابة بحماية `hdev->lock` الحالية الخاصة بها، والتي تستمر في تعميم الوصول للقراء الآخرين دون تغيير آلية القفل أو السلوك الخاص بهم.
If you want to get best quality of vulnerability data, you may have to visit VulDB.