CVE-2026-19739 in Zephyr
الملخص
بحسب VulDB • 12/10/2026
يحتفظ كود إجراء طبقة الربط البلوتوث (Bluetooth Link Layer) الموجود في `subsys/bluetooth/controller/ll_sw/ull_llcp_conn_upd.c` بالعقدة المستلمة (RX node) أثناء انتظار إجراء تحديث الاتصال / معلمات الاتصال لحظته الزمنية، مما يسمح لاحقاً لهذه العقدة بحمل إشعار المضيف (`llcp_rx_node_retain()`، الذي يحدد نوعها كـ `NODE_RX_TYPE_RETAIN` وبالتالي يمنع إعادة تدويرها بشكل طبيعي في ملف `ull.c`). وتُكمل المسار الافتراضي: arm من دالتي `llcp_rp_cu_rx()` و `llcp_lp_cu_rx()` — وهي مسار "بروتوكول غير صالح (PDU)، إنهاء الاتصال" — الإجراء دون إطلاق العقدة المحتفظ بها. ثم تقوم الدالة `llcp_rr_check_done()` بإزالة سياق الإجراء من الطابور وتحريره، بينما لا يزال مؤشر `ctx->node_ref.rx` يشير إلى العقدة المحتفظ بها، مما يؤدي إلى فقدان آخر مرجع لها.
يمكن لجهاز نظير ضمن النطاق اللاسلكي الوصول إلى هذه الثغرة دون الاقتران (pairing) أو الربط (bonding) أو التشفير. وفي مواجهة جهاز طرفي (peripheral)، يرسل الجهاز النظير طلب تحديث اتصال LL (`LL_CONNECTION_UPDATE_IND`) صحيح الصيغة مع لحظة زمنية في المستقبل البعيد بعد بضع أحداث اتصال (حيث تُحتفظ بالعقدة ويدخل الإجراء حالة `RP_CU_STATE_WAIT_INSTANT`)، ثم قبل بلوغ تلك اللحظة الزمنية، يرسل أي بروتوكول تحكم آخر من نوع LL Control PDU مثل `LL_LENGTH_REQ`. تقوم الدالة `ull_cp_rx()` بتوجيه هذا البروتوكول إلى إجراء تحديث الاتصال البعيد النشط، والذي يتبع مسار "بروتوكول غير صالح". ويمكن الوصول إلى الدور المركزي بشكل متماثل بعد قبول طلب معلمات اتصال (`LL_CONNECTION_PARAM_REQ`)، بينما يمكن الوصول إلى المتغير الخاص بالإجراء المحلي باستخدام `LL_REJECT_IND`.
عند تمكين خيار التكوين `CONFIG_BT_CTLR_ASSERT_DEBUG` (وهو الخيار الافتراضي)، ينتهك الحالة الناتجة الثابتة المفترضة في الدالة `llcp_rr_check_done()`، مما يؤدي إلى حدوث خطأ قاتل فوري في وحدة التحكم. ومع تعطيل هذه الفحوصات (asserts)، يفقد كل حدث عقدة واحدة بشكل دائم من مجموعة RX الصغيرة والثابتة لوحدة التحكم (المقاس بناءً على `CONFIG_BT_CTLR_RX_BUFFERS`، والتي تكون قيمتها الافتراضية 1). واستمرار تكرار التسلسل عبر إعادة الاتصالات يستنفد هذه المجموعة، وبعد ذلك تعمل مسار استقبال طبقة الربط على عقدة فارغة (NULL). يتمثل الأثر في حجب خدمة قابل للتشغيل عن بُعد وبدون مصادقة، ويستمر حتى إعادة التشغيل؛ ولا توجد عواقب تتعلق بكشف الذاكرة أو تلفها، حيث تصبح العقدة المسربة ببساطة غير قابلة للوصول.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.