गंभीर सुरक्षा: पुराने क्रिप्टो के कारण सांबा लॉगऑन बग

गंभीर सुरक्षा: पुराने क्रिप्टो के कारण सांबा लॉगऑन बग

साम्बा, सीधे शब्दों में कहें तो, Microsoft Windows में उपयोग किए जाने वाले नेटवर्किंग प्रोटोकॉल का एक अति-उपयोगी, मेगा-लोकप्रिय, ओपन-सोर्स रीइम्प्लीमेंटेशन है, और इंटरनेटवर्किंग (दो अलग-अलग प्रकार के नेटवर्क को एक साथ जोड़ना) में इसके ऐतिहासिक महत्व को कम करके नहीं आंका जा सकता है।

1990 के दशक के अंत में, Microsoft नेटवर्किंग ने अपनी अपारदर्शी, मालिकाना प्रकृति को छोड़ दिया और CIFS के रूप में जाना जाने वाला एक खुला मानक बन गया, जिसका संक्षिप्त नाम है सामान्य इंटरनेट फ़ाइल सिस्टम.

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

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

लेकिन उस नाम का एक व्यावसायिक उत्पाद पहले से मौजूद था, इसलिए एक नए मोनिकर की जरूरत थी।

तभी इस परियोजना के रूप में जाना जाने लगा साम्बा, एक आनंददायक यादगार नाम जो फ़ॉर्म के शब्दों के लिए एक शब्दकोश खोज का परिणाम है S?M?B?.

वास्तव में, samba अभी भी गेट से निकलने वाला पहला शब्द वर्णानुक्रम में है dict फ़ाइल आमतौर पर यूनिक्स कंप्यूटरों पर पाई जाती है, जिसके बाद उपयुक्त शब्द नहीं होता है scramble और पूरी तरह से अनुचित scumbag:

गंभीर सुरक्षा: सांबा लॉगऑन बग पुराने क्रिप्टो प्लेटोब्लॉकचेन डेटा इंटेलिजेंस के कारण होता है। लंबवत खोज. ऐ.

कुछ बग आप बनाते हैं, लेकिन कुछ बग आपको मिलते हैं

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

(दुख की बात है, तथाकथित बग अनुकूलता अक्सर एक नई प्रणाली के निर्माण का एक अपरिहार्य हिस्सा होता है जो मौजूदा प्रणाली के साथ काम करता है।)

2022 के अंत में, उन "विरासत में मिली कमजोरियों" में से एक पाया गया और पहचानकर्ता को देखते हुए Microsoft को रिपोर्ट किया गया CVE-2022-38023, और नवंबर 2022 पैच ट्यूजडे अपडेट में पैच किया गया।

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

विशेष रूप से, लॉगऑन समय पर डेटा में हेरफेर करके, चालाक साइबर अपराधी एक एलीवेशन-ऑफ-प्रिविलेज (ईओपी) हमले को अंजाम दे सकते हैं।

वे, कम से कम सिद्धांत रूप में, एक सर्वर को यह सोचने में धोखा दे सकते हैं कि वे "क्या आपके पास प्रशासक प्रमाण-पत्र हैं?" परीक्षण, भले ही उनके पास वे क्रेडेंशियल्स नहीं थे और उनके नकली डेटा को इसके क्रिप्टोग्राफ़िक सत्यापन को विफल करना चाहिए था।

क्रिप्टोग्राफिक चपलता

हमने इस बल्कि गूढ़ बग के बारे में लिखने का फैसला किया, इसलिए नहीं कि हमें लगता है कि इसके द्वारा आपका शोषण किए जाने की बहुत संभावना है (हालांकि जब साइबर सुरक्षा की बात आती है, तो हम रवैया अपनाते हैं नेवर से नेवर), लेकिन क्योंकि यह एक है एक और अनुस्मारक क्यों का क्रिप्टोग्राफिक चपलता महत्वपूर्ण है.



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

आश्चर्यजनक रूप से, CVE-2022-38023 भेद्यता पहले स्थान पर मौजूद थी क्योंकि विंडोज और सांबा दोनों ने अभी भी लंबे समय से पदावनत हैशिंग एल्गोरिथम MD5 पर आधारित अखंडता सुरक्षा की एक शैली का समर्थन किया था।

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

आपको अब MD5 का उपयोग नहीं करना चाहिए क्योंकि इसे टूटा हुआ माना जाता है: एक निर्धारित हमलावर आसानी से दो अलग-अलग इनपुट के साथ आ सकता है जो समान MD5 हैश के साथ समाप्त होते हैं।

जैसा कि आप शायद पहले से ही जानते हैं, हालांकि, क्रिप्टोग्राफ़िक गुणवत्ता का दावा करने वाले किसी भी हैश की आवश्यकताओं में से एक यह है कि यह संभव नहीं होना चाहिए।

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

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

टक्कर की असली कीमत

एक विश्वसनीय एल्गोरिदम मानते हुए, बिना किसी शोषक कमजोरियों के, आप उम्मीद करेंगे कि आउटपुट के एक्स बिट्स वाले हैश को लगभग 2 की आवश्यकता होगीएक्स-1 एक दूसरा इनपुट खोजने की कोशिश करता है जो किसी मौजूदा फ़ाइल के हैश से टकरा गया हो।

यहां तक ​​​​कि अगर आप केवल इतना करना चाहते थे कि किसी भी दो इनपुट (सामग्री, आकार या संरचना की परवाह किए बिना दो मनमाना इनपुट) मिलें, जो कि एक ही हैश के साथ हुआ हो, तो आपको 2 से थोड़ा अधिक की आवश्यकता होगीएक्स / 2 टक्कर मारने से पहले कोशिश करता है।

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

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

यदि 2 हैंX अलग-अलग संभावित हैश आउटपुट, आप एक विशिष्ट, पूर्व-निर्धारित हैश के साथ इनपुट खोजने का 50:50 मौका हिट करने की उम्मीद करेंगे, लगभग आधे प्रयास के बाद, और 2X/ 2 = 2एक्स-1. आपस में टकराने वाली किन्हीं भी दो फाइलों को ढूंढना आसान है, क्योंकि हर बार जब आप एक नए इनपुट की कोशिश करते हैं, तो आप जीत जाते हैं यदि आपका नया हैश इससे टकराता है कोई पिछले निविष्टियों में से जिन्हें आप पहले ही आज़मा चुके हैं, क्योंकि निविष्टियों के किसी भी युग्म की अनुमति है। "इस विशाल बकेट में कोई भी दो फाइलें काम करेंगी" की टक्कर के लिए, आप संभावित हैश की संख्या के वर्गमूल से थोड़ा अधिक और √50 पर सफलता के 50:2 मौके पर हिट करते हैंX = 2एक्स / 2. इसलिए, 128-बिट हैश जैसे कि MD5 के लिए, आप औसतन 2 हैश करने की अपेक्षा करेंगे127 एक विशिष्ट आउटपुट मान से मेल खाने के लिए ब्लॉक, और 264 टकराने वाले इनपुट के किसी भी जोड़े को खोजने के लिए ब्लॉक करता है।

तेज़ MD5 टक्कर आसान हो गई

जैसा कि होता है, आप आसानी से दो पूरी तरह से अलग, असंबंधित, छद्म आयामी इनपुट उत्पन्न नहीं कर सकते हैं जिनमें समान MD5 हैश हो।

और आप किसी विशिष्ट इनपुट के बारे में कुछ भी उजागर करने के लिए MD5 हैश से आसानी से पीछे की ओर नहीं जा सकते हैं, जो कि एक अन्य क्रिप्टोग्राफ़िक वादा है जिसे एक विश्वसनीय हैश को रखने की आवश्यकता है।

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

उदाहरण के लिए, यहां एक लुआ प्रोग्राम है जिसे हमने लिखा है जिसे आसानी से तीन अलग-अलग वर्गों में काटा जा सकता है, प्रत्येक 128 बाइट लंबा।

एक कोड उपसर्ग है जो टेक्स्ट की एक पंक्ति के साथ समाप्त होता है जो लुआ टिप्पणी शुरू करता है (स्ट्रिंग start --[== लाइन 8 में), तो टिप्पणी टेक्स्ट के 128 बाइट्स हैं जिन्हें हम जो कुछ भी पसंद करते हैं, उसके साथ प्रतिस्थापित किया जा सकता है, क्योंकि फ़ाइल चलने पर इसे अनदेखा किया जाता है (लाइन 9 से 11), और 128 बाइट्स का एक कोड प्रत्यय है जो टिप्पणी को बंद कर देता है ( स्ट्रिंग प्रारंभ --]== पंक्ति 12 में) और कार्यक्रम को समाप्त करता है।

यहां तक ​​​​कि अगर आप एक प्रोग्रामर नहीं हैं, तो आप शायद देख सकते हैं कि सक्रिय कोड स्रोत कोड फ़ाइल की सामग्री [पंक्ति 14] में ही पढ़ता है (लुआ में, मूल्य arg[0] ऑन लाइन 5 उस स्क्रिप्ट फ़ाइल का नाम है जिसे आप वर्तमान में चला रहे हैं), फिर इसे हेक्स डंप [लाइन 15] के रूप में प्रिंट करता है, इसके बाद इसके एमडी 5 हैश [लाइन 17]:

गंभीर सुरक्षा: सांबा लॉगऑन बग पुराने क्रिप्टो प्लेटोब्लॉकचेन डेटा इंटेलिजेंस के कारण होता है। लंबवत खोज. ऐ.

फ़ाइल चलाना अनिवार्य रूप से स्व-वर्णनात्मक है, और तीन 128-बाइट ब्लॉकों को स्पष्ट करता है:

गंभीर सुरक्षा: सांबा लॉगऑन बग पुराने क्रिप्टो प्लेटोब्लॉकचेन डेटा इंटेलिजेंस के कारण होता है। लंबवत खोज. ऐ.

MD5 का उपयोग करना अनुसंधान उपकरण बुलाया md5_fastcoll, मूल रूप से गणितज्ञ द्वारा बनाया गया मार्क स्टीवंस 2007 में क्रिप्टोग्राफी में उनकी मास्टर्स डिग्री के हिस्से के रूप में, हमने जल्दी से दो 128-बाइट "एमडी5 टक्कर-बिल्डिंग" खंड तैयार किए जिनका उपयोग हम ऊपर फ़ाइल में दिखाए गए टिप्पणी टेक्स्ट को बदलने के लिए करते थे।

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

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

हमने 128-बाइट टकराव पैदा करने वाले हिस्सों को परिवर्तित कर दिया है, जो स्पष्टता के लिए हेक्साडेसिमल में प्रिंट करने योग्य पाठ के रूप में समझ में नहीं आता है:

गंभीर सुरक्षा: सांबा लॉगऑन बग पुराने क्रिप्टो प्लेटोब्लॉकचेन डेटा इंटेलिजेंस के कारण होता है। लंबवत खोज. ऐ.

हालाँकि, उन दोनों को चलाने से स्पष्ट रूप से पता चलता है कि वे एक हैश टक्कर का प्रतिनिधित्व करते हैं, क्योंकि वे समान MD5 आउटपुट प्राप्त करते हैं:

गंभीर सुरक्षा: सांबा लॉगऑन बग पुराने क्रिप्टो प्लेटोब्लॉकचेन डेटा इंटेलिजेंस के कारण होता है। लंबवत खोज. ऐ.

टक्कर जटिलता का पता लगाया

MD5 एक 128-बिट हैश है, जैसा कि ऊपर दिए गए आउटपुट स्ट्रिंग स्पष्ट करते हैं।

इसलिए, जैसा कि पहले उल्लेख किया गया है, हमें लगभग 2 की आवश्यकता होगी128/2, या 264 किसी भी प्रकार की MD5 टक्कर उत्पन्न करने के लिए औसतन प्रयास करता है।

इसका मतलब है कि कम से कम 18 क्विंटल एमडी5 हैश ब्लॉक को प्रोसेस करना, क्योंकि 264 = 18,446,744,073,709,551,616.

हमारे लैपटॉप पर लगभग 5 ब्लॉक/सेकंड की अनुमानित अधिकतम MD50,000,000 हैश दर पर, इसका मतलब है कि हमें 10,000 से अधिक वर्षों तक इंतजार करना होगा, और हालांकि अच्छी तरह से वित्त पोषित हमलावर आसानी से 10,000 से 100,000 गुना तेजी से आगे बढ़ सकते हैं, यहां तक ​​कि वे भी करेंगे केवल एक यादृच्छिक (और आवश्यक रूप से उपयोगी नहीं) टकराव के लिए हफ्तों या महीनों की प्रतीक्षा करें।

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

वास्तव में, 10 फाइलों के लिए 10 अलग-अलग टकराव उत्पन्न करना, 10 अलग-अलग प्रारंभिक उपसर्गों का उपयोग करना जो हमने स्वयं चुना था, हमें लिया: 14.9sec, 4.7sec, 2.6sec, 2.1sec, 10.5sec, 2.4sec, 2.0sec, 0.14sec, 8.4sec, और 0.43 सेकंड।

स्पष्ट रूप से, MD5 का क्रिप्टोग्राफ़िक वादा प्रदान करने के लिए जिसे जाना जाता है टकराव प्रतिरोध मूल रूप से टूट गया है …

…स्पष्ट रूप से कम से कम 25 बिलियन के एक कारक द्वारा, औसत समय को विभाजित करने के आधार पर हम एक टक्कर खोजने के लिए प्रतीक्षा करने की अपेक्षा करेंगे (हजारों वर्ष, जैसा कि ऊपर अनुमान लगाया गया है) सबसे खराब समय जिसे हमने मंथन करते समय वास्तव में मापा (14.9 सेकंड) इस लेख के लिए दस अलग-अलग टकराव।

प्रमाणीकरण दोष समझाया

लेकिन CVE-5-2022 में MD38023 के असुरक्षित उपयोग के बारे में क्या?

लुआ-शैली स्यूडोकोड में, लॉगऑन के दौरान उपयोग किया जाने वाला दोषपूर्ण संदेश प्रमाणीकरण कोड था इस प्रकार गणना की:

गंभीर सुरक्षा: सांबा लॉगऑन बग पुराने क्रिप्टो प्लेटोब्लॉकचेन डेटा इंटेलिजेंस के कारण होता है। लंबवत खोज. ऐ.

व्याख्या करने के लिए: उपयोग किए जाने वाले प्रमाणीकरण कोड की गणना की जाती है hmac.md5() लाइन 15 में फ़ंक्शन कॉल, जिसे ए के रूप में जाना जाता है बंद हैश, इस मामले में HMAC-MD5.

HMAC नाम का संक्षिप्त रूप है हैश-आधारित संदेश प्रमाणीकरण कोड उत्पन्न करने के लिए क्रिप्टोग्राफ़िक निर्माण, और -MD5 प्रत्यय उस हैशिंग एल्गोरिथम को दर्शाता है जिसका वह आंतरिक रूप से उपयोग कर रहा है।

एचएमएसी अपने संदेश प्रमाणीकरण कोड का उत्पादन करने के लिए, केवल एक के बजाय अंतर्निहित हैश के दो आमंत्रणों के साथ एक गुप्त कुंजी का उपयोग करता है:

गंभीर सुरक्षा: सांबा लॉगऑन बग पुराने क्रिप्टो प्लेटोब्लॉकचेन डेटा इंटेलिजेंस के कारण होता है। लंबवत खोज. ऐ.
ऊपर, हम आंतरिक रूप से MD5 का उपयोग कर रहे हैं, इसलिए एल्गोरिथ्म के इस स्वाद को HMAC-MD5 के रूप में दर्शाया गया है। 2023 में सुरक्षित माने जाने वाले वैकल्पिक निर्माणों में HMAC-SHA-256 और HMAC-SHA-512 शामिल हैं, जो गहरे लाल रंग के चरणों में SHA-256 या SHA-512 हैश फ़ंक्शन का उपयोग करते हैं।

कुंजी के कुछ बिट्स पहले फ़्लिप होते हैं, और पहले हैश शुरू होने से पहले आपूर्ति किए गए डेटा के लिए प्रीपेड हो जाते हैं।

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

विशेष रूप से, गुप्त कुंजी हमलावरों को अपनी पसंद के संदेश उपसर्ग के साथ शुरू करने से रोकती है, जैसा कि हमने इसमें किया था twohash.lua उपरोक्त उदाहरण.

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

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

दरअसल, भले ही आपको एमडी5 का उपयोग बिल्कुल नहीं करना चाहिए, हम किसी भी मौजूदा हमले से अवगत नहीं हैं जो एल्गोरिदम को तोड़ सकता है जब इसे एचएमएसी-एमडी5 फॉर्म में यादृच्छिक रूप से चुनी गई कुंजी के साथ प्रयोग किया जाता है।

छेद बीच में है

उपरोक्त स्यूडोकोड में शोषक छेद, इसलिए, किसी भी पंक्ति में नहीं है जहां hmac.md5() फ़ंक्शन का उपयोग किया जाता है।

इसके बजाय, बग का दिल लाइन 11 है, जहां आप जिस डेटा को प्रमाणित करना चाहते हैं, वह एक निश्चित-लंबाई वाली स्ट्रिंग में संकुचित होता है ...

.. सादे पुराने MD5 के एकल आह्वान के माध्यम से इसे आगे बढ़ाकर।

दूसरे शब्दों में, कोई फर्क नहीं पड़ता कि आप लाइन 15 में एचएमएसी फ़ंक्शन क्या चुनते हैं, और कोई फर्क नहीं पड़ता कि अंतिम चरण कितना मजबूत और टक्कर-प्रतिरोधी हो सकता है, फिर भी आपके पास लाइन 11 पर हैश टक्कर का कारण बनने का मौका है।

सीधे शब्दों में कहें, यदि आप उस डेटा को जानते हैं जिसे इसमें जाना है chksum() प्रमाणित होने के लिए फ़ंक्शन, और आप समान MD5 हैश के साथ डेटा के एक अलग ब्लॉक को खोजने के लिए टकराव जनरेटर का उपयोग कर सकते हैं ...

…पंक्ति 11 का अर्थ है कि आप समाप्त कर देंगे बिल्कुल समान इनपुट मान के साथ (चर signdat स्यूडोकोड में) अंतिम HMAC कदम के रूप में सुरक्षित-जैसे-आप-जैसे में धकेला जा रहा है।

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

कम ज्यादा होता

सांबा के रूप में सुरक्षा बुलेटिन संक्षेप में समस्या का वर्णन करता है:

कमजोरी […] यह है कि सुरक्षित चेकसम की गणना इस रूप में की जाती है HMAC-MD5(MD5(DATA),KEY), जिसका अर्थ है कि सादा पाठ डेटा जानने वाला एक सक्रिय हमलावर एक अलग चुना हुआ बना सकता है DATA, उसी MD5 चेकसम के साथ, और इसे बिना पहचाने डेटा स्ट्रीम में स्थानापन्न करें।

विडंबना यह है कि बाहर जा रहा है MD5(DATA) उपरोक्त एचएमएसी सूत्र का हिस्सा, जो पहली नज़र में समग्र "मिश्रण" प्रक्रिया को बढ़ाने के लिए लगता है, टक्कर प्रतिरोध में सुधार करेगा।

मध्य में उस MD5 संपीड़न के बिना, आपको HMAC-MD5 में ही टकराव खोजने की आवश्यकता होगी, जो शायद 2023 में संभव नहीं है, यहां तक ​​कि लगभग असीमित सरकारी धन के साथ भी, कम से कम उस नेटवर्क सत्र के जीवनकाल में तो नहीं जिसे आप आजमा रहे थे समझोता करना।

इतनी देर क्या लगी?

अब तक, आप शायद सोच रहे होंगे, जैसा कि हम थे, क्यों यह बग इतने लंबे समय तक अनदेखा, या कम से कम अप्रकाशित पड़ा रहा।

सब के बाद, RFC 6151, जो 2011 से पहले का है, और इसका शीर्षक महत्वपूर्ण है MD5 संदेश-डाइजेस्ट और HMAC-MD5 एल्गोरिदम के लिए अद्यतन सुरक्षा विचार, निम्नानुसार सलाह देता है (हमारा जोर, एक दशक से भी अधिक समय बाद):

संदेश प्रमाणीकरण कोड के रूप में उपयोग किए जाने पर HMAC-MD5 पर हमले व्यावहारिक भेद्यता का संकेत नहीं देते हैं। इसलिए, मौजूदा प्रोटोकॉल से HMAC-MD5 को हटाना अत्यावश्यक नहीं हो सकता है। हालाँकि, MD5 के बाद से डिजिटल हस्ताक्षर के लिए उपयोग नहीं किया जाना चाहिए, एक नए प्रोटोकॉल डिज़ाइन के लिए, HMAC-MD5 के साथ एक सिफरसुइट शामिल नहीं किया जाना चाहिए.

हालाँकि, ऐसा लगता है, क्योंकि हाल ही के SMB सर्वर प्लेटफ़ॉर्म के विशाल बहुमत में HMAC-MD5 प्रमाणीकरण बंद हो गया है, जब उपयोगकर्ता लॉग ऑन करने का प्रयास करते हैं, कि SMB क्लाइंट अभी भी इस असुरक्षित मोड का समर्थन करते हैं, आमतौर पर इसका उपयोग कभी नहीं करते (और वैसे भी विफल होते अगर वे कोशिश की)।

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

इसलिए संभावित समस्या को कभी भी वह ध्यान नहीं मिला जिसके वह हकदार थे।

दुर्भाग्य से, इस प्रकार की "धारणा द्वारा सुरक्षा" पूरी तरह से विफल हो जाती है यदि आप एक सर्वर के सामने आते हैं (या लालच में आ जाते हैं) जो इस असुरक्षित को स्वीकार करता है chksum() लॉगऑन के दौरान एल्गोरिथ्म।

इस तरह की "डाउनग्रेड समस्या" कोई नई बात नहीं है: 2015 में वापस, शोधकर्ताओं ने कुख्यात को तैयार किया सनकी और गतिरोध हमले, जिन्होंने जानबूझकर नेटवर्क क्लाइंट को तथाकथित एक्सपोर्ट सिफर का उपयोग करने के लिए बरगलाया, जो जानबूझकर कमजोर किए गए एन्क्रिप्शन मोड थे, जिस पर अमेरिकी सरकार ने पिछली शताब्दी में कानून द्वारा जोर दिया था।

जैसा कि हमने वापस लिखा था:

1990 के दशक में एक्सपोर्ट कुंजी की लंबाई को लगभग क्रैक करने योग्य चुना गया था, लेकिन प्रोसेसर की गति में प्रगति को बनाए रखने के लिए इसे कभी नहीं बढ़ाया गया।

ऐसा इसलिए है क्योंकि निर्यात सिफर को अमेरिका ने लगभग 2000 में छोड़ दिया था।

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

बेशक, एक बार कानून-निर्माताओं ने रास्ता दे दिया, तो EXPORT सिफरसुइट्स ज़रूरत से ज़्यादा हो गए, इसलिए सभी ने उनका इस्तेमाल करना बंद कर दिया।

अफसोस की बात है कि OpenSSL और Microsoft के SChannel सहित बहुत सारे क्रिप्टोग्राफ़िक टूलकिट ने उनका समर्थन करने के लिए कोड रखा, इसलिए आप (या, अधिक चिंताजनक रूप से, अच्छी तरह से सूचित बदमाश) को उनका उपयोग करने से नहीं रोका गया।

इस बार, सर्वरों के बीच मुख्य अपराधी जो अभी भी इस टूटी हुई MD5-plus-HMAC-MD5 प्रक्रिया का उपयोग करते हैं, ऐसा लगता है कि NetApp रेंज है, जिसमें कुछ उत्पाद इस जोखिम भरे एल्गोरिथम पर भरोसा करने के लिए स्पष्ट रूप से जारी (या हाल तक किया)।

इसलिए आप अभी भी कभी-कभी एक कमजोर नेटवर्क लॉगऑन प्रक्रिया से गुजर रहे होंगे, और CVE-2022-38023 से जोखिम में हो सकते हैं, शायद इसे महसूस किए बिना।

क्या करना है?

यह बग आखिरकार हो गया है के साथ निपटा, कम से कम डिफ़ॉल्ट रूप से, सांबा की नवीनतम रिलीज़ में।

सीधे शब्दों में कहें, सांबा संस्करण 4.17.5 अब दो विकल्पों को मजबूर करता है reject md5 clients = yes और reject md5 servers = yes.

इसका मतलब यह है कि विभिन्न SMB नेटवर्किंग प्रोटोकॉल में कोई भी क्रिप्टोग्राफ़िक घटक जिसमें MD5 एल्गोरिथ्म शामिल है (भले ही वे सैद्धांतिक रूप से सुरक्षित हों, जैसे HMAC-MD5), हैं डिफ़ॉल्ट रूप से प्रतिबंधित.

यदि आपको वास्तव में आवश्यकता है, तो आप उन्हें अपने नेटवर्क में विशिष्ट सर्वर तक पहुँचने के लिए वापस चालू कर सकते हैं।

बस सुनिश्चित करें, यदि आप अपवाद बनाते हैं कि इंटरनेट मानकों ने पहले से ही एक दशक से अधिक समय तक आधिकारिक तौर पर सलाह दी है ...

…कि आप अपने आप को एक तिथि निर्धारित करते हैं जिसके द्वारा आप उन गैर-डिफ़ॉल्ट विकल्पों को हमेशा के लिए समाप्त कर देंगे!

क्रिप्टोग्राफ़िक हमले केवल हमेशा स्मार्ट और तेज़ होते हैं, इसलिए कभी भी पुराने प्रोटोकॉल और एल्गोरिदम पर भरोसा न करें "अब और उपयोग नहीं किया जा रहा है"।

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


समय टिकट:

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