
स्वचालित स्कैन और CVE-2020-1971 (OpenSSL NULL पॉइंटर डीरेफरेंस) के लिए रिमोट शोषण स्क्रिप्ट। Linux और Windows के लिए पैच किए गए OpenSSL 1.1.1i स्रोत और इंस्टॉल/अपडेट स्क्रिप्ट शामिल हैं।
CVE-2020-1971 ऑटो स्कैन और रिमोट एक्सप्लॉइट स्क्रिप्ट। ऑटो लोकल स्कैन और पैच स्क्रिप्ट।
5:03pm
मैं वर्तमान में स्क्रिप्ट विकसित कर रहा हूं और उम्मीद है कि आज रात तक सब कुछ बाहर कर दूंगा। अभी के लिए इस रिपॉजिटरी में केवल पैच किया गया OpenSSL 1.1.1i स्रोत शामिल है। वर्तमान में मैं एक इंस्टॉल/अपडेट पैच स्क्रिप्ट पर काम कर रहा हूं।
5:50pm
Debian/Ubuntu Linux इंस्टॉलेशन स्क्रिप्ट अपलोड की गई। इंस्टॉलेशन निर्देशों के लिए "Linux इंस्टॉलेशन" देखें
6:40pm
X.509 GeneralName प्रकार विभिन्न प्रकार के नामों को प्रस्तुत करने के लिए एक सामान्य प्रकार है। उन नाम प्रकारों में से एक को EDIPartyName के रूप में जाना जाता है। OpenSSL एक फ़ंक्शन GENERAL_NAME_cmp प्रदान करता है जो यह देखने के लिए GENERAL_NAME के विभिन्न उदाहरणों की तुलना करता है कि वे समान हैं या नहीं। यह फ़ंक्शन तब गलत व्यवहार करता है जब दोनों GENERAL_NAME में EDIPARTYNAME शामिल होता है। एक NULL पॉइंटर डीरेफरेंस और क्रैश हो सकता है जिससे संभावित डिनायल ऑफ सर्विस हमला हो सकता है।
OpenSSL स्वयं GENERAL_NAME_cmp फ़ंक्शन का उपयोग दो उद्देश्यों के लिए करता है
उपलब्ध CRL और X509 प्रमाणपत्र में एम्बेडेड CRL वितरण बिंदु नामों के बीच तुलना करना
यह सत्यापित करते समय कि टाइमस्टैम्प प्रतिक्रिया टोकन हस्ताक्षरकर्ता टाइमस्टैम्प प्राधिकरण नाम से मेल खाता है (API फ़ंक्शन TS_RESP_verify_response और TS_RESP_verify_token के माध्यम से उजागर)
यदि कोई हमलावर तुलना की जाने वाली दोनों वस्तुओं को नियंत्रित कर सकता है, तो वह हमलावर क्रैश ट्रिगर कर सकता है। उदाहरण के लिए, यदि हमलावर किसी क्लाइंट या सर्वर को दुर्भावनापूर्ण प्रमाणपत्र को दुर्भावनापूर्ण CRL के विरुद्ध जांचने के लिए धोखा दे सकता है, तो ऐसा हो सकता है।
ध्यान दें कि कुछ एप्लिकेशन प्रमाणपत्र में एम्बेडेड URL के आधार पर स्वचालित रूप से CRL डाउनलोड करते हैं। यह जांच प्रमाणपत्र और CRL पर हस्ताक्षर सत्यापित होने से पहले होती है। OpenSSL के s_server, s_client और verify टूल में "-crl_download" विकल्प के लिए समर्थन है जो स्वचालित CRL डाउनलोडिंग को लागू करता है और इस हमले को उन टूल के विरुद्ध काम करते हुए प्रदर्शित किया गया है।
ध्यान दें कि एक असंबंधित बग का अर्थ है कि OpenSSL के प्रभावित संस्करण EDIPARTYNAME के सही एन्कोडिंग को पार्स या निर्माण नहीं कर सकते हैं। हालांकि, एक विकृत EDIPARTYNAME बनाना संभव है जिसे OpenSSL का पार्सर स्वीकार करेगा और इस प्रकार इस हमले को ट्रिगर करेगा।
सभी OpenSSL 1.1.1 और 1.0.2 संस्करण इस समस्या से प्रभावित हैं। अन्य OpenSSL रिलीज़ समर्थन से बाहर हैं और उनकी जांच नहीं की गई है। OpenSSL 1.1.1i में स्थिर (प्रभावित 1.1.1-1.1.1h)। OpenSSL 1.0.2x में स्थिर (प्रभावित 1.0.2-1.0.2w)।
sudo chmod +x Linux_Patched_Install_From_Source_Script
चलाएँ:
sudo ./Linux_Patched_Install_From_Source_Script
"नेटिव" OpenSSL रन टाइम पर सीधे विंडोज API का उपयोग करता है। नेटिव OpenSSL बनाने के लिए आप या तो उपयोग कर सकते हैं:
Microsoft Visual C++ (MSVC) C कंपाइलर कमांड लाइन पर
या
MinGW क्रॉस कंपाइलर GNU-जैसे विकास वातावरण MSYS2 पर चलाएं या Linux या Cygwin पर चलाएं
"होस्टेड" OpenSSL बिल्डिंग (GNU/Unix शेल, कंपाइलर और टूल का उपयोग करके) और रन टाइम पर बाहरी POSIX संगतता परत पर निर्भर करता है। इस विकल्प के लिए आप Cygwin का उपयोग कर सकते हैं।
INSTALL.md में सूचीबद्ध आवश्यकताओं और निर्देशों के अतिरिक्त, ये भी आवश्यक हैं:
Perl. Strawberry Perl, http://strawberryperl.com/ से उपलब्ध कृपया अधिक जानकारी के लिए NOTES.PERL पढ़ें, जिसमें CPAN का उपयोग शामिल है। एक विकल्प ActiveState Perl है, https://www.activestate.com/ActivePerl जिसके लिए आपको https://platform.activestate.com/ActiveState के माध्यम से Perl मॉड्यूल Win32/Console.pm को स्पष्ट रूप से बनाने और फिर इसे डाउनलोड करने की आवश्यकता हो सकती है।
Microsoft Visual C कंपाइलर।
Netwide Assembler (NASM), https://www.nasm.us से उपलब्ध ध्यान दें कि NASM एकमात्र समर्थित असेंबलर है।
Perl स्थापित करें
NASM स्थापित करें
सुनिश्चित करें कि Perl और NASM दोनों आपके %PATH% में हैं
प्रशासनिक विशेषाधिकारों के साथ Visual Studio Developer Command Prompt का उपयोग करें, इच्छित आर्किटेक्चर के आधार पर इसके किसी एक प्रकार का चयन करें। या "cmd" चलाएं और "vcvarsall.bat" को x86, x86_amd64, x86_arm, x86_arm64, amd64, amd64_x86, amd64_arm, या amd64_arm64 विकल्पों में से एक के साथ निष्पादित करें। यह nmake.exe, cl.exe, आदि के लिए आवश्यक पर्यावरण चर सेट करता है। यह भी देखें https://docs.microsoft.com/cpp/build/building-on-the-command-line
OpenSSL स्रोत निर्देशिका के मूल से चलाएँ perl Configure VC-WIN32 यदि आप 32-बिट OpenSSL चाहते हैं या perl Configure VC-WIN64A यदि आप 64-बिट OpenSSL चाहते हैं या perl Configure Configure को प्लेटफ़ॉर्म का पता लगाने दें
nmake
nmake test
nmake install
पूर्ण इंस्टॉलेशन निर्देशों के लिए, या यदि किसी भी चरण में कुछ गलत होता है, तो INSTALL.md फ़ाइल देखें।
डिफ़ॉल्ट इंस्टॉलेशन निर्देशिकाएँ पर्यावरण चर से प्राप्त होती हैं।
VC-WIN32 के लिए, निम्नलिखित डिफ़ॉल्ट का उपयोग किया जाता है:
PREFIX: %ProgramFiles(86)%\OpenSSL
OPENSSLDIR: %CommonProgramFiles(86)%\SSL
VC-WIN64 के लिए, निम्नलिखित डिफ़ॉल्ट का उपयोग किया जाता है:
PREFIX: %ProgramW6432%\OpenSSL
OPENSSLDIR: %CommonProgramW6432%\SSL
यदि वे पर्यावरण चर मौजूद नहीं हैं (उदाहरण के लिए शुद्ध Win32 इंस्टॉलेशन पर), तो ये फ़ॉलबैक उपयोग किए जाते हैं:
PREFIX: %ProgramFiles%\OpenSSL
OPENSSLDIR: %CommonProgramFiles%\SSL
यह भी ध्यान दें कि वे निर्देशिकाएँ आमतौर पर लिखने-संरक्षित होती हैं, भले ही आपका खाता प्रशासक समूह में हो। इससे निपटने के लिए, कमांड प्रॉम्प्ट पर राइट-क्लिक करके "Run as Administrator" चुनें और फिर 'nmake install' चलाने से पहले इसे शुरू करें। दूसरा समाधान, निश्चित रूप से, कॉन्फ़िगर करते समय --prefix और --openssldir का उपयोग करके निर्देशिकाओं का एक अलग सेट चुनना है।
UWP लक्ष्य केवल स्थिर और गतिशील लाइब्रेरी बनाने का समर्थन करते हैं।
आपको संकलन से पहले "vcvarsall.bat" के माध्यम से प्लेटफ़ॉर्म प्रकार को "uwp" और लक्ष्य आर्क को परिभाषित करना चाहिए। उदाहरण के लिए, यदि आप "arm64" बिल्ड बनाना चाहते हैं, तो आपको "vcvarsall.bat x86_arm64 uwp" चलाना चाहिए।
संदर्भ पाठक की सुविधा के लिए प्रदान किए गए हैं ताकि भेद्यताओं के बीच अंतर करने में मदद मिल सके।