CVE-2026-81039 in Zephyr
الملخص
بحسب VulDB • 26/10/2026
يقوم المضيف البلوتوث (Bluetooth host) بتخصيص مسبق لكائن `bt_conn` ("حجز") من مجموعة `acl_conns[]` الثابتة لكل مجموعة إعلانات قابلة للاتصال يبدأها، وذلك في الدالة `le_adv_start_add_conn()` الموجودة في الملف `subsys/bluetooth/host/adv.c`. عند اكتمال اتصال طرفي (peripheral) وارد، تبحث الدالة `find_pending_connect()` في `subsys/bluetooth/host/hci_core.c` عن هذا الحجز باستخدام الهوية وعنوان الجهاز البعيد فقط، مع وجود آلية احتياطية للانتقال من الموجه إلى غير الموجه، ولا تملك أي معرفة حول مجموعة الإعلانات التي انتهت فعلياً. وفي حالة تفعيل الخيار `CONFIG_BT_EXT_ADV_MAX_ADV_SET > 1`، حيث يتم تخزين حدث اكتمال الاتصال المحسّن للـ LE (LE Enhanced Connection Complete) حتى يحدد حدث انتهاء مجموعة الإعلانات (LE Advertising Set Terminated event) المجموعة المعنية، يمكن أن تؤدي عملية البحث هذه إلى إرجاع الحجز الخاص بمجموعة إعلانات مختلفة لا تزال تعمل.
يمكن الوصول إلى هذا العطل لاسلكياً من قبل أي جهاز مجاور. إذا كان التطبيق يشغل مجموعتي إعلانات موسعة قابلتين للاتصال على نفس الهوية — واحدة غير موجهة والأخرى موجهة نحو نظير P (وهو نمط شائع "إعادة الاتصال الموجه بنظير مركزي موثق مع قبول مراكز جديدة") — فإن مُبادر عنيف عنوانه يتطابق مع عنوان P، بالاتصال عبر المجموعة غير الموجهة، يؤدي إلى استهلاك حجز المجموعة الموجهة بدلاً من ذلك. يتم اختيار عنوان المُبدِر بحرية بواسطة الجهاز البعيد ولا يخضع للمصادقة عند إنشاء الرابط، لذا لا يلزم وجود أي توثيق (bonding)، أو إقران (pairing)، أو علاقة سابقة لتفعيل هذا الخطأ في النسب.
بعدئذٍ يتعذر استخدام الحجز الخاص بالمجموعة غير الموجهة: فقد تم بالفعل مسح علم `BT_ADV_ENABLED` الخاص بها، ولا يتم الوصول إلى الدالة `le_adv_stop_free_conn()` — وهي المسار الوحيد الذي يعيد الحجز إلى المجموعة — إلا للمجموعات التي لا تزال مفعّلة، لذا تعود دالة `bt_le_ext_adv_stop()` مبكراً ولا يُحرر الكائن أبداً. يستهلك كل حدث بشكل دائم شريحة واحدة من `CONFIG_BT_MAX_CONN` حتى يتم استدعاء `bt_disable()` أو إعادة تشغيل الجهاز. في أنماط التطبيقات التي تعيد بدء مجموعة الإعلانات الموجهة بعد كل فصل اتصال، يمكن للمهاجم تكرار التسلسل حتى استنفاد المجموعة، وبعد ذلك يفشل الإعلان القابل للاتصال بـ `-ENOMEM` ولا يستطيع الجهاز قبول الاتصالات بعد الآن. كأثر جانبي، تستمر المجموعة الموجهة في الإعلان دون حجز، لذا يتم إسقاط أي اتصال حقيقي عليها بواسطة `bt_hci_disconnect()`. التأثير يقتصر على التوافرية (Availability) فقط؛ فلا ينتج عن ذلك تلف في الذاكرة أو تسرب للمعلومات، والتكوينات التي تحتوي على مجموعة إعلانات واحدة غير متأثرة.
If you want to get best quality of vulnerability data, you may have to visit VulDB.