CVE-2024-45337
गोलांग.org/x/crypto में connection.serverAuthenticate का दुरुपयोग प्राधिकरण बायपास का कारण बन सकता है
- प्रकाशित
- 11 दिस॰ 2024
- अद्यतन
- 18 फ़र॰ 2025
- सीएनए असाइन करना
- Go
- साक्ष्य देखे गए
- 8 अग॰ 2026
प्राथमिक सीवीएसएस
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:Nकम · अगले 30 दिन
- प्रतिशत
- 87.5%
- मॉडल दिनांक
- 21 सित॰ 2026
ईपीएसएस एक सांख्यिकीय अनुमान है, कोई निश्चितता या प्रभाव का माप नहीं। इसे सीवीएसएस, केईवी स्थिति, एक्सपोज़र और अपने वातावरण के साथ मिलाएं।
सारांश
# अनुप्रयोग और लाइब्रेरी जो `connection.serverAuthenticate` (कॉलबैक फ़ील्ड `ServerConfig.PublicKeyCallback` के माध्यम से) का दुरुपयोग करते हैं, वे प्राधिकरण बायपास के प्रति संवेदनशील हो सकते हैं। `ServerConfig.PublicKeyCallback` के लिए दस्तावेज़ कहता है कि "इस फ़ंक्शन का कॉल यह गारंटी नहीं देता कि प्रस्तावित कुंजी वास्तव में प्रमाणीकरण के लिए उपयोग की जाती है।" विशेष रूप से, SSH प्रोटोकॉल क्लाइंट को यह पूछताछ करने की अनुमति देता है कि क्या कोई सार्वजनिक कुंजी स्वीकार्य है, इससे पहले कि वह संबंधित निजी कुंजी के नियंत्रण को साबित करे। `PublicKeyCallback` को कई कुंजियों के साथ बुलाया जा सकता है, और जिस क्रम में कुंजियाँ प्रदान की गई थीं, उसका उपयोग यह अनुमान लगाने के लिए नहीं किया जा सकता कि क्लाइंट ने किस कुंजी के साथ सफलतापूर्वक प्रमाणीकरण किया, यदि कोई हो। कुछ अनुप्रयोग, जो `PublicKeyCallback` को पारित की गई कुंजी(यों) (या व्युत्पन्न जानकारी) को संग्रहीत करते हैं और कनेक्शन स्थापित होने के बाद उसके आधार पर सुरक्षा-संबंधी निर्णय लेते हैं, गलत धारणाएँ बना सकते हैं। उदाहरण के लिए, एक हमलावर सार्वजनिक कुंजी A और B भेज सकता है, और फिर A के साथ प्रमाणीकरण कर सकता है। `PublicKeyCallback` को केवल दो बार बुलाया जाएगा, पहले A के साथ और फिर B के साथ। एक संवेदनशील अनुप्रयोग तब कुंजी B के आधार पर प्राधिकरण निर्णय ले सकता है, जिसके लिए हमलावर वास्तव में निजी कुंजी को नियंत्रित नहीं करता है। चूँकि इस API का व्यापक रूप से दुरुपयोग किया जाता है, आंशिक शमन के रूप में golang.org/x/[email protected] इस गुण को लागू करता है कि, सार्वजनिक कुंजी के माध्यम से सफलतापूर्वक प्रमाणीकरण करते समय, `ServerConfig.PublicKeyCallback` को पारित की गई अंतिम कुंजी वही कुंजी होगी जो कनेक्शन को प्रमाणित करने के लिए उपयोग की गई थी। `PublicKeyCallback` को अब आवश्यकता पड़ने पर एक ही कुंजी के साथ कई बार बुलाया जाएगा। ध्यान दें कि क्लाइंट अभी भी `PublicKeyCallback` को पारित की गई अंतिम कुंजी को नियंत्रित नहीं कर सकता है यदि कनेक्शन को फिर किसी भिन्न विधि से प्रमाणित किया जाता है, जैसे कि `PasswordCallback`, `KeyboardInteractiveCallback`, या `NoClientAuth`। उपयोगकर्ताओं को बाहरी स्थिति का संदर्भ देने के बजाय प्रमाणीकरण प्रयास से जुड़े डेटा को रिकॉर्ड करने के लिए विभिन्न प्रमाणीकरण कॉलबैक से `Permissions` रिटर्न मान के `Extensions` फ़ील्ड का उपयोग करना चाहिए। एक बार कनेक्शन स्थापित हो जाने के बाद, सफल प्रमाणीकरण प्रयास के अनुरूप स्थिति को `ServerConn.Permissions` फ़ील्ड के माध्यम से पुनर्प्राप्त किया जा सकता है। ध्यान दें कि कुछ तृतीय-पक्ष लाइब्रेरी प्रमाणीकरण प्रयासों में इसे साझा करके `Permissions` प्रकार का दुरुपयोग करती हैं; तृतीय-पक्ष लाइब्रेरी के उपयोगकर्ताओं को मार्गदर्शन के लिए संबंधित परियोजनाओं का संदर्भ लेना चाहिए।
जिम्मेदारीपूर्ण उपयोग
भेद्यता जानकारी का उपयोग केवल उन प्रणालियों पर करें जिनके मालिक आप हैं या परीक्षण के लिए अधिकृत हैं। किटप्लॉइट सार्वजनिक अनुसंधान मेटाडेटा से लिंक करता है और शोषण कोड या दुर्भावनापूर्ण पेलोड को संग्रहीत नहीं करता है।