जेफिरनेट लोगो

फ़र्मवेयर कमजोरियाँ जो आप अपने उत्पाद में नहीं चाहते हैं

दिनांक:

फ़र्मवेयर कमजोरियाँ जो आप अपने उत्पाद में नहीं चाहते हैं
चित्रण: © IoT for All

फ़र्मवेयर भेद्यताएँ किसी डिवाइस के फ़र्मवेयर में पाई जाने वाली सुरक्षा कमज़ोरियों या खामियों को संदर्भित करती हैं। फ़र्मवेयर एक प्रकार का सॉफ़्टवेयर है जो हार्डवेयर उपकरणों के भीतर एम्बेडेड होता है और निम्न-स्तरीय नियंत्रण और कार्यक्षमता प्रदान करता है।

यह हार्डवेयर और उच्च-स्तरीय सॉफ़्टवेयर के बीच एक पुल के रूप में कार्य करता है। इन कमजोरियों का उपयोग हमलावरों द्वारा अनधिकृत पहुंच हासिल करने और डिवाइस को नियंत्रित या हेरफेर करने के लिए किया जा सकता है।

पिछले दशक में, हमने वाणिज्यिक और औद्योगिक IoT उपकरणों को लक्षित करते हुए कई सुरक्षा उल्लंघन देखे हैं। उदाहरण के लिए, साइबर अपराधी फिनिश शहर लप्पीनरांटा में दो इमारतों में हीटिंग बंद करने में सक्षम थे, और अन्य हमले जैसे Shamoonन्यूयॉर्क बांध, और मिराई बॉटनेट डॉयचे टेलीकॉम राउटर्स जैसे औद्योगिक IoT उपकरणों को प्रभावित किया है, जिसके परिणामस्वरूप सेवाएं बाधित हुईं।

हालाँकि यह व्यापक रूप से ज्ञात था कि IoT उपकरणों में सुरक्षा एक कमजोर बिंदु थी, लेकिन पिछले साल जब रूस ने यूक्रेन पर हमला किया, तब तक इस मुद्दे को संबोधित करने के लिए बहुत कम प्रगति हुई थी। हमले ने साइबर हमलों की वास्तविक शक्ति का प्रदर्शन किया, जिसमें एनोनिमस ने क्रेमलिन सीसीटीवी प्रणाली को हैक किया और रूस ने यूक्रेनी पावर ग्रिड पर हमला किया।

इन घटनाओं के बाद, अमेरिका और यूरोपीय संघ ने IoT/IIoT साइबर सुरक्षा स्थिति को विनियमित करने में रुचि व्यक्त की है, जो एक बहुत जरूरी कदम है। हालाँकि, सवाल यह है: हमें कहाँ से शुरुआत करनी चाहिए, और सबसे खतरनाक कमजोरियाँ क्या हैं जो ऐसे हमलों का कारण बन सकती हैं?

क्या कोई चांदी की गोली है जो निर्माताओं को इन हमलों से बचा सकती है? आइए कुछ सबसे खतरनाक कमजोरियों और उनके संभावित शमन पर एक नजर डालें।

कमजोरियाँ पवित्र कंघी बनानेवाले की रेती: आरसीई

अधिकांश आईटी पेशेवर रिमोट कोड निष्पादन (आरसीई) की अवधारणा से परिचित हैं, जो सबसे खतरनाक फर्मवेयर सुरक्षा खतरों में से एक है। यदि कोई हमलावर आरसीई भेद्यता का फायदा उठा सकता है, तो वे डिवाइस या उपकरणों पर पूर्ण नियंत्रण हासिल कर लेते हैं और संभावित रूप से एक बॉटनेट बना सकते हैं।

इसके अतिरिक्त, हमलावर उपयोगकर्ता डेटा चुरा सकते हैं या विभिन्न निर्माताओं के खिलाफ जासूसी में संलग्न हो सकते हैं। मूलतः, एक हमलावर अपनी इच्छानुसार कोई भी परिणाम प्राप्त कर सकता है।

सवाल उठता है: हमलावर उपकरणों में आरसीई कमजोरियों का पता कैसे लगा सकते हैं, और किस प्रकार से आरसीई हो सकता है?

आइए सबसे आम देखें।

  • प्रमाणीकरण बायपास: हमलावर कमजोर या डिफ़ॉल्ट पासवर्ड का उपयोग करने वाले IoT उपकरणों में प्रमाणीकरण तंत्र को बायपास कर सकते हैं। कभी-कभी, वे तार्किक बग का फायदा उठा सकते हैं या विशिष्ट सुरक्षा जांच को दरकिनार कर सकते हैं। कई तकनीकों के परिणामस्वरूप प्रमाणीकरण बायपास हो सकता है, जिसमें डिफ़ॉल्ट पासवर्ड, क्रूर-बल के हमले, नेटवर्क कमजोरियां, या फर्मवेयर कमजोरियां शामिल हैं।
  • बफ़र ओवरफ्लो: बफ़र ओवरफ़्लो भेद्यता तब होती है जब कोई प्रोग्राम बफ़र में क्षमता से अधिक डेटा संग्रहीत करने का प्रयास करता है, जिससे डेटा आसन्न मेमोरी स्थानों में ओवरफ़्लो हो जाता है। एक हमलावर इनपुट डेटा तैयार करके इस भेद्यता का फायदा उठा सकता है जो बफर को ओवरफ्लो कर देता है और दुर्भावनापूर्ण कोड के साथ आसन्न मेमोरी स्थानों को अधिलेखित कर देता है।
  • इंजेक्शन की खामियाँ: इंजेक्शन संबंधी खामियां तब होती हैं जब कोई हमलावर असुरक्षित इनपुट या इंटरफेस, जैसे कि वेब फॉर्म या एपीआई के माध्यम से IoT डिवाइस में दुर्भावनापूर्ण कोड इंजेक्ट कर सकता है।

हम इनमें से प्रत्येक पर गहराई से विचार करेंगे।

प्रमाणीकरण बायपास

एम्बेडेड सिस्टम में प्रमाणीकरण सुरक्षा का एक महत्वपूर्ण पहलू है। यह सुनिश्चित करता है कि केवल अधिकृत व्यक्ति ही डिवाइस और इसकी कार्यप्रणाली तक पहुंच सकते हैं।

प्रमाणीकरण बाईपास उस स्थिति को संदर्भित करता है जहां एक हमलावर उपयोगकर्ता नाम और पासवर्ड जैसे आवश्यक प्रमाणीकरण क्रेडेंशियल प्रदान किए बिना किसी डिवाइस तक पहुंच सकता है। यह सुरक्षा भेद्यता हमलावरों को डिवाइस और उसकी कार्यप्रणाली पर नियंत्रण हासिल करने की अनुमति देती है, जिससे संभावित रूप से डिवाइस को नुकसान हो सकता है या संवेदनशील डेटा तक पहुंच हो सकती है।

ऐसी विभिन्न तकनीकें हैं जिनका उपयोग हमलावर प्रमाणीकरण को बायपास करने के लिए कर सकते हैं। एक मानक तरीका डिफ़ॉल्ट या कमज़ोर पासवर्ड का उपयोग करना है। कई IoT उपकरणों में डिफ़ॉल्ट लॉगिन क्रेडेंशियल होते हैं जो व्यापक रूप से ज्ञात होते हैं और आसानी से ऑनलाइन पाए जा सकते हैं।

हमलावर प्रमाणीकरण प्रक्रिया से गुजरे बिना डिवाइस तक पहुंचने के लिए इस जानकारी का उपयोग कर सकते हैं। वे कमजोर पासवर्ड का अनुमान लगाने के लिए क्रूर-बल के हमलों का भी उपयोग कर सकते हैं।

प्रमाणीकरण बायपास प्राप्त करने की एक अन्य विधि में फर्मवेयर कमजोरियों का फायदा उठाना शामिल है। उदाहरण के लिए, यह ओपन-सोर्स सॉफ़्टवेयर के कमजोर संस्करण का उपयोग करने या प्रमाणीकरण प्रवाह में तार्किक बग का उपयोग करने से हो सकता है।

इसके अतिरिक्त, प्रमाणीकरण को बायपास करने के लिए नेटवर्क कमजोरियों का फायदा उठाया जा सकता है। हमलावर लॉगिन क्रेडेंशियल कैप्चर करने के लिए नेटवर्क ट्रैफ़िक को रोक सकते हैं या डिवाइस का प्रतिरूपण करने और प्रमाणीकरण को बायपास करने के लिए मैन-इन-द-मिडिल हमलों का उपयोग कर सकते हैं।

प्रमाणीकरण बायपास शमन

डिफ़ॉल्ट लॉगिन क्रेडेंशियल्स को बदलना और उपयोग करना आवश्यक है मजबूत पासवर्ड. मजबूत पासवर्ड में अपरकेस और लोअरकेस अक्षर, संख्याएं और प्रतीक होने चाहिए और 12 अक्षर लंबे होने चाहिए।

दूसरे, आप अपने उत्पाद में उपयोग किए जाने वाले सभी तृतीय पक्ष ओपन-सोर्स घटकों के बारे में अपडेट रहें।

तीसरा, प्रमाणीकरण बायपास को कम करने के लिए नेटवर्क को सुरक्षित करना महत्वपूर्ण है। इसे नेटवर्क ट्रैफ़िक को एन्क्रिप्ट करने के लिए HTTPS या TLS जैसे सुरक्षित संचार प्रोटोकॉल लागू करके प्राप्त किया जा सकता है। अंत में, प्रत्येक नए उत्पाद रिलीज पर नियमित रूप से प्रवेश परीक्षण आयोजित करें।

बफर का उमड़ना

बफर ओवरफ्लो सॉफ्टवेयर सिस्टम में सबसे प्रसिद्ध और प्रचलित कमजोरियों में से एक है। ये कमज़ोरियाँ विभिन्न कारणों से हो सकती हैं। एक सामान्य कारण प्रोग्राम में इनपुट सत्यापन की कमी है, जो एक हमलावर को आवंटित बफर आकार से बड़ा डेटा इनपुट करने की अनुमति देता है।

इससे ऐसी स्थिति उत्पन्न हो सकती है जहां अतिरिक्त डेटा आसन्न मेमोरी स्थानों को अधिलेखित कर देता है, जिसके परिणामस्वरूप अप्रत्याशित व्यवहार या क्रैश हो जाता है। बफ़र ओवरफ़्लो कमजोरियों का एक अन्य कारण असुरक्षित फ़ंक्शंस का उपयोग है जो सीमा जाँच नहीं करते हैं, जैसे कि स्ट्रैपी और स्ट्रैट। हम वास्तविक जीवन परिदृश्य में बफ़र ओवरफ़्लो बग प्रदर्शित करेंगे।

ऐसा करने के लिए, हम उपयोग करेंगे डीवीआरएफ (अति संवेदनशील राउटर फ़र्मवेयर) हमारे लक्ष्य के रूप में. फ़र्मवेयर को हमारे प्लेटफ़ॉर्म में छोड़ने के बाद, यह छवि को निकालेगा और संभावित कमजोरियों की खोज के लिए प्रत्येक बाइनरी को डीकंपाइल करेगा।

हमने यह लक्ष्य इसलिए चुना क्योंकि यह हर किसी के लिए सुलभ है, और हम सार्वजनिक रूप से उपलब्ध किसी भी निर्माता के फर्मवेयर से समझौता नहीं करना चाहते हैं।

जैसा कि हम यहां देखते हैं, प्रोग्राम दो पूर्णांक तर्क लेता है, परम_1 और परम_2, और एक स्थानीय चर घोषित करता है जिसे कहा जाता है स्थानीय_200 प्रकार का undefined2 (एक 2-बाइट या 16-बिट, अहस्ताक्षरित पूर्णांक)। यह नामक एक सारणी भी प्रदर्शित करता है auStack510 आकार 502 बाइट्स का.

प्रोग्राम तब उपयोग करता है मेमसेट() सभी बाइट्स को सेट करने का कार्य auStack510 शून्य करने के लिए. उसके बाद, यह जाँचता है कि क्या का मान है परम_1 2 से कम है। यदि ऐसा है, तो प्रोग्राम एक उपयोग संदेश प्रिंट करता है और एक त्रुटि कोड 1 के साथ बाहर निकलता है।

If परम_1 2 से अधिक या उसके बराबर है, प्रोग्राम एक स्वागत संदेश प्रिंट करता है और दूसरे तर्क द्वारा इंगित स्ट्रिंग की सामग्री की प्रतिलिपि बनाता है _(*(चार)(परम_2 + 4))_** में स्थानीय_200 का उपयोग स्ट्रैपी() समारोह। यहीं पर बफ़र ओवरफ़्लो भेद्यता निहित है।

यदि दूसरे तर्क द्वारा इंगित स्ट्रिंग 16 बाइट्स (आकार) से अधिक लंबी है स्थानीय_200), स्ट्रैपी() फ़ंक्शन के अंत से पहले लिखेगा स्थानीय_200 बफ़र करें और आसन्न की सामग्री को अधिलेखित करें auStack510 बफर.

इससे अप्रत्याशित व्यवहार हो सकता है, जिसमें प्रोग्राम को क्रैश करना या किसी हमलावर को फर्मवेयर कमजोरियों से दुर्भावनापूर्ण कोड निष्पादित करने की अनुमति देना शामिल है।

इस प्रकार के बफ़र ओवरफ़्लो हमले को रोकने के लिए, ऐसे फ़ंक्शंस का उपयोग करना आवश्यक है जो बफ़र पर लिखे गए डेटा की मात्रा को सीमित करते हैं, जैसे strncpy() or एसएनप्रिंटएफ(). इसके अतिरिक्त, प्रोग्रामों को बफ़र ओवरफ़्लो सुरक्षा के साथ संकलित किया जाना चाहिए, जैसे ढेर कैनरी और एड्रेस स्पेस लेआउट रैंडमाइजेशन (एएसएलआर, एफएएसएलआर)।

कमांड इंजेक्शन

कमांड इंजेक्शन एक ऐसा हमला है जहां एक हमलावर लक्ष्य डिवाइस पर मनमाने आदेशों को निष्पादित करने के लिए कमांड शेल में दुर्भावनापूर्ण कोड इंजेक्ट करता है। यह हमला कई तरीकों से किया जा सकता है, जिसमें वेब इंटरफेस, इनपुट फ़ील्ड और एपीआई शामिल हैं।

फर्मवेयर में, कमांड इंजेक्शन अक्सर वेब इंटरफेस या एपीआई के माध्यम से किया जाता है, क्योंकि ये उपयोगकर्ताओं के लिए डिवाइस के साथ इंटरैक्ट करने के सामान्य तरीके हैं।

फ़र्मवेयर में कमांड इंजेक्शन के निहितार्थ गंभीर हो सकते हैं। एक हमलावर जो कमांड शेल में कोड को सफलतापूर्वक इंजेक्ट करता है, वह लक्ष्य डिवाइस पर मनमाने कमांड निष्पादित कर सकता है।

यह किसी हमलावर को संवेदनशील डेटा तक पहुंच प्राप्त करने, डिवाइस को नियंत्रित करने और यहां तक ​​कि नेटवर्क पर अन्य डिवाइसों के खिलाफ हमले शुरू करने की अनुमति दे सकता है। इसके अतिरिक्त, कमांड इंजेक्शन का पता लगाना चुनौतीपूर्ण हो सकता है, क्योंकि यह अक्सर वैध ट्रैफ़िक के रूप में प्रकट होता है।

यह कोड नामक एक फ़ंक्शन प्रतीत होता है wsc_generate_pin जो एक वाई-फाई संरक्षित सेटअप (डब्ल्यूपीएस) पिन उत्पन्न करता है। डब्ल्यूपीएस पिन एक आठ अंकों की संख्या है जिसका उपयोग वायरलेस डिवाइस को वाई-फाई नेटवर्क पर प्रमाणित करने के लिए किया जाता है।

हालाँकि, इस कोड में एक संभावित कमांड इंजेक्शन भेद्यता है। सिस्टम फ़ंक्शन का उपयोग करने से भेद्यता उत्पन्न होती है, जो शेल कमांड निष्पादित करता है। विशेष रूप से, sprintf फ़ंक्शन का उपयोग एक कमांड स्ट्रिंग बनाने के लिए किया जाता है जिसे इनपुट के उचित सत्यापन या स्वच्छता के बिना सिस्टम में पास कर दिया जाता है।

असुरक्षित कोड हाइलाइट की गई पंक्ति है:

यह कोड एक शेल कमांड बनाता है जो का मान लिखता है स्थानीय_18 को / Dev / यादृच्छिक फ़ाइल। यदि कोई हमलावर के मूल्य को नियंत्रित कर सकता है स्थानीय_18, वे इसमें अतिरिक्त शेल कमांड इंजेक्ट कर सकते हैं acStack141 बफ़र, मनमाना कोड निष्पादन की ओर ले जाता है। चूंकि यह वेरिएबल उपयोगकर्ता (डब्ल्यूपीएस पिन) से आया है, इसलिए यह भेद्यता शोषण योग्य है।

इस भेद्यता को रोकने के लिए, शेल कमांड के निर्माण के लिए उपयोग किए जाने वाले सभी इनपुट को ठीक से मान्य और स्वच्छ करना आवश्यक है। इनपुट सत्यापन नियमित अभिव्यक्तियों या श्वेतसूची फ़िल्टरिंग का उपयोग करके किया जा सकता है।

श्वेतसूची फ़िल्टरिंग में वर्णों या मानों के एक अनुमत सेट को परिभाषित करना शामिल है जो इनपुट में शामिल हो सकता है। डेवलपर्स को बफर ओवरफ़्लो हमलों को रोकने के लिए इनपुट में वर्णों की संख्या को भी सीमित करना चाहिए, जैसा कि ऊपर चर्चा की गई है।

IoT सुरक्षा की चुनौती

हम समझते हैं कि IoT सुरक्षा एक महत्वपूर्ण चुनौती है, और कई निर्माताओं को इस क्षेत्र में सुरक्षा पेशेवरों को काम पर रखने में कठिनाइयों का सामना करना पड़ता है। ऊपर उल्लिखित शमन तकनीकों को लागू करके, आप अपने उपकरणों को सुरक्षित करने की दिशा में महत्वपूर्ण कदम उठा सकते हैं।

इसके अतिरिक्त, हम सुरक्षा सुधार यात्रा में सबसे आसान प्रारंभिक चरण के रूप में संकलन-समय सख्त झंडे का उपयोग करने की अत्यधिक अनुशंसा करते हैं।

किसी भी संभावित कमजोरियों की पहचान करने और उन्हें तुरंत संबोधित करने के लिए नियमित सुरक्षा ऑडिट और परीक्षण करना भी आवश्यक है। इसे प्राप्त करने के लिए, हम तृतीय-पक्ष सुरक्षा प्रयोगशालाओं का उपयोग करने या, कम से कम, फ़र्मवेयर विश्लेषण टूल का उपयोग करने की अनुशंसा करते हैं।

स्पॉट_आईएमजी

नवीनतम खुफिया

स्पॉट_आईएमजी