
CVE-2019-19194 के लिए एक राइटअप और सैद्धांतिक प्रूफ-ऑफ-कॉन्सेप्ट
यह CVE-2019-19194 का एक विवरण और सैद्धांतिक प्रूफ-ऑफ-कॉन्सेप्ट है।
⚠️ यह CVE https://asset-group.github.io/disclosures/sweyntooth/ द्वारा पाया गया था।
यह रिपोर्ट बताती है कि कैसे Zero LTK Initialisation कमजोरी (CVE-2019-19194) एक हमलावर को Secure Connections पेयरिंग प्रक्रिया को बायपास करके Bluetooth Low Energy (BLE) अनुप्रयोग पर पूर्ण संचार नियंत्रण प्रदान करती है।
यह कमजोरी उन उत्पादों को प्रभावित करती है जो Telink SMP कार्यान्वयन का उपयोग करते हैं और Secure Connections पेयरिंग प्रक्रिया का समर्थन करते हैं।
BLE एक कम-खपत, कम-दूरी वाली रेडियो संचार प्रणाली है। इसमें मानकीकृत प्रोटोकॉल का एक समूह शामिल है जो दो उपकरणों के बीच दूरस्थ कनेक्टिविटी और सुरक्षा प्रदान करता है।
BLE स्टैक दो आर्किटेक्चरल ब्लॉकों में वितरित है: Host और Controller.
स्टैक वितरण प्रत्येक ब्लॉक को भौतिक रूप से अलग घटकों में लागू करने की अनुमति देता है।
Host Controller Interface (HCI) नामक एक मानक लॉजिकल इंटरफ़ेस दोनों ब्लॉकों के बीच संचार की अनुमति देता है।
Host ब्लॉक के शीर्ष पर BLE एप्लिकेशन स्थित है।

भौतिक परत Industrial, Scientific and Medial (ISM) रेडियो बैंड में, 2.4GHz स्पेक्ट्रम पर कार्य करती है। यह 40 चैनलों का उपयोग करती है: 3 विज्ञापन चैनल और 37 डेटा चैनल।
लिंक परत (LL) की कई जिम्मेदारियाँ हैं जिनका वर्णन यहाँ नहीं किया जाएगा। यह एक स्टेट मशीन द्वारा नियंत्रित होती है जो महत्वपूर्ण भूमिकाओं और अवस्थाओं को परिभाषित करती है:
लॉजिकल लिंक कंट्रोल और एडेप्टेशन प्रोटोकॉल एक प्रोटोकॉल मल्टीप्लेक्सिंग परत के रूप में कार्य करता है। यह नीचे और ऊपर की परतों के बीच पैकेटों के विखंडन और पुनर्संयोजन को संभालता है।
जेनेरिक एक्सेस प्रोफ़ाइल डिवाइस डिस्कवरी और कनेक्शन से संबंधित है। दूसरे शब्दों में, GAP विज्ञापन पैकेटों के प्रसारण और स्कैनिंग के माध्यम से उनके स्वागत की प्रक्रियाएँ परिभाषित करता है।
जब दो BLE डिवाइसों के बीच कनेक्शन स्थापित हो जाता है, GATT दो डिवाइसों के बीच डेटा का आदान-प्रदान करने के लिए क्लाइंट/सर्वर मॉडल का उपयोग करता है। और क्लाइंट और सर्वर दोनों एट्रिब्यूट प्रोटोकॉल (ATT) का उपयोग करते हैं।
SM सुरक्षा से संबंधित प्रक्रियाओं जैसे पेयरिंग, बॉन्डिंग और कुंजी वितरण का समर्थन करता है। डिवाइस पेयरिंग को ब्लूटूथ सुरक्षा की नींव माना जाता है: एक बार पेयर हो जाने पर, दोनों डिवाइस अपने संचार को एन्क्रिप्ट कर सकते हैं, एक-दूसरे को प्रमाणित कर सकते हैं, ...
BLE संचार में शामिल विभिन्न प्रोटोकॉल के बीच, zero LTK installation CVE पेयरिंग प्रक्रिया के दौरान, Secure Connections मोड में होता है।

Secure Connections पेयरिंग मोड "अधिक सुरक्षित दृष्टिकोण" है और इसे Legacy मोड की कमजोरियों को हल करने के लिए विकसित किया गया था। हालाँकि, zero LTK installation CVE ने पाया कि SC पेयरिंग के खराब कार्यान्वयन सुरक्षा को बायपास करने की अनुमति देते हैं।

केंद्रीय डिवाइस एक पेयरिंग अनुरोध भेजता है और दोनों डिवाइस अपनी सुरक्षा क्षमताओं और आवश्यकताओं का आदान-प्रदान करते हैं। यह चरण पेयरिंग मोड को परिभाषित करता है।
पब्लिक कुंजी विनिमय: केंद्रीय डिवाइस द्वारा पब्लिक कुंजियों का आदान-प्रदान शुरू किया जाता है। पेरिफेरल और केंद्रीय दोनों सत्यापित करते हैं कि उन्हें प्राप्त कुंजी P-256 कर्व पर है।
DHKey की गणना: प्रत्येक डिवाइस अपनी निजी कुंजी (SK) और दूसरे डिवाइस की पब्लिक कुंजी (PK) का उपयोग करके अपनी डिफी-हेलमैन कुंजी (DHKey) की गणना करता है। इस प्रकार दोनों डिवाइसों के पास समान DHKey मान होता है।
Central: DHKey = p256(SKc, PKp)
Peripheral: DHKey = p256(SKp, PKc)
यदि MITM सुरक्षा का अनुरोध किया गया था, तो पेयरिंग डिवाइसों की प्रामाणिकता की पुष्टि करने के लिए एक इंटरैक्टिव प्रक्रिया होती है।
Long Term Key (LTK) की गणना और आपसी पुष्टि: डिवाइस एक-दूसरे को प्रमाणित करते हैं और एक LTK कुंजी की गणना करते हैं। चरण 3 से पहले लिंक को एन्क्रिप्ट करने के लिए LTK से एक सत्र कुंजी प्राप्त की जाती है।
एन्क्रिप्टेड लिंक के माध्यम से, डिवाइस कुंजियाँ वितरित कर सकते हैं।
zero LTK installation का मूल कारण यह है कि पेयरिंग प्रक्रिया में दो डिवाइस किस अवस्था में हैं, इसकी कोई जाँच नहीं होती है। इस प्रकार, एक हमलावर केंद्रीय डिवाइस कुंजी निर्माण और प्रमाणीकरण चरण को छोड़ सकता है। इसके परिणामस्वरूप पेरिफेरल डिवाइस में LTK कुंजी 0 पर सेट हो जाती है, और इस प्रकार, आसानी से व्युत्पन्न होने योग्य सत्र कुंजी बनती है।

⚠️ यह पूरी तरह से सैद्धांतिक प्रूफ-ऑफ-कॉन्सेप्ट है क्योंकि मैं BLE डिस्कवरी, विज्ञापन या पेयरिंग प्रक्रियाओं का pcap प्राप्त नहीं कर सका, और न ही मेरे पास Telink SMP कार्यान्वयन वाला BLE डिवाइस था।