पिछले हफ्ते, हमने एक गुच्छा के बारे में लिखा था स्मृति प्रबंधन कीड़े जिन्हें लोकप्रिय ओपनएसएसएल एन्क्रिप्शन लाइब्रेरी के नवीनतम सुरक्षा अद्यतन में ठीक किया गया था।
उन मेमोरी बग्स के साथ, हमने डब किए गए बग पर भी सूचना दी CVE-2022-4304: RSA डिक्रिप्शन में टाइमिंग Oracle.
इस बग में, एक सर्वर पर एक ही एन्क्रिप्टेड संदेश को बार-बार फायर करना, लेकिन डेटा के अंत में पैडिंग को संशोधित करना, डेटा को अमान्य बनाने के लिए, और इस प्रकार किसी प्रकार के अप्रत्याशित व्यवहार को भड़काना ...
...यह मानते हुए कि आप नेटवर्क पर उस लक्ष्य के करीब थे, जिसके बारे में आप मज़बूती से अनुमान लगा सकते हैं कि प्रक्रिया के डेटा स्थानांतरण भाग में कितना समय लगेगा, लगातार समय नहीं लगेगा।
सभी डेटा समान रूप से संसाधित नहीं होते हैं
यदि आप किसी अनुरोध को बंद करते हैं, तो उत्तर में कितना समय लगता है, और नेटवर्क डेटा के निम्न-स्तर भेजने और प्राप्त करने में लगने वाले समय को घटा दें, आप जानते हैं कि अनुरोध को संसाधित करने के लिए सर्वर को आंतरिक गणना करने में कितना समय लगा .
यहां तक कि अगर आप सुनिश्चित नहीं हैं कि नेटवर्क में कितना समय व्यतीत होता है, तो आप बहुत सारे अनुरोधों को दूर करके और नमूनों का भार एकत्र करके राउंड-ट्रिप समय में बदलाव देख सकते हैं।
यदि नेटवर्क यह मानने के लिए पर्याप्त विश्वसनीय है कि नेटवर्किंग ओवरहेड काफी हद तक स्थिर है, तो आप यह अनुमान लगाने के लिए सांख्यिकीय विधियों का उपयोग करने में सक्षम हो सकते हैं कि किस प्रकार के डेटा संशोधन के कारण किस प्रकार की अतिरिक्त प्रोसेसिंग देरी होती है।
इससे, आप मूल अनएन्क्रिप्टेड डेटा की संरचना, या यहां तक कि सामग्री के बारे में कुछ अनुमान लगाने में सक्षम हो जाते हैं, जिसे प्रत्येक बार-बार अनुरोध के अंदर गुप्त रखा जाना चाहिए।
यहां तक कि अगर आप केवल सादा पाठ का एक बाइट निकाल सकते हैं, ठीक है, ऐसा नहीं होना चाहिए।
तथाकथित समय के हमले इस तरह की चीजें हमेशा परेशानी होती हैं, भले ही आपको लाखों फर्जी पैकेट भेजने और उन सभी को समय देने की आवश्यकता हो, केवल एक बाइट के सादे डेटा को पुनर्प्राप्त करने का कोई मौका हो ...
…क्योंकि नेटवर्क कुछ साल पहले की तुलना में तेज़, अधिक अनुमानित और अधिक भार संभालने में सक्षम हैं।
आप सोच सकते हैं कि लाखों विश्वासघाती पैकेट आप पर स्पैम किए गए, मान लीजिए, अगले घंटे एक तरह के अंगूठे की तरह बाहर खड़े होंगे।
लेकिन "एक लाख पैकेट एक घंटे में सामान्य से अधिक या कम" बस अब कोई विशेष रूप से बड़ा बदलाव नहीं है।
GnuTLS में समान "ओरेकल" बग
खैर, वही व्यक्ति जिसने ओपनएसएसएल में फिक्स्ड-एट-लास्ट बग टाइमिंग बग की सूचना दी थी, ने भी रिपोर्ट की GnuTLS में समान बग उसी समय के बारे में।
इसमें बग पहचानकर्ता है CVE-2023-0361.
हालांकि GnuTLS OpenSSL की तरह लोकप्रिय या व्यापक रूप से उपयोग नहीं किया जाता है, आपके पास संभवतः आपके IT एस्टेट में या यहां तक कि आपके अपने कंप्यूटर पर कई प्रोग्राम हैं, जो इसका उपयोग करते हैं या इसे शामिल करते हैं, संभवतः FFmpeg, GnuPG, Mplayer, QEMU सहित , डेस्कटॉप, सांबा, Wget और Wireshark।
विडंबना यह है कि जीएनयूटीएलएस में समय दोष उस कोड में दिखाई दिया जो पहली बार में टाइमिंग अटैक त्रुटियों को लॉग करने वाला था।
जैसा कि आप कोड अंतर से देख सकते हैं (diff) नीचे, प्रोग्रामर को पता था कि कोई भी सशर्त (if ... then
) डिक्रिप्शन त्रुटि की जांच और निपटने में उपयोग किए जाने वाले ऑपरेशन समय भिन्नता उत्पन्न कर सकते हैं, क्योंकि सीपीयू आम तौर पर "शाखा" निर्देश के बाद आपका कोड किस तरह से जाता है, इसके आधार पर अलग-अलग समय लेता है।
(यह एक शाखा के लिए विशेष रूप से सच है जो अक्सर एक तरफ जाती है और दूसरी तरफ शायद ही कभी होती है, क्योंकि सीपीयू प्रदर्शन को बेहतर बनाने के लिए बार-बार चलने वाले कोड को याद करते हैं, या कैश करते हैं, इस प्रकार बार-बार लिया जाने वाला कोड पता लगाने में धीमा हो जाता है।)
लेकिन प्रोग्रामर अभी भी लॉग इन करना चाहता था कि एक हमला हो सकता है, जो तब होता है जब if (ok)
उपरोक्त परीक्षण विफल हो जाता है और शाखाएँ else { ... }
अनुभाग।
इस बिंदु पर, कोड कॉल करता है _gnutls_debug_log()
कार्य, जिसे अपना काम करने में काफी समय लग सकता है।
इसलिए सांकेतिक शब्दों में बदलनेवाला करने के लिए एक जानबूझकर कॉल डाला _gnutls_no_log()
में then { ... }
कोड का एक हिस्सा, जो एक "हमला" लॉग करने का नाटक करता है, जब कोई नहीं होता है, ताकि कोड किसी भी दिशा में खर्च किए जाने वाले समय को बढ़ाने की कोशिश कर सके। if (ok)
शाखा निर्देश ले सकते हैं।
जाहिर है, हालांकि, दो कोड पथ उस समय पर्याप्त रूप से समान नहीं थे जब वे उपयोग किए गए थे (या शायद _gnutls_debug_log()
विभिन्न प्रकार की त्रुटि से निपटने के लिए अपने आप में कार्य अपर्याप्त रूप से संगत था), और एक हमलावर दस लाख या इतने प्रयासों के बाद डिक्रिप्शन टेलटेल्स को अलग करना शुरू कर सकता है।
क्या करना है?
यदि आप एक प्रोग्रामर हैं: यहां बग फिक्स सरल था, और "कम ज्यादा है" सिद्धांत का पालन किया।
ऊपर गुलाबी रंग का कोड, जिसे वैसे भी बहुत उपयोगी हमले का पता लगाने वाला डेटा नहीं देने के लिए माना जाता था, बस हटा दिया गया था, इस आधार पर कि जो कोड नहीं है, उसे गलती से संकलित नहीं किया जा सकता है, चाहे आपकी बिल्ड सेटिंग कुछ भी हो ...
…और कोड जो संकलित नहीं है, कभी भी नहीं चल सकता है, चाहे दुर्घटना या डिज़ाइन द्वारा।
यदि आप GnuTLS उपयोगकर्ता हैं: हाल ही में जारी संस्करण 3.7.9 और "नया उत्पाद स्वाद" 3.8.0 यह सुधार, कई अन्य के साथ शामिल है।
यदि आप एक Linux डिस्ट्रो चला रहे हैं, तो आपके पास GnuTLS के किसी भी केंद्रीय-प्रबंधित साझा लाइब्रेरी संस्करण के साथ-साथ अपने स्वयं के संस्करण लाने वाले ऐप्स के अपडेट की जांच करें।
Linux पर, नाम वाली फ़ाइलें खोजें libgnutls*.so
आस-पास पड़ी किसी भी साझा लाइब्रेरी को खोजने और खोजने के लिए gnutls-cli
कमांड लाइन यूटिलिटी की किसी भी कॉपी को खोजने के लिए जो अक्सर लाइब्रेरी के साथ शामिल होती है।
तुम दौड़ सकते हो gnutls-cli -vv
यह पता लगाने के लिए कि कौन सा संस्करण libgnutls
यह गतिशील रूप से जुड़ा हुआ है:
$ gnutls-cli -vv gnutls-cli 3.7.9 <- मेरे Linux डिस्ट्रो को पिछले शुक्रवार को अपडेट मिला (2023-02-10)
- एसईओ संचालित सामग्री और पीआर वितरण। आज ही प्रवर्धित हो जाओ।
- प्लेटोब्लॉकचैन। Web3 मेटावर्स इंटेलिजेंस। ज्ञान प्रवर्धित। यहां पहुंचें।
- स्रोत: https://nakedsecurity.sophos.com/2023/02/13/serious-security-gnutls-follows-openssl-fixes-timing-attack-bug/
- 1
- 7
- 70
- 9
- a
- योग्य
- About
- ऊपर
- पूर्ण
- दुर्घटना
- बाद
- के खिलाफ
- सब
- हमेशा
- राशि
- और
- जवाब
- छपी
- क्षुधा
- चारों ओर
- आक्रमण
- लेखक
- स्वत:
- पृष्ठभूमि छवि
- क्योंकि
- नीचे
- सीमा
- तल
- शाखा
- शाखाएं
- लाना
- दोष
- कीड़े
- निर्माण
- गुच्छा
- कैश
- कॉल
- कॉल
- सक्षम
- का कारण बनता है
- केंद्र
- संयोग
- चेक
- जाँच
- समापन
- कोड
- सांकेतिक शब्दों में बदलनेवाला
- एकत्रित
- रंग
- गणना
- कंप्यूटर
- संगत
- स्थिर
- प्रयुक्त
- सामग्री
- सका
- आवरण
- तिथि
- व्यवहार
- देरी
- निर्भर करता है
- डिज़ाइन
- खोज
- अंतर
- विभिन्न
- दिशा
- डिस्प्ले
- अंतर करना
- करार दिया
- गतिशील
- से प्रत्येक
- भी
- एन्क्रिप्टेड
- एन्क्रिप्शन
- पर्याप्त
- त्रुटि
- त्रुटियाँ
- विशेष रूप से
- जायदाद
- और भी
- अतिरिक्त
- उद्धरण
- विफल रहता है
- और तेज
- कुछ
- फ़ाइलें
- खोज
- आग
- फायरिंग
- प्रथम
- फिक्स
- तय
- दोष
- पीछा किया
- इस प्रकार है
- शुक्रवार
- से
- समारोह
- आम तौर पर
- देना
- नट्लस
- चला जाता है
- आधार
- हैंडलिंग
- होना
- हो जाता
- ऊंचाई
- यहाँ उत्पन्न करें
- मंडराना
- कैसे
- तथापि
- HTTPS
- पहचानकर्ता
- में सुधार
- in
- शामिल
- शामिल
- सहित
- आंतरिक
- IT
- सिर्फ एक
- जानना
- बड़ा
- बड़े पैमाने पर
- पिछली बार
- ताज़ा
- पुस्तकालयों
- पुस्तकालय
- लाइन
- जुड़ा हुआ
- लिनक्स
- भार
- भार
- लंबा
- देखिए
- बनाना
- निर्माण
- प्रबंध
- बहुत
- हाशिया
- अधिकतम-चौड़ाई
- याद
- message
- तरीकों
- हो सकता है
- दस लाख
- लाखों
- गलती
- अधिक
- नाम
- आवश्यकता
- नेटवर्क
- नेटवर्क डेटा
- शुद्ध कार्यशील
- नेटवर्क
- अगला
- साधारण
- संख्या
- ONE
- openssl
- आपरेशन
- पेशीनगोई
- आदेश
- मूल
- अन्य
- अन्य
- अपना
- पैकेट
- भाग
- विशेष रूप से
- पॉल
- प्रदर्शन
- शायद
- व्यक्ति
- जगह
- सादे पाठ
- प्लेटो
- प्लेटो डेटा इंटेलिजेंस
- प्लेटोडाटा
- बिन्दु
- लोकप्रिय
- स्थिति
- पोस्ट
- उम्मीद के मुताबिक
- सिद्धांत
- शायद
- प्रक्रिया
- प्रसंस्करण
- उत्पादन
- एस्ट्रो मॉल
- प्रोग्रामर
- प्रोग्राम्स
- ठीक हो
- भले ही
- विश्वसनीय
- याद
- दोहराया गया
- बार बार
- की सूचना दी
- का अनुरोध
- अनुरोधों
- आरएसए
- रन
- दौड़ना
- साम्बा
- वही
- Search
- गुप्त
- अनुभाग
- सुरक्षा
- सुरक्षा अद्यतन
- कभी कभी
- गंभीर
- साझा
- समान
- सरल
- केवल
- So
- ठोस
- कुछ
- कुछ
- स्टैंड
- सांख्यिकीय
- फिर भी
- संरचना
- माना
- एसवीजी
- लेना
- लेता है
- लक्ष्य
- परीक्षण
- RSI
- लेकिन हाल ही
- सोचना
- पहर
- बार
- समय
- सेवा मेरे
- ऊपर का
- स्थानांतरण
- संक्रमण
- पारदर्शी
- <strong>उद्देश्य</strong>
- अप्रत्याशित
- अपडेट
- अपडेट
- यूआरएल
- उपयोग
- उपयोगकर्ता
- उपयोगिता
- विभिन्न
- संस्करण
- जरूरत है
- सप्ताह
- क्या
- या
- कौन कौन से
- जब
- कौन
- काम
- होगा
- साल
- आपका
- जेफिरनेट