बेल्किन वेमो स्मार्ट प्लग V2 - बफर ओवरफ्लो जिसे पैच नहीं किया जाएगा

बेल्किन वेमो स्मार्ट प्लग V2 - बफर ओवरफ्लो जिसे पैच नहीं किया जाएगा

स्रोत नोड: 2657924

IoT सुरक्षा कंपनी स्टर्नम के शोधकर्ता उसके अंदर खोदो जाने-माने डिवाइस ब्रांड Belkin का एक लोकप्रिय होम ऑटोमेशन मेन प्लग।

जिस मॉडल को उन्होंने देखा, द वेमो मिनी स्मार्ट प्लग (F7C063) स्पष्ट रूप से अपने शेल्फ जीवन के अंत की ओर बढ़ रहा है, लेकिन हमने उन्हें ऑनलाइन बिक्री के लिए बहुत कुछ पाया, साथ ही बेल्किन की साइट पर उन्हें कैसे स्थापित किया जाए, इस पर विस्तृत सलाह और निर्देश दिए।

पुराने (अल्पकालिक आधुनिक अर्थों में) हालांकि वे हो सकते हैं, शोधकर्ताओं ने कहा कि:

डिवाइस में हमारी प्रारंभिक रुचि इनमें से कई के हमारे प्रयोगशाला के आसपास पड़ी होने और हमारे घरों में उपयोग करने से आई है, इसलिए हम सिर्फ यह देखना चाहते थे कि उनका उपयोग कितना सुरक्षित (या नहीं) है। [... टी] उनका एक बहुत लोकप्रिय उपभोक्ता उपकरण प्रतीत होता है [; b]इन नंबरों के आधार पर, यह अनुमान लगाना सुरक्षित है कि अकेले Amazon पर कुल बिक्री सैकड़ों हजारों में होनी चाहिए।

सीधे शब्दों में कहें तो ऐसे बहुत से लोग हैं जो पहले से ही इन चीजों को खरीद चुके हैं और प्लग इन कर चुके हैं, और अभी उनका उपयोग अपने घरों में बिजली के आउटलेट को नियंत्रित करने के लिए कर रहे हैं।

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

आईओटी में एस…

कई तथाकथित इंटरनेट ऑफ थिंग्स (IoT) उपकरणों के साथ समस्या, जैसा कि पुराना मजाक है, यह है कि यह "IoT" में "S" अक्षर है जो सुरक्षा के लिए है ...

...अर्थात्, निश्चित रूप से, अक्सर उतनी साइबर सुरक्षा नहीं होती जितनी आप उम्मीद कर सकते हैं, या कोई भी नहीं।

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

हमने इससे पहले विभिन्न उत्पादों की एक विस्तृत श्रृंखला में IoT असुरक्षा के बारे में लिखा है इंटरनेट केतली (हाँ, वास्तव में) जो आपके घर के वाई-फाई पासवर्ड को सुरक्षा कैमरों में लीक कर सकता है, जिसका उपयोग बदमाश अपने रखने के लिए कर सकते हैं आप पर नजर दूसरे तरीके के बजाय, नेटवर्क से जुड़ी डिस्क ड्राइव को होने का खतरा है रैंसमवेयर द्वारा छींटे सीधे इंटरनेट पर।

इस मामले में, शोधकर्ताओं ने जनवरी 2023 में वेमो मिनी स्मार्ट प्लग में एक रिमोट कोड निष्पादन छेद पाया, फरवरी 2023 में इसकी सूचना दी, और मार्च 2023 में इसके लिए एक सीवीई नंबर प्राप्त किया (CVE-2023-27217).

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

(हमें यकीन नहीं है कि इस तरह का "जीवन का अंत" बर्खास्तगी कितना स्वीकार्य होगा यदि डिवाइस के 120V AC या 230V AC विद्युत सर्किटरी में कोई दोष है, जैसे कि अत्यधिक गरम होने और हानिकारक रसायनों के उत्सर्जन या सेटिंग की संभावना आग लगी है, लेकिन ऐसा लगता है कि डिवाइस में लो-वोल्टेज डिजिटल इलेक्ट्रॉनिक्स या फ़र्मवेयर में दोषों को अनदेखा किया जा सकता है, भले ही वे डिवाइस में मेन पावर स्विच को इच्छानुसार बार-बार फ्लैश करने वाले साइबर हमलावर को जन्म दे सकते हैं।)

जब मित्रवत नाम आपके शत्रु हों

शोधकर्ताओं ने जो समस्या खोजी वह बहुत पुरानी थी स्टैक बफर अतिप्रवाह डिवाइस सॉफ़्टवेयर के हिस्से में जो आपको तथाकथित बदलने की अनुमति देता है FriendlyName डिवाइस का - टेक्स्ट स्ट्रिंग जो तब प्रदर्शित होता है जब आप इसे अपने फोन पर ऐप से कनेक्ट करते हैं।

डिफ़ॉल्ट रूप से, ये डिवाइस की तर्ज पर एक दोस्ताना नाम के साथ शुरू होते हैं Wemo mini XYZ, जहां XYZ तीन हेक्साडेसिमल अंकों को दर्शाता है जिनका हम अनुमान लगा रहे हैं कि छद्म यादृच्छिक रूप से चुने गए हैं।

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

लेकिन आप शायद बाद में उनका नाम बदलना चाहेंगे, ताकि भविष्य में उन्हें अलग-अलग बताना आसान हो, जैसे कि अनुकूल नाम निर्दिष्ट करके TV power, Laptop charger और Raspberry Pi server.

बेल्किन प्रोग्रामर (या, अधिक सटीक रूप से, कोड के प्रोग्रामर जो इन बेल्किन-ब्रांडेड उपकरणों में समाप्त हो गए, जिन्होंने अन्य ब्रांड नामों को भी स्मार्ट प्लग सॉफ़्टवेयर की आपूर्ति की हो सकती है) स्पष्ट रूप से ट्रैक रखने के लिए अस्थायी भंडारण के 68 बाइट्स आरक्षित किए। नाम बदलने की प्रक्रिया के दौरान नया नाम।

लेकिन वे यह जांचना भूल गए कि आपके द्वारा प्रदान किया गया नाम उस 68-बाइट स्लॉट में फ़िट होगा।

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

विडंबना यह है कि उन्होंने न केवल आपको डिवाइस के ठीक से व्यवहार करने के लिए आवश्यक 68-बाइट की सीमा तक रखने के लिए, बल्कि आपको केवल 30 वर्णों में टाइप करने तक सीमित रखने के लिए भी बहुत सावधानी बरती।

हम सभी जानते हैं कि क्लाइंट साइड को सर्वर साइड पर चेक करने के बजाय (या, अभी तक, और भी बेहतर) चेक करने के बजाय एरर चेकिंग करने देना एक भयानक विचार है:

  • क्लाइंट कोड और सर्वर कोड अनुरूपता से बाहर हो सकते हैं। भविष्य के क्लाइंट ऐप्स यह तय कर सकते हैं कि 72-वर्ण नाम एक अच्छा विकल्प होगा, और सर्वर को सुरक्षित रूप से संभालने की तुलना में अधिक डेटा भेजना शुरू कर देगा। भविष्य के सर्वर-साइड कोडर यह देख सकते हैं कि कोई भी कभी भी आरक्षित पूर्ण 68 बाइट्स का उपयोग नहीं करता है, और एकतरफा निर्णय लेता है कि 24 पर्याप्त से अधिक होना चाहिए।
  • एक हमलावर ऐप से परेशान नहीं होने का विकल्प चुन सकता है। डिवाइस के लिए अपने स्वयं के अनुरोधों को उत्पन्न और प्रसारित करके, वे केवल ऐप पर भरोसा करने वाली किसी भी सुरक्षा जांच को दरकिनार कर देंगे।

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

ढेर को दूषित करना

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

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

हर बार जब सबरूटीन का उपयोग किया जाता है, तो स्टैक पर वापसी का पता जादुई रूप से दर्ज किया जाता है, ताकि कंप्यूटर स्वचालित रूप से अपने रास्ते को "खोल" सके जहां से सबरूटीन को बुलाया गया था, जो हर बार सक्रिय होने पर अलग हो सकता है।

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

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

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

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

दो सामान्य बचाव इस प्रकार के कारनामों से बचाव में मदद करते हैं:

  • एड्रेस स्पेस लेआउट रैंडमाइजेशन, जिसे ASLR के रूप में भी जाना जाता है। ऑपरेटिंग सिस्टम हर बार चलने वाले कार्यक्रमों को जान-बूझकर थोड़े भिन्न स्मृति स्थानों पर लोड करता है। इससे हमलावरों के लिए यह अनुमान लगाना कठिन हो जाता है कि बग्गी प्रोग्राम को इस तरह से गलत तरीके से कैसे निर्देशित किया जाए जो अंततः कोड को क्रैश करने के बजाय नियंत्रण प्राप्त करता है और बनाए रखता है।
  • स्टैक कैनरी, इसका नाम उन पक्षियों के नाम पर रखा गया है जिन्हें खनिक अपने साथ भूमिगत ले जाते थे क्योंकि वे मीथेन की उपस्थिति में बेहोश हो जाते थे, इस प्रकार विस्फोट के जोखिम की एक क्रूर लेकिन प्रभावी प्रारंभिक चेतावनी प्रदान करते थे। हर बार जब सबरूटीन को कॉल किया जाता है तो प्रोग्राम जान-बूझकर रिटर्न एड्रेस के ठीक सामने डेटा का एक ज्ञात-लेकिन-यादृच्छिक ब्लॉक सम्मिलित करता है, ताकि एक बफर ओवरफ्लो अपरिहार्य रूप से और "कैनरी" को पहले ओवरराइट कर दे, इससे पहले कि यह रौंदने के लिए पर्याप्त रूप से आगे निकल जाए। सभी महत्वपूर्ण वापसी पते पर।

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

लेकिन शोधकर्ताओं को स्टैक कैनरी समस्या के बारे में चिंता करने की ज़रूरत नहीं थी, क्योंकि बग्गी ऐप को इसके स्रोत कोड से "इन्सर्ट कैनरी-चेकिंग सेफ्टी इंस्ट्रक्शंस" फीचर के साथ संकलित किया गया था।

(कैनरी-संरक्षित कार्यक्रम आमतौर पर असुरक्षित लोगों की तुलना में थोड़े बड़े और धीमे होते हैं क्योंकि सुरक्षा जांच करने के लिए प्रत्येक सबरूटीन में अतिरिक्त कोड की आवश्यकता होती है।)

क्या करना है?

  • अगर आप Wemo Smart Plug V2 के मालिक हैं, सुनिश्चित करें कि आपने अपने होम राउटर को इंटरनेट पर "बाहर" से एक्सेस करने की अनुमति देने के लिए कॉन्फ़िगर नहीं किया है। यह शब्दजाल में आपकी के रूप में जानी जाने वाली चीज़ों को कम करता है हमले की सतह क्षेत्र.
  • अगर आपके पास ऐसा राउटर है जो यूनिवर्सल प्लग एंड प्ले को सपोर्ट करता है, UPnP के रूप में भी जाना जाता है, सुनिश्चित करें कि यह बंद है। UPnP आंतरिक उपकरणों के लिए अनजाने में बाहरी लोगों के लिए खोलना बेहद आसान बनाता है।
  • यदि आप एक प्रोग्रामर हैं, केवल कुछ बाइट्स बचाने के लिए सॉफ़्टवेयर सुरक्षा सुविधाओं (जैसे स्टैक सुरक्षा या स्टैक कैनरी चेकिंग) को बंद करने से बचें। यदि आप वास्तव में स्मृति से बाहर चल रहे हैं, तो सुरक्षा कम करने के बजाय अपने कोड में सुधार करके या सुविधाओं को हटाकर अपने पदचिह्न को कम करने के लिए देखें ताकि आप अधिक रट सकें।

समय टिकट:

से अधिक नग्न सुरक्षा