
CVE-2025-51495 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Mongoose WebSocket के `mg_ws_cb` फ़ंक्शन में एक पूर्णांक अतिप्रवाह है, जिसके परिणामस्वरूप सीमा-से-बाहर मेमोरी एक्सेस और संभावित रिमोट कोड निष्पादन होता है।
मैं मोंगोज़ (v7.17) के नवीनतम रिलीज़ में पहचानी गई एक सुरक्षा भेद्यता की रिपोर्ट करना चाहता हूँ। यह समस्या WebSocket मॉड्यूल में, विशेष रूप से mg_ws_cb फ़ंक्शन में स्थित है जो आने वाले WebSocket फ्रेम को संभालने के लिए जिम्मेदार है।
यह फ़ंक्शन पूर्णांक अतिप्रवाह के प्रति संवेदनशील है, जो कुछ विशेष रूप से निर्मित इनपुट के तहत सीमा से बाहर मेमोरी एक्सेस का कारण बन सकता है। यह स्थिति संभावित रूप से एक दूरस्थ हमलावर द्वारा मेमोरी भ्रष्टाचार या एप्लिकेशन को क्रैश करने के लिए शोषित की जा सकती है।
चूंकि विभिन्न विक्रेता WebSocket व्यवसाय तर्क को अलग-अलग तरीके से लागू करते हैं, यह भेद्यता संभावित रूप से दूरस्थ कोड निष्पादन का कारण बन सकती है।
विवरण:
मूल भेद्यता mg_ws_cb फ़ंक्शन में स्थित है:
क्लाइंट द्वारा भेजा गया एक विशेष रूप से निर्मित WebSocket पैकेट इस बिंदु पर ofs=0 सेट कर सकता है, जो ofs-1 की गणना करते समय पूर्णांक अतिप्रवाह का कारण बनेगा, जिसके परिणामस्वरूप recv.buf की लंबाई से बहुत बड़ा मान प्राप्त होगा।
बाद के WebSocket प्रोसेसिंग फ़ंक्शन में, इस buf का उपयोग किया जा सकता है, और चूंकि इसकी लंबाई वास्तविक लंबाई से अधिक है, यह सीमा से बाहर एक्सेस या प्रोग्राम क्रैश का कारण बन सकता है।
भेद्यता ट्रिगर:
प्रदर्शन के लिए, मैंने प्रोजेक्ट में "websocket-server" नामक मौजूदा वेबसॉकेट उदाहरण को चुना। मैंने कोड में कोई बदलाव नहीं किया, सिवाय संकलन के दौरान ASAN जाँच जोड़ने के।
जब प्रोग्राम चलाया जाता है और एक विशिष्ट वेबसॉकेट पैकेट भेजा जाता है, यह सीधे क्रैश का कारण बनता है।
POC:
मैंने क्लाइंट के रूप में प्रोजेक्ट में मौजूद "websocket-client" को भी चुना, और अनुरोध भेजने के लिए main.c के fn फ़ंक्शन में केवल दो पैरामीटर में संशोधन किया।
संशोधित प्रोग्राम चलाने से सर्वर क्रैश हो जाएगा।