SSL गिरावट को अक्षम करें और .NET में आउटबाउंड कनेक्शन के लिए केवल TLS का उपयोग करें? (पूडल शमन)


106

मैं पूडल एसएसएल 3.0 फॉलबैक हमले के लिए अपनी भेद्यता को कम करने की कोशिश कर रहा हूं । हमारे व्यवस्थापक पहले ही हमारे सर्वरों के लिए इनबाउंड कनेक्शन के लिए टीएलएस के पक्ष में एसएसएल को अक्षम करना शुरू कर चुके हैं। और हमने अपनी टीम को सलाह भी दी है कि वे अपने वेब ब्राउजर में एसएसएल को निष्क्रिय कर दें। मैं अब हमारे .NET कोडबेस को देख रहा हूं, जो System.Net.HttpWebRequest के माध्यम से विभिन्न सेवाओं के साथ HTTPS कनेक्शन शुरू करता है । मेरा मानना ​​है कि ये कनेक्शन एक MITM हमले के लिए असुरक्षित हो सकते हैं यदि वे TLS से SSL तक की गिरावट की अनुमति देते हैं। यहाँ मैंने वही निर्धारित किया है जो अब तक किया है। क्या कोई यह सत्यापित कर सकता है कि मैं सही हूं? यह भेद्यता एकदम नया है, इसलिए मुझे अभी तक Microsoft से कोई भी मार्गदर्शन देखना है कि इसे .NET में कैसे कम किया जाए:

  1. System.Net.Security.SslStream वर्ग के लिए अनुमत प्रोटोकॉल, जो .NET में सुरक्षित संचार को रेखांकित करता है, प्रत्येक AppDomain के लिए System.Net.ServicePointManager.SecurityProtocol संपत्ति के माध्यम से वैश्विक रूप से सेट किया गया है।

  2. .NET 4.5 में इस प्रॉपर्टी का डिफ़ॉल्ट मान है Ssl3 | Tls(हालाँकि मैं इसका बैक अप लेने के लिए दस्तावेज़ीकरण नहीं ढूँढ सकता।) SecurityProtocolType फ्लैग्स विशेषता के साथ एक एनम है, इसलिए यह उन दोनों मानों का एक बिटवाइज़ या बिट है। आप इस कोड की लाइन के साथ अपने वातावरण में इसे देख सकते हैं:

    Console.WriteLine (System.Net.ServicePointManager.SecurityProtocol.ToString ());

  3. इससे पहले कि आप अपने ऐप में किसी भी कनेक्शन को शुरू करें, इसे सिर्फ Tlsया शायद बदल दिया जाए Tls12:

    System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls;

  4. महत्वपूर्ण: चूंकि संपत्ति कई बिटवाइज़ फ़्लैग का समर्थन करती है, मेरा मानना ​​है कि SslStream हैंडशेक के दौरान अन्य अनिर्दिष्ट प्रोटोकॉल में स्वचालित रूप से वापस नहीं आएगा । अन्यथा, कई झंडे का समर्थन करने का क्या मतलब होगा?

TLS 1.0 बनाम 1.1 / 1.2 पर अपडेट करें:

Google सुरक्षा विशेषज्ञ एडम लैंगली के अनुसार, TLS 1.0 को बाद में POODLE के लिए असुरक्षित पाया गया , यदि इसे सही तरीके से लागू नहीं किया गया है , तो आपको TLS 1.2 पर विशेष रूप से जाने पर विचार करना चाहिए।

.NET फ्रेमवर्क 4.7 और इसके बाद के संस्करण के लिए अपडेट करें:

नीचे के रूप में प्रो। वॉन लेमोन्गर्ल द्वारा आवंटित किया गया। .NET फ्रेमवर्क के संस्करण 4.7 के साथ शुरू, इस हैक का उपयोग करने की कोई आवश्यकता नहीं है क्योंकि डिफ़ॉल्ट सेटिंग ओएस को सबसे सुरक्षित टीएलएस प्रोटोकॉल संस्करण चुनने की अनुमति देगा। देखें ट्रांसपोर्ट लेयर सिक्योरिटी (TLS) .नेट फ्रेमवर्क के साथ सर्वोत्तम प्रथाओं और जानकारी के लिए।


1
उपर्युक्त बिंदु 2 के बारे में: देखें referenceource.microsoft.com/#System/net/System/Net/… SslProtocols "डिफ़ॉल्ट = Ssl3 | Tls"
Dai Bok

1
@ दाई बोक अब डिफ़ॉल्ट है SystemDefault विकल्प docs.microsoft.com/en-us/dotnet/api/…
MarwaAhmad

@MarwaAhmad अगर ऐसा है, तो मेरे लिंक में स्रोत कोड संदर्भ डिफ़ॉल्ट को प्रतिबिंबित नहीं करता है (48 | 192)। यदि कोई नहीं (0) के लिए सेट है, यह सिस्टम डिफ़ॉल्ट पर वापस जाना चाहिए। इससे मुझे बदबू आ रही है और मैं शायद बदलाव करने से पहले इसका परीक्षण करूंगा क्योंकि इससे मिसकॉन्फ़िगरेशन हो सकता है ... और गलत .net ढांचे पर प्रोटोकॉल को बंद करना ...
दाई बोक

जवाबों:


137

हम वही काम कर रहे हैं। केवल TLS 1.2 और कोई SSL प्रोटोकॉल का समर्थन करने के लिए, आप यह कर सकते हैं:

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

SecurityProtocolType.Tls केवल TLS 1.0 है, सभी TLS संस्करण नहीं।

एक पक्ष के रूप में: यदि आप यह जांचना चाहते हैं कि आपकी साइट एसएसएल कनेक्शन की अनुमति नहीं देती है, तो आप यहां ऐसा कर सकते हैं (मुझे नहीं लगता कि यह उपरोक्त सेटिंग से प्रभावित होगा, हमें आईआईएस को टीएलएस का उपयोग करने के लिए मजबूर करने के लिए रजिस्ट्री को संपादित करना होगा। आने वाले कनेक्शन के लिए): https://www.ssllabs.com/ssltest/index.html

IIS 2.0 और 3.0 को IIS में अक्षम करने के लिए, यह पृष्ठ देखें: https://www.sslshopper.com/article-how-to-disable-ssl-2.0-in-iis-7.html


सही। नए टीएलएस संस्करणों का समर्थन करने के लिए भी अच्छा विचार: भविष्य-प्रूफिंग।
जॉर्डन राइगर

1
और दूसरों के लाभ के लिए, आपके द्वारा उल्लिखित रजिस्ट्री संपादित इन चरणों के साथ भी की जा सकती है: serverfault.com/a/637263/98656 । Windows Server 2003 से 2012 R2 में प्रोटोकॉल HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ Schannel \ प्रोटोकॉल पर झंडे द्वारा नियंत्रित किए जाते हैं। SSLv3 को अक्षम करने के लिए, 'SSL 3.0' नाम के उपर्युक्त स्थान पर एक उपकुंजी बनाएं और, इसके अंतर्गत, 'Server' नामक उपकुंजी और, इसके अंतर्गत 'Enabled' नामक एक DWORD मान, जिसे 0 पर सेट किया गया है। आपको SSL 2.0 को भी अक्षम करना चाहिए। उसी तरह से।
जॉर्डन रीगर

4
यदि आप .NET कोड से आउटबाउंड कनेक्शन शुरू कर रहे हैं , जैसे कि आप अपने सर्वर पर चल रहे कस्टम कोड से वेब सेवा या एपीआई से कनेक्ट कर रहे हैं, तो @ScotterMonkey आपको केवल System.Net.ServicePointManager.SecurityProtocol सेट करने की आवश्यकता है । यदि आप केवल एक साधारण वेब साइट चला रहे हैं, और आप केवल ब्राउज़र से आने वाले कनेक्शन को स्वीकार कर रहे हैं , तो रजिस्ट्री फिक्स पर्याप्त है।
जॉर्डन रीगर

7
नोट: ऐसा प्रतीत होता है SecurityProtocolType.Tls11और SecurityProtocolType.Tls12enum मान केवल ASP.net 4.5 और ऊपर में उपलब्ध हैं। निश्चित नहीं है कि 2.0 पर चलने वाले पुराने कोड बेस के लिए हमें क्या करना होगा अगर TLS 1.0 रास्ते से जाता है।
सैम

1
@AnishV आप आउटबाउंड SSL / TLS कनेक्शन शुरू करने वाले किसी भी कोड से पहले कोड की उस लाइन को अपने ऐप के आरंभ में डालते हैं।
जॉर्डन रेजर

23

@Eddie लोफेन का जवाब इस सवाल का सबसे लोकप्रिय जवाब लगता है, लेकिन इसके कुछ बुरे दीर्घकालिक प्रभाव हैं। यदि आप System.Net.ServicePointManager.SecurityProtocol के लिए दस्तावेज़ीकरण पृष्ठ की समीक्षा करते हैं , तो यहां टिप्पणी अनुभाग का तात्पर्य है कि बातचीत का चरण बस इसे संबोधित करना चाहिए (और प्रोटोकॉल को मजबूर करना बुरा व्यवहार है क्योंकि भविष्य में, टीएलएस 1.2 के साथ भी समझौता किया जाएगा)। हालाँकि, हम इस उत्तर की तलाश नहीं करेंगे अगर यह किया गया।

शोध, यह प्रतीत होता है कि ALPN बातचीत प्रोटोकॉल को बातचीत के चरण में TLS1.2 पर लाना आवश्यक है। हमने अपने शुरुआती बिंदु के रूप में लिया और समर्थन को शुरू करने के लिए .Net ढांचे के नए संस्करणों की कोशिश की। हमने पाया है कि .Net 4.5.2 टीएलएस 1.2 के लिए बातचीत का समर्थन नहीं करता है, लेकिन .Net 4.6 करता है।

इसलिए, भले ही मजबूरन TLS1.2 को अब काम मिल जाएगा, मेरा सुझाव है कि आप इसके बजाय .Net 4.6 में अपग्रेड करें। चूंकि यह जून 2016 के लिए एक पीसीआई डीएसएस मुद्दा है, इसलिए विंडो कम है, लेकिन नया ढांचा एक बेहतर जवाब है।

अद्यतन: टिप्पणियों से कार्य करना, मैंने इसे बनाया:

ServicePointManager.SecurityProtocol = 0;    
foreach (SecurityProtocolType protocol in SecurityProtocolType.GetValues(typeof(SecurityProtocolType)))
    {
        switch (protocol)
        {
            case SecurityProtocolType.Ssl3:
            case SecurityProtocolType.Tls:
            case SecurityProtocolType.Tls11:
                break;
            default:
                ServicePointManager.SecurityProtocol |= protocol;
            break;
        }
    }

अवधारणा को मान्य करने के लिए, मैंने SSL3 और TLS1.2 को एक साथ रखा है और एक सर्वर को लक्षित करने वाले कोड को चलाया है जो केवल TLS 1.0 और TLS 1.2 (1.1 अक्षम है) का समर्थन करता है। प्रोटोकॉल के साथ, यह ठीक से जुड़ने लगता है। अगर मैं एसएसएल 3 और टीएलएस 1.1 में बदल जाता हूं, तो कनेक्ट करने में विफल रहा। मेरा सत्यापन सिस्टम.नेट से HttpWebRequest का उपयोग करता है और बस GetResponse () कहता है। उदाहरण के लिए, मैंने यह कोशिश की और असफल रहा:

        HttpWebRequest request = WebRequest.Create("https://www.contoso.com/my/web/resource") as HttpWebRequest;
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls11;
        request.GetResponse();

जबकि यह काम किया:

        HttpWebRequest request = WebRequest.Create("https://www.contoso.com/my/web/resource") as HttpWebRequest;
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12;
        request.GetResponse();

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

4/29/2019 को संपादित करें - Microsoft ने यह लेख पिछले अक्टूबर में प्रकाशित किया था। यह उनके .net ढांचे के विभिन्न संस्करणों में कैसे किया जाना चाहिए की उनकी सिफारिश का एक बहुत अच्छा सारांश है।


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

यह अच्छा होगा कि प्रोग्राम को एक सूची से प्रोटोकॉल हटाने में सक्षम किया जाए जो सिस्टम उत्पन्न करता है, लेकिन मुझे वर्तमान एपीआई में ऐसा करने का कोई तरीका नहीं दिखता है। एकमात्र विकल्प विशिष्ट प्रोटोकॉल को मजबूर करने के लिए प्रतीत होता है, जो मुझे नहीं दिखता कि कोई भी क्यों करना चाहता है। दुर्भाग्य से, ALPN समर्थन के बिना, यह काम करने के लिए TLS1.2 कनेक्शन प्राप्त करने का एकमात्र तरीका प्रतीत होता है।
प्रोफेसर वॉन लेमोन्गर्ल

1
सभी SecurityProtocolType Enums के माध्यम से लूप करना संभव होना चाहिए, देखें कि कौन-कौन से ServicePointManager.SecurityProtocol फ़्लैग एनम में मौजूद हैं (यह एक तार्किक या सभी सेट फ़्लैग का है, इसलिए आप हर एक को AND के साथ परीक्षण कर सकते हैं और फिर एक नया निर्माण कर सकते हैं उन लोगों की सूची जिन्हें आप नहीं हटाना चाहते हैं। फिर उन लोगों को एक एनम में मिलाएं और उस के साथ संपत्ति सेट करें।
जॉर्डन रीगर

मैं आपके एनम / लूपिंग कोड को फिर से पढ़ रहा था, और मुझे लगता है कि यह गलत है। = = तार्किक ऑपरेटर संपत्ति में परिणाम देगा, जिसमें संपत्ति में जो भी डिफ़ॉल्ट मान सेट किए गए थे, शुरू में केवल Tls12 और इसके बाद के संस्करण शामिल थे। इसे ठीक करने के लिए, आपको 0 के मान के साथ एक SecurityProtocolType Enum वैरिएबल को इनिशियलाइज़ करना होगा, उस वैरिएबल के खिलाफ = = लूप करें, और फिर बाद में ServicePointManager.SecurityProtocol प्रॉपर्टी को असाइन करें।
जॉर्डन राइगर

7
किसी और को यह पागल लगता है कि .NET स्वचालित रूप से उच्चतम प्रोटोकॉल संस्करण पर बातचीत नहीं करता है जो इसके लिए सक्षम है ?!
रमन

5

@watson

खिड़कियों के रूपों पर, यह कक्षा पुट के शीर्ष पर उपलब्ध है

  static void Main(string[] args)
    {
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
       //other stuff here
    }

चूँकि विंडोज़ सिंगल थ्रेडेड है, इसलिए आपको इसकी ज़रूरत है, इस स्थिति में इसकी एक सर्विस जिसे आपको कॉल के ठीक ऊपर सर्विस में डालने की ज़रूरत है (क्योंकि यह बताने वाला नहीं है कि आप किस थ्रेड पर होंगे)।

using System.Security.Principal 

की भी जरूरत है।


5

यदि आप उत्सुक हैं कि प्रोटोकॉल .NET का समर्थन करता है, तो आप https://www.howsmyssl.com/ पर HttpClient को आज़मा सकते हैं।

// set proxy if you need to
// WebRequest.DefaultWebProxy = new WebProxy("http://localhost:3128");

File.WriteAllText("howsmyssl-httpclient.html", new HttpClient().GetStringAsync("https://www.howsmyssl.com").Result);

// alternative using WebClient for older framework versions
// new WebClient().DownloadFile("https://www.howsmyssl.com/", "howsmyssl-webclient.html");

परिणाम हानिकारक है:

आपका क्लाइंट टीएलएस 1.0 का उपयोग कर रहा है, जो कि बहुत पुराना है, संभवतः BEAST हमले के लिए अतिसंवेदनशील है, और उस पर सबसे अच्छा सिफर सूट उपलब्ध नहीं है। MD5-SHA-1 को बदलने के लिए AES-GCM, और SHA256 जैसे परिवर्धन TLS 1.0 क्लाइंट के साथ-साथ कई और आधुनिक सिफर सुइट्स के लिए उपलब्ध नहीं हैं।

जैसा कि एडी ऊपर बताते हैं, आप मैन्युअल रूप से बेहतर प्रोटोकॉल सक्षम कर सकते हैं:

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11; 

मुझे नहीं पता कि यह खराब प्रोटोकॉल का उपयोग क्यों करता है। यह एक खराब सेटअप विकल्प लगता है, एक प्रमुख सुरक्षा बग के लिए टेंटमाउंट (मैं शर्त लगाता हूं कि बहुत सारे एप्लिकेशन डिफ़ॉल्ट नहीं बदलते हैं)। हम इसे कैसे रिपोर्ट कर सकते हैं?


5

मुझे इस तथ्य के बारे में जानने के लिए पूर्णांक के बराबर कास्ट करना पड़ा कि मैं अभी भी .NET 4.0 का उपयोग कर रहा हूं

System.Net.ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
/* Note the property type  
   [System.Flags]
   public enum SecurityProtocolType
   {
     Ssl3 = 48,
     Tls = 192,
     Tls11 = 768,
     Tls12 = 3072,
   } 
*/

यह काम करता है। लेकिन .NET 4.0 टीएलएस 1.2 का समर्थन नहीं करता है, हालांकि .NET 4.5 और उच्चतर TLS 1.2 का समर्थन करता है। तो आप इस कोड को जोड़ सकते हैं (या जोड़ने के लिए एक बिटवाइज़ करें या टीएलएस 1.2 वार्ता के लिए समर्थन जोड़ने के लिए) अपने .NET 4.0 एप्लिकेशन को बनाएं और इसका निर्माण करें लेकिन आपको .NET 4.5 या उच्चतर पर कोड को तैनात करने की आवश्यकता होगी। blogs.perficient.com/microsoft/2016/04/tsl-1-2-and-net-support
rboy

इसे भी देखें। .NET 4.0 कोड .NET के उच्च संस्करण पर ठीक काम करेगा। .NET 4.5 और .NET 4.6 stackoverflow.com/questions/33378902/…
rboy

पूर्णांक कलाकारों ने टीएलएस 1.2 भेजने के लिए काम किया। Tls12 enum मान अभी मौजूद नहीं है। NET 4.0
CZahrobsky

दो अलग-अलग बिंदु। मेरी टिप्पणी देखें आप मान डाल सकते हैं लेकिन अगर आपका रनटाइम नेट संस्करण 4.0 है तो यह विफल हो जाएगा। आप इस ध्वज के साथ संकलन कर सकते हैं लेकिन आपके रनटाइम .NET संस्करणों को 4.5 या उससे अधिक होना चाहिए क्योंकि .NET 4.0 पर आधार घटक टीएलएस 1.2 के लिए आवश्यक सिफर का समर्थन नहीं करते हैं (लिंक देखें)
rboy

2
TLS 1.2 समर्थन को जोड़ने के लिए पुराने .NET रनटाइम संस्करणों के लिए कई हॉटफ़िक्स हैं। उदाहरण के लिए support.microsoft.com/en-us/help/3154518/… , CZahrobsky भी Win10 फॉल क्रिएटर्स अपडेट पर इस का उपयोग कर रहा होगा जिसमें हॉटफ़िक्स भी शामिल था।
मौन स्वर

1

मैंने पाया कि सरलतम समाधान दो रजिस्ट्री प्रविष्टियों को निम्नानुसार जोड़ना है (इसे व्यवस्थापक विशेषाधिकारों के साथ कमांड प्रॉम्प्ट में चलाएं):

reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SchUseStrongCrypto /t REG_DWORD /d 1 /reg:32

reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SchUseStrongCrypto /t REG_DWORD /d 1 /reg:64

इन प्रविष्टियों को लगता है कि कैसे .NET CLR एक क्लाइंट के रूप में एक सुरक्षित कनेक्शन बनाते समय एक प्रोटोकॉल चुनता है।

इस रजिस्ट्री प्रविष्टि के बारे में अधिक जानकारी यहाँ है:

https://docs.microsoft.com/en-us/security-updates/SecurityAdvisories/2015/2960358#suggested-actions

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

नोट : हालांकि, ऊपर के लेख के अनुसार, यह केवल RC4 को अक्षम करने के लिए माना जाता है, और किसी को नहीं लगता कि यह बदल जाएगा। क्या .NET क्लाइंट को TLS1.2 + का उपयोग करने की अनुमति है या नहीं, किसी कारण से ऐसा होता है प्रभाव।

नोट : जैसा कि टिप्पणियों में @ जोर्डन रिगर द्वारा उल्लेख किया गया है, यह POODLE के लिए कोई समाधान नहीं है, क्योंकि यह पुराने प्रोटोकॉल को अक्षम नहीं करता है - यह केवल क्लाइंट को नए प्रोटोकॉल के साथ काम करने की अनुमति देता है जैसे कि जब एक पैच किए गए सर्वर ने पुराने को निष्क्रिय कर दिया हो प्रोटोकॉल। हालांकि, MITM हमले के साथ, जाहिर है कि एक समझौता सर्वर क्लाइंट को एक पुराने प्रोटोकॉल की पेशकश करेगा, जिसे ग्राहक फिर खुशी से उपयोग करेगा।

TODO : इन रजिस्ट्री प्रविष्टियों के साथ TLS1.0 और TLS1.1 के क्लाइंट-साइड उपयोग को अक्षम करने का प्रयास करें, हालांकि मुझे नहीं पता कि .NET http क्लाइंट लाइब्रेरी इन सेटिंग्स का सम्मान करती है या नहीं:

https://docs.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings#tls-10

https://docs.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings#tls-11


एक कोड के विकल्प के रूप में रजिस्ट्री सेटिंग्स बहुत अच्छा होगा, लेकिन क्या ये सेटिंग केवल TLS 1.2 और इसके बाद के संस्करण का उपयोग करके क्लाइंट कनेक्शन की अनुमति देने के पक्ष में TLS 1.0 और 1.1 को अक्षम करती हैं? लिंक के अनुसार, यह TLS में केवल RC4 को अक्षम करता है। मुझे लगता है कि पूडल हमला इससे कहीं अधिक व्यापक है।
जॉर्डन रेजर

@JordanRieger ये रजिस्ट्री प्रविष्टियाँ .NET क्लाइंट को एक सर्वर से जुड़ने की अनुमति देती हैं, जिसमें पुराने प्रोटोकॉल को निष्क्रिय करना है। इनके बिना, क्लाइंट एक त्रुटि को फेंक देगा क्योंकि .NET क्लाइंट एक पुराने प्रोटोकॉल का उपयोग करने पर भी जोर देता है, जब सर्वर नए के लिए पूछ रहा हो। यदि आपका सर्वर अभी भी पुराने प्रोटोकॉल का उपयोग करके कनेक्शन की अनुमति देता है तो सभी दांव बंद हो जाते हैं। सैद्धांतिक रूप से पुराने प्रोटोकॉल को निष्क्रिय किया जाना चाहिए। मुझे आश्चर्य है कि अगर वही रजिस्ट्री प्रविष्टियाँ जो सर्वर पर इनको अक्षम करने की अनुमति देती हैं (जैसे nartac.com/Products/IISCrypto ) तो क्लाइंट के लिए भी काम करेगा?
रमन

रजिस्ट्री प्रविष्टियों में जो nartac में हेरफेर होता है, क्लाइंट के लिए (और जब अभिनय के रूप में) सर्वर के लिए अलग-अलग सेटिंग्स होती हैं। मुझे याद नहीं है कि क्या उनका इंटरफ़ेस हालांकि अलग है। क्या आप जानते हैं कि .net के कौन से संस्करण इस रजिस्ट्री हैक का समर्थन करते हैं?
प्रोफेसर वॉन लेमोन्गर्ल

@ मेरे प्रश्न का बिंदु, हालाँकि, जब आपका क्लाइंट आपके द्वारा नियंत्रित किए जाने वाले सर्वर से कनेक्ट हो रहा है, तो वह POODLE भेद्यता को कम करना था। भेद्यता एक MITM हमलावर को पुराने टीएलएस या एसएसएल संस्करण को प्रोटोकॉल को डाउनग्रेड करने की अनुमति देगा, जिसे हैक किया जा सकता है। बस RC4 को अक्षम करना पर्याप्त नहीं है। ये रजिस्ट्री सेटिंग्स कुछ मामलों के लिए उपयोगी हो सकती हैं, लेकिन मेरे प्रश्न में परिदृश्य नहीं।
जॉर्डन रीगर

1
@ जोर्डन रीगर सहमत। मैंने कुछ अतिरिक्त टिप्पणियों और विचारों के साथ पाठ को अद्यतन किया।
रमन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.