
CVE-2024-29296 - Portainer CE - 2.19.4 पर उपयोगकर्ता गणना
Portainer CE 2.19.4 में उपयोगकर्ता गणना (user enumeration) भेद्यता पाई गई। यह समस्या उपयोगकर्ता प्रमाणीकरण प्रक्रिया के दौरान होती है, जहाँ प्रतिक्रिया समय में अंतर किसी दूरस्थ अप्रमाणित उपयोगकर्ता को यह निर्धारित करने की अनुमति दे सकता है कि कोई उपयोगकर्ता नाम मान्य है या नहीं।
यह भेद्यता Portainer के issue #11736 के साथ ठीक कर दी गई है, जो Portainer CE संस्करणों 2.19.5 और 2.20.2 के साथ जारी किया गया था।
मैंने यह भेद्यता तब खोजी जब मैंने एक Portainer इंस्टेंस के लॉगिन पेज पर password spray हमला करने की कोशिश की। मैंने Portainer एप्लिकेशन के लॉगिन फॉर्म में अलग-अलग उपयोगकर्ता नामों और पासवर्डों के साथ कई अनुरोध भेजे।
उपयोगकर्ता के अस्तित्व की परवाह किए बिना, यदि उपयोगकर्ता नाम + पासवर्ड संयोजन सही नहीं है, तो Portainer एप्लिकेशन का बैकएंड समान HTTP स्थिति कोड के साथ उत्तर देता है। यह मान्य उपयोगकर्ताओं की गणना (enumerate) करने के प्रयासों को रोकने - या बाधित करने - के सर्वोत्तम दृष्टिकोण के अनुरूप है।
हालाँकि, अपने password spray के परिणामों को देखते हुए, मैंने देखा कि कुछ उपयोगकर्ता नामों के लॉगिन प्रयास लगातार एक निश्चित औसत समय लेते हैं, जबकि अन्य उपयोगकर्ता नामों के लॉगिन प्रयास लगातार काफी अधिक औसत समय लेते हैं।
सिस्टम को मौजूदा उपयोगकर्ताओं के लिए पासवर्ड की वैधता की जाँच करनी होती है, लेकिन यदि उपयोगकर्ता नाम शुरू में ही अमान्य है तो उसे ऐसा करने की आवश्यकता नहीं है। इसलिए, मैंने अनुमान लगाया कि लॉगिन प्रयास के औसत समय में यह उल्लेखनीय परिवर्तन उसी से संबंधित था। फिर मैंने Portainer CE 2.19.4 की एक स्थानीय प्रति स्थापित की और उसी परिणाम के लिए व्यवहार को दोहराने का प्रयास किया।
यह वह अनुरोध प्रारूप है जो मैंने भेजा था। पेलोड डालने के लिए उपयोगकर्ता नाम और पासवर्ड फ़ील्ड चुने गए थे।

ये वे उपयोगकर्ता थे जिन्हें मैंने उपयोगकर्ता नाम फ़ील्ड में डाला था। इस परीक्षण के लिए, केवल "admin" और "felipe" उपयोगकर्ता मान्य थे। सूची के अन्य सभी उपयोगकर्ता नाम मौजूदा उपयोगकर्ताओं के अनुरूप नहीं थे।

और ये वे पासवर्ड थे जिन्हें मैंने पासवर्ड फ़ील्ड में डाला था।

प्रत्येक अद्वितीय उपयोगकर्ता नाम-पासवर्ड जोड़ी के लिए सर्वर को एक अनुरोध भेजा गया था। परिणाम नीचे दिखाए गए हैं।

जब कोई उपयोगकर्ता नाम किसी मौजूदा उपयोगकर्ता के अनुरूप होता है, तो लॉगिन प्रयास गैर-मौजूद उपयोगकर्ताओं के लॉगिन प्रयासों की तुलना में लगातार और उल्लेखनीय रूप से अधिक समय लेते हैं।
इसका मतलब है कि उस संस्करण में Portainer की प्रणाली मान्य उपयोगकर्ताओं की गणना (enumeration) के प्रति संवेदनशील है - लॉगिन प्रयासों का जवाब देने में बैकएंड द्वारा लिए गए समय को देखकर, एक हमलावर एप्लिकेशन के उपयोगकर्ताओं की गणना करने में सक्षम होता है।