मैंने ASP.NET में एक नए खोजे गए सुरक्षा भेद्यता के बारे में नेट पर पढ़ा है। आप यहां विवरण पढ़ सकते हैं।
समस्या यह है कि ASP.NET एईएस एन्क्रिप्शन एल्गोरिथ्म को लागू करता है कुकीज़ की अखंडता की रक्षा के लिए ये एप्लिकेशन उपयोगकर्ता सत्रों के बारे में जानकारी संग्रहीत करने के लिए उत्पन्न करते हैं।
यह थोड़ा अस्पष्ट है, लेकिन यहाँ एक और भयावह हिस्सा है:
हमले का पहला चरण कुछ हज़ार अनुरोधों को लेता है, लेकिन एक बार जब यह सफल हो जाता है और हमलावर को गुप्त कुंजी मिल जाती है, तो यह पूरी तरह से गुप्त है। क्रिप्टोग्राफ़िक ज्ञान की आवश्यकता बहुत ही बुनियादी है।
सभी में, मैं यह जानने के लिए पर्याप्त सुरक्षा / क्रिप्टोग्रैपी विषय से परिचित नहीं हूं कि क्या यह वास्तव में गंभीर है।
तो, क्या सभी ASP.NET डेवलपर्स को इस तकनीक से डरना चाहिए जो सेकंड या किसी भी ASP.NET वेबसाइट का मालिक हो सकता है ?
यह समस्या औसत ASP.NET डेवलपर को कैसे प्रभावित करती है? क्या यह हमें बिल्कुल प्रभावित करता है? वास्तविक जीवन में, इस भेद्यता के परिणाम क्या हैं? और, अंत में: क्या कुछ समाधान है जो इस भेद्यता को रोकता है?
आपके उत्तर के लिए धन्यवाद!
संपादित करें: मुझे मिली प्रतिक्रियाओं को संक्षेप में बताऊँ
तो, यह मूल रूप से एक "पैडिंग ओरेकल" प्रकार का हमला है। @ श्री ने इस प्रकार के हमले का क्या मतलब है, इसके बारे में एक शानदार विवरण प्रदान किया। यहाँ इस मुद्दे के बारे में एक चौंकाने वाला वीडियो है!
इस भेद्यता की गंभीरता के बारे में: हां, यह वास्तव में गंभीर है। यह हमलावर को किसी एप्लिकेशन की मशीन कुंजी जानने की अनुमति देता है। इस प्रकार, वह कुछ बहुत ही अवांछित चीजें कर सकता है ।
- ऐप की मशीन कुंजी के कब्जे में, हमलावर प्रमाणीकरण कुकीज़ को डिक्रिप्ट कर सकता है।
- इससे भी बदतर, वह किसी भी उपयोगकर्ता के नाम के साथ प्रमाणीकरण कुकीज़ उत्पन्न कर सकता है । इस प्रकार, वह साइट पर किसी के रूप में दिखाई दे सकता है। एप्लिकेशन आपके या उस हैकर के बीच अंतर करने में असमर्थ है जिसने अपने लिए अपने नाम के साथ एक प्रमाणीकरण कुकी उत्पन्न की है।
- यह उसे सत्र कुकीज़ को डिक्रिप्ट (और उत्पन्न) करने की भी अनुमति देता है , हालांकि यह पिछले एक की तरह खतरनाक नहीं है।
- इतना गंभीर नहीं: वह पृष्ठों के एन्क्रिप्टेड ViewState को डिक्रिप्ट कर सकता है। (यदि आप विश्वासपात्र डेटा संग्रहीत करने के लिए ViewState का उपयोग करते हैं, तो आपको यह वैसे भी नहीं करना चाहिए!)
- काफी अनपेक्षित : मशीन कुंजी के ज्ञान के साथ, हमलावर आपके वेब एप्लिकेशन से कोई भी मनमानी फ़ाइल डाउनलोड कर सकता है , यहां तक कि वे भी जो सामान्य रूप से डाउनलोड नहीं किए जा सकते हैं! ( Web.Config , आदि सहित )
यहाँ मुझे मिली अच्छी प्रथाओं का एक समूह है जो इस मुद्दे को हल नहीं करता है लेकिन वेब एप्लिकेशन की सामान्य सुरक्षा को बेहतर बनाने में मदद करता है।
- आप संरक्षित कॉन्फ़िगरेशन के साथ संवेदनशील डेटा को एन्क्रिप्ट कर सकते हैं
- HTTP केवल कुकीज़ का उपयोग करें
- DoS हमलों को रोकें
अब, आइए इस मुद्दे पर ध्यान दें।
- स्कॉट गुथ्री ने अपने ब्लॉग पर इसके बारे में एक प्रविष्टि प्रकाशित की
- स्कॉटगू की FAQ ब्लॉग पोस्ट भेद्यता के बारे में है
- स्कॉटगू की भेद्यता पर अद्यतन
- Microsoft के पास इसके बारे में एक सुरक्षा सलाह है
- भेद्यता को समझना
- भेद्यता के बारे में अतिरिक्त जानकारी
समाधान
- CustomErrors सक्षम करें और एक एकल त्रुटि पृष्ठ बनाएं जिसमें सभी त्रुटियों को पुनर्निर्देशित किया गया है। हां, 404 भी । (स्कॉटग्यू ने कहा कि इस हमले के लिए 404 और 500 के बीच अंतर करना आवश्यक है।) इसके अलावा, आपके कोड में
Application_Error
याError.aspx
कुछ कोड डालते हैं जो एक यादृच्छिक देरी करता है। (एक यादृच्छिक संख्या उत्पन्न करें, और उस लंबे समय तक सोने के लिए Thread.Sleep का उपयोग करें।) इससे हमलावर को यह तय करना असंभव हो जाएगा कि आपके सर्वर पर वास्तव में क्या हुआ था। - कुछ लोगों ने 3 डीईएस पर वापस जाने की सिफारिश की। सिद्धांत रूप में, यदि आप एईएस का उपयोग नहीं करते हैं, तो आप एईएस कार्यान्वयन में सुरक्षा कमजोरी का सामना नहीं करते हैं। जैसा कि यह पता चला है, यह बिल्कुल अनुशंसित नहीं है ।
कुछ अन्य विचार
मेरे सवाल का जवाब देने वाले सभी को धन्यवाद। मैंने न केवल इस मुद्दे के बारे में बहुत कुछ सीखा, लेकिन सामान्य रूप से वेब सुरक्षा। मैंने @ मिकेल के उत्तर को स्वीकार के रूप में चिह्नित किया है, लेकिन अन्य उत्तर भी बहुत उपयोगी हैं।