
شرح وإثبات مفهوم نظري لـ CVE-2019-19194
هذا writeup وإثبات مفهوم نظري لـ CVE-2019-19194.
⚠️ تم العثور على هذه الثغرة الأمنية بواسطة https://asset-group.github.io/disclosures/sweyntooth/
يصف هذا التقرير كيف تسمح ثغرة Zero LTK Initialisation (CVE-2019-19194) للمهاجم بالتحكم الكامل في الاتصال بتطبيق Bluetooth Low Energy (BLE) عبر تجاوز إجراء اقتران Secure Connections.
تؤثر هذه الثغرة على المنتجات التي تستخدم تطبيقات Telink SMP التي تدعم إجراء اقتران Secure Connections.
BLE هو نظام اتصالات راديوية قصيرة المدى ومنخفضة الاستهلاك. يتكون من مجموعة من البروتوكولات المعيارية التي توفر الاتصال عن بُعد والأمان بين جهازين.
يتم توزيع حزمة BLE عبر كتلتين معماريتين: Host و Controller.
يسمح توزيع الحزمة بتنفيذ كل كتلة في مكونات منفصلة فيزيائيًا.
تسمح واجهة منطقية معيارية تُسمى Host Controller Interface (HCI) بالاتصال بين الكتلتين.
في أعلى كتلة Host يقع تطبيق BLE.

تعمل الطبقة المادية في النطاق الراديوي الصناعي والعلمي والطبي (ISM)، عبر طيف 2.4GHz. تستخدم 40 قناة: 3 قنوات إعلان و37 قناة بيانات.
تتحمل طبقة الارتباط (LL) مسؤوليات عديدة لن يتم وصفها هنا. وهي محكومة بآلة حالة تحدد أدوارًا وحالات مهمة:
يعمل بروتوكول التحكم بالارتباط المنطقي والتكيف كطبقة تعدد إرسال للبروتوكولات. ويتعامل مع تجزئة وإعادة تجميع الحزم بين الطبقات الأدنى والأعلى.
يهتم ملف الوصول العام باكتشاف الأجهزة والاتصال بها. بمعنى آخر، يحدد GAP إجراءات إرسال حزم الإعلان واستقبالها عبر المسح الضوئي.
بمجرد إنشاء اتصال بين جهازي BLE، يستخدم GATT نموذج عميل/خادم لتبادل البيانات بين الجهازين. ويستخدم كل من العميل والخادم بروتوكول السمات (ATT).
يدعم SM الإجراءات المتعلقة بالأمان مثل الاقتران والربط وتوزيع المفاتيح. يُعتبر اقتران الأجهزة أساس أمان Bluetooth: بمجرد اقترانهما، يمكن للجهازين تشفير اتصالهما، والمصادقة على بعضهما البعض، ...
من بين البروتوكولات المختلفة المشاركة في اتصال BLE، يحدث ثغرة zero LTK installation أثناء إجراء الاقتران، في وضع Secure Connections.

وضع اقتران Secure Connections هو "النهج الأكثر أمانًا" وقد طُوّر لحل نقاط الضعف في وضع Legacy. ومع ذلك، وجدت ثغرة zero LTK installation أن التنفيذات السيئة لاقتران SC تسمح بتجاوز الأمان.

يرسل الجهاز المركزي طلب اقتران ويتبادل الجهازان معلومات حول قدراتهما ومتطلباتهما الأمنية. تحدد هذه المرحلة وضع الاقتران.
تبادل المفاتيح العامة: يبدأ الجهاز المركزي تبادل المفاتيح العامة. يتحقق كل من الطرف الطرفي والمركزي من أن المفتاح المستلم يقع على منحنى P-256.
حساب DHKey: يستخدم كل جهاز مفتاحه الخاص (SK) والمفتاح العام للجهاز الآخر (PK) لحساب مفتاح Diffie-Hellman الخاص به (DHKey). بهذه الطريقة يمتلك كلا الجهازين نفس قيمة DHKey.
Central: DHKey = p256(SKc, PKp)
Peripheral: DHKey = p256(SKp, PKc)
إذا تم طلب حماية MITM، يتم تنفيذ إجراء تفاعلي لتأكيد صحة أجهزة الاقتران.
حساب المفتاح طويل الأمد (LTK) والتأكيد المتبادل: يتحقق الجهازان من مصادقة بعضهما البعض ويحسبان مفتاح LTK. يُشتق مفتاح جلسة من LTK من أجل تشفير الارتباط قبل المرحلة 3.
عبر الارتباط المشفر، يمكن للأجهزة توزيع المفاتيح.
السبب الجذري لثغرة zero LTK installation هو عدم وجود تحقق من الحالة التي يكون عليها الجهازان في إجراء الاقتران. وعلى هذا النحو، يمكن لجهاز مركزي مهاجم تخطي خطوة توليد المفاتيح والمصادقة. يؤدي هذا إلى ضبط مفتاح LTK على 0 في الجهاز الطرفي، وبالتالي، إلى مفتاح جلسة يسهل اشتقاقه.

⚠️ هذا إثبات مفهوم نظري بالكامل حيث لم أتمكن من الحصول على pcap لاكتشاف BLE أو الإعلان أو إجراءات الاقتران، كما لم يكن لدي جهاز BLE بتطبيق Telink SMP.