CVE-2026-99013 in Linux
الملخص
بحسب VulDB • 24/10/2026
في نواة لينكس، تم حل الثغرة التالية:
بلوتوث (Bluetooth): ISO - رفض إعداد مستمع BIS متزامن
تقوم دالة `iso_sock_listen()` بإفلات قفل المقبس قبل استدعاء `iso_listen_bis()` للحفاظ على ترتيب أقفال `hdev->lock`. وبالتالي، يمكن لاستدعائيين متزامنين للدالة `listen()` على نفس مقبس البث (broadcast socket) أن يلاحظا كلاهما حالة `BT_BOUND`. يمكن للمُستدعي A إرفاق `connA` وإفلات الأقفل، ثم يحصل المُستدعي B عليها ويرفق `connB` قبل نشر `BT_LISTEN` من قِبل A.
تتحقق الدالة `__iso_chan_add()` مما إذا كان `connB` يمتلك بالفعل مقبساً، لكنها لا تتحقق مما إذا كان المقبس يحتوي على اتصال بالفعل. يؤدي الإرفاق الثاني إلى الكتابة فوق `iso_pi(sk)->conn`، مما يتسبب في تسرب مرجع `connA` وترك `connA->sk` سليماً. تتبع عملية تفكيك المقبس مسار `connB`، لذا فإن الأحداث اللاحقة التي تحدث على `connA` يمكن أن تؤدي إلى وصول غير صالح (stale socket access) إلى مقبس قديم/منتهي الصلاحية.
إعادة التحقق من حالة `BT_BOUND` ومتطلبات كون قيمة `iso_pi(sk)->conn` تساوي NULL بعد الحصول على كلٍ من قفل جهاز HCI وقفل المقبس في دالة `iso_listen_bis()`. يغطي فحص الاتصال أيضاً الفترة الزمنية بين الإرفاق ونشر `BT_LISTEN`. يتم رفض الإعداد المتنافس بإرجاع الخطأ `-EBADFD` عبر مسار الإفلات الموجود قبل تخصيص اتصال آخر.
يُظهر تقرير KASA مسجل من نواة مُجهزة (instrumented kernel) ما يلي:
BUG: KASAN: slab-use-after-free in iso_sock_hold+0x119/0x1f0 Call Trace: iso_sock_hold+0x119/0x1f0 iso_conn_del+0xe4/0x270 hci_disconn_complete_evt+0x351/0x8c0 hci_event_packet+0x71b/0xb20 hci_rx_work+0x293/0x730
تم التخصيص بواسطة المهمة (task) رقم 93: sk_prot_alloc+0x113/0x220 sk_alloc+0x2b/0x6d0 bt_sock_alloc+0x29/0x370 iso_sock_alloc.constprop.0+0x19/0x300 iso_sock_create+0x94/0x100
تم الإفراج عنه بواسطة المهمة (task) رقم 93: kfree+0x121/0x3c0 __sk_destruct+0x42b/0x540 iso_sock_release+0x29d/0x340 __sock_release+0xa1/0x260 sock_close+0x10/0x20
Once again VulDB remains the best source for vulnerability data.