
CVE-2018-10933 - libssh प्रमाणीकरण बाईपास
CVE-2018-10933 के लिए प्रूफ-ऑफ-कॉन्सेप्ट कार्यान्वयन, जो libssh के सर्वर-साइड कार्यान्वयन को प्रभावित करने वाली एक गंभीर प्रमाणीकरण दरकिनार भेद्यता है।
अस्वीकरण
यह रिपॉजिटरी केवल शैक्षिक उद्देश्यों, भेद्यता अनुसंधान और अधिकृत सुरक्षा परीक्षण के लिए प्रदान की गई है। स्पष्ट अनुमति के बिना सिस्टम का परीक्षण कभी न करें।
CVE-2018-10933 libssh के सर्वर-साइड स्टेट मशीन में खोजी गई एक गंभीर प्रमाणीकरण दरकिनार भेद्यता है।
कमजोर पासवर्ड या क्रिप्टोग्राफिक कमजोरियों से जुड़ी पारंपरिक प्रमाणीकरण खामियों के विपरीत, यह भेद्यता इसलिए मौजूद है क्योंकि सर्वर एक प्रोटोकॉल संदेश पर गलत तरीके से भरोसा करता है जिसे केवल सर्वर से क्लाइंट को भेजा जाना चाहिए।
इसलिए एक हमलावर एक कमजोर libssh सर्वर को यह विश्वास दिला सकता है कि प्रमाणीकरण पहले ही बिना कोई क्रेडेंशियल प्रदान किए सफलतापूर्वक पूरा हो चुका है।
यह एक अनप्रमाणित हमलावर को libssh का उपयोग करने वाले सर्वर मोड में कमजोर अनुप्रयोगों के विरुद्ध एक प्रमाणित SSH सत्र स्थापित करने की अनुमति देता है।
| क्षेत्र | मान |
|---|---|
| CVE | CVE-2018-10933 |
| गंभीरता | गंभीर |
| CVSS v3 | 9.1 |
| CWE | CWE-287 (अनुचित प्रमाणीकरण) |
| हमला वेक्टर | नेटवर्क |
| उपयोगकर्ता सहभागिता | कोई नहीं |
| आवश्यक विशेषाधिकार | कोई नहीं |
यह भेद्यता सर्वर मोड में चलने वाले libssh को प्रभावित करती है।
प्रभावित संस्करणों में शामिल हैं:
केवल SSH क्लाइंट के रूप में libssh का उपयोग करने वाले अनुप्रयोग कमजोर नहीं हैं।
यह भेद्यता libssh के सर्वर कोड के अंदर कार्यान्वित प्रमाणीकरण स्टेट मशीन से उत्पन्न होती है।
सामान्य SSH प्रमाणीकरण प्रवाह के दौरान:
Client ----------------------> Server
SSH_MSG_USERAUTH_REQUEST
|
V
Server validates credentials
|
V
SSH_MSG_USERAUTH_SUCCESS
|
V
Authenticated Session
प्रोटोकॉल निर्दिष्ट करता है कि SSH_MSG_USERAUTH_SUCCESS सफल प्रमाणीकरण के बाद केवल सर्वर द्वारा उत्पन्न किया जाता है।
हालांकि, libssh के कमजोर संस्करण इस संदेश की उत्पत्ति को ठीक से मान्य करने में विफल रहते हैं।
क्लाइंट द्वारा आपूर्ति किए गए SSH_MSG_USERAUTH_SUCCESS को अस्वीकार करने के बजाय, सर्वर गलत तरीके से अपनी आंतरिक प्रमाणीकरण स्थिति को सीधे यहां स्थानांतरित करता है:
Authenticated = TRUE
बिना कभी क्रेडेंशियल सत्यापित किए।
यह अनुचित प्रमाणीकरण (CWE-287) का एक उत्कृष्ट उदाहरण है।
Client
|
| USERAUTH_REQUEST
|
V
Server
Validate Username
Validate Password
Validate Keys
|
V
USERAUTH_SUCCESS
Authenticated
Attacker
|
| USERAUTH_SUCCESS
|
V
Vulnerable Server
(No validation)
Authenticated
सफल शोषण एक अनप्रमाणित हमलावर को निम्नलिखित की अनुमति देता है:
वास्तविक प्रभाव इस बात पर निर्भर करता है कि कमजोर एप्लिकेशन प्रमाणीकरण के बाद libssh का उपयोग कैसे करता है।
यह भेद्यता इसलिए मौजूद है क्योंकि प्रमाणीकरण स्टेट मशीन गलत तरीके से पैकेट स्वीकार करती है:
SSH2_MSG_USERAUTH_SUCCESS
क्लाइंट से।
यह सत्यापित करने के बजाय कि पैकेट सर्वर से उत्पन्न हुआ है, libssh अपनी आंतरिक सत्र स्थिति को इस प्रकार अपडेट करता है जैसे प्रमाणीकरण सफलतापूर्वक पूरा हो गया हो।
चूंकि बाद के प्राधिकरण जांच इस आंतरिक स्थिति पर निर्भर करते हैं, हमलावर तुरंत प्रमाणित चैनल खोल सकते हैं।
यह भेद्यता निम्नलिखित का शोषण नहीं करती:
इसके बजाय, यह प्रोटोकॉल स्थिति हैंडलिंग में एक तार्किक दोष का शोषण करता है।
हमलावर को आवश्यकता है:
कोई आवश्यकता नहीं:
की आवश्यकता है।
संभावित संकेतकों में शामिल हैं:
नेटवर्क IDS हस्ताक्षर क्लाइंट से भेजे गए असामान्य SSH2_MSG_USERAUTH_SUCCESS पैकेट की भी पहचान कर सकते हैं।
libssh को पैच किए गए रिलीज़ में से किसी एक पर अपग्रेड करें:
यदि तुरंत अपग्रेड करना संभव नहीं है:
प्रभावित सॉफ़्टवेयर को अपडेट करने के अलावा कोई विश्वसनीय वर्कअराउंड मौजूद नहीं है।
यह रिपॉजिटरी प्रदर्शित करती है कि कैसे प्रमाणीकरण स्टेट मशीन की भेद्यताएं प्रोटोकॉल कार्यान्वयन गलतियों से उत्पन्न हो सकती हैं।
यह निम्नलिखित की सहायता के लिए अभिप्रेत है:
शामिल प्रूफ-ऑफ-कॉन्सेप्ट सुरक्षित प्रोटोकॉल कार्यान्वयन की समझ में सुधार करने के लिए नियंत्रित वातावरण में भेद्यता का चित्रण करता है।