2012-08-03 10 views
14

मैं अगर netNamedPipeBinding सुरक्षित माना जाता है पता करने के लिए करना चाहते हैं:नेट नामांकित पाइप बाइंडिंग सुरक्षित है?

एक ओर NetNamedPipeBinding केवल परिवहन परत पर सुरक्षा लागू करता है और यह NTLM (source) कि अब माइक्रोसॉफ्ट (source)

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

यही कारण है कि मुझे नहीं पता कि इस समाधान की सुरक्षा के बारे में क्या सोचना है।

उत्तर

31

आप वास्तव में सही सवाल नहीं पूछ रहे हैं: सभी परिस्थितियों में एक बूलियन उत्तर मान्य करना संभव नहीं है। आपको हमेशा एक समाधान की सुरक्षा का आकलन करना चाहिए, खतरों की पहचान करना और संबंधित सुरक्षा जोखिमों का मॉडलिंग करना चाहिए।

जिसके अनुसार, यह सच है WCF NetNamedPipeBinding जो यह कुछ हद तक नेटवर्क प्रोटोकॉल के आधार पर बाइंडिंग से अलग बनाता है सुरक्षा विशेषताओं है कि:

  • किसी भी नेटवर्क प्रोटोकॉल की तुलना में, NetNamedPipeBinding स्वाभाविक कहीं अधिक सुरक्षित के खिलाफ है परिवहन कनेक्शन पर संचार के लिए खतरे। नेटवर्क पर प्रसारित बाइट्स की बजाय, नामित पाइप के मामले में संदेशों को एक मशीन पर ऑपरेटिंग सिस्टम कर्नेल द्वारा प्रबंधित स्मृति से और डेटा के बाइट्स (ऑपरेटिंग सिस्टम एपीआई के माध्यम से) से गुजरने वाली एक तंत्र पर आदान-प्रदान किया जाता है। संदेश स्ट्रीम को संभावित रूप से सहेजा नहीं जा सकता है, जिसे हमलावर के पास पहले से ही विशेषाधिकृत कोड कर्नेल मोड में चल रहा है (और यदि आपके पास पहले से ही आपके ऑपरेटिंग सिस्टम के घुटनों के अंदर ऐसा हमलावर है तो वह संभवतः पहले से ही आपकी एप्लिकेशन प्रक्रिया के साथ कुछ भी कर सकता है)। नतीजतन डब्ल्यूसीएफ "परिवहन सुरक्षा" is more or less irrelevant to the security of the message stream and should arguably often be disabled in configuration to avoid unnecessary runtime overhead
  • संभावित ग्राहकों को सेवा अंतराल प्रकाशित करने के लिए नामित पाइप बाध्यकारी द्वारा उपयोग की जाने वाली तंत्र नेटवर्क-आधारित प्रोटोकॉल की तुलना में स्वाभाविक रूप से अधिक सुरक्षित है: यह नामित साझा मेमोरी ऑब्जेक्ट पर आधारित है और इस प्रकार किसी दूरस्थ कंप्यूटर से एक्सेस करना असंभव है।
  • संदेश विनिमय के लिए उपयोग किए गए नामित पाइप को GUID के साथ नामित किया जाता है जो हर बार सर्वर पुनरारंभ होता है, और आगे एक एसीएल द्वारा संरक्षित किया जाता है जो किसी भी दूरस्थ उपयोगकर्ता को खोलने से रोकता है, भले ही वे किसी भी तरह के वर्तमान GUID को खोजने में सक्षम हों पाइप नाम।

दूसरी ओर, एक ऑपरेटिंग सिस्टम की सुविधा एक एपीआई के माध्यम से पहुँचा है, बल्कि नेटवर्क संचार के लिए सार्वजनिक मानकों पर की तुलना में, कुछ विशिष्ट सुरक्षा कमजोरियों जो संजाल आधारित बाइंडिंग के लिए उठता नहीं है देखते हैं के आधार पर किया जा रहा:

  • सर्वर "squatting" हमले, जहां इच्छित डब्ल्यूसीएफ सेवा होस्ट के अलावा कुछ प्रक्रिया नामित पाइप को सुनने में सफल होती है। पाइप को सुरक्षित करने के लिए बाध्यकारी द्वारा बनाई गई एसीएल में त्रुटि के कारण .NET 3.5 और इससे पहले नामित पाइप बाध्यकारी इस भेद्यता के खिलाफ सुरक्षित नहीं था। .NET 4 ने ज्यादातर इस त्रुटि को सही किया।
  • विंडोज़ पर नामित पाइपों में उनके ग्राहकों का प्रतिरूपण करने वाले नामित पाइप सर्वरों का समर्थन करने के लिए एक अंतर्निर्मित तंत्र है। WCF NetNamedPipeBinding में एक बग है जो कुछ परिदृश्यों में पाइप सर्वर (यानी डब्ल्यूसीएफ सेवा) को इस तरह के प्रतिरूपण के लिए क्लाइंट के विंडोज क्रेडेंशियल्स का उपयोग करने में सक्षम बनाता है भले ही क्लाइंट-साइड डब्ल्यूसीएफ बाध्यकारी प्रतिरूपण को अस्वीकार करने के लिए कॉन्फ़िगर किया गया हो।

संक्षेप में, आपको उन महत्वपूर्ण बाधाओं की विशेष विशेषताओं को ध्यान में रखते हुए, आपके लिए महत्वपूर्ण खतरों के प्रकाश में आपके आवेदन/सिस्टम की समग्र सुरक्षा का मूल्यांकन करने की आवश्यकता है। NetNamedPipeBinding अक्सर मशीन-मशीन परिदृश्यों के लिए सबसे अच्छा विकल्प होगा।

+0

आपके बहुत पूर्ण उत्तर के लिए धन्यवाद, यह वही है जो मैं उम्मीद कर रहा था: एक द्विआधारी उत्तर नहीं बल्कि नेट नामांकित पाइप बाइंडिंग की ताकत और त्रुटियों का एक सिंहावलोकन! – darkheir

संबंधित मुद्दे