
CVE-2025-5548 भेद्यता का तकनीकी अध्ययन
इस कार्य में CVE-2025-5548 भेद्यता का विश्लेषण किया गया है, जो FreeFloat FTP Server v1.0 में मौजूद स्टैक बफर ओवरफ्लो से संबंधित है। प्रयोगशाला का मुख्य उद्देश्य यह समझना है कि एक भेद्य अनुप्रयोग हेरफेर किए गए इनपुट पर कैसे प्रतिक्रिया करता है, और एक नियंत्रित वातावरण में यह देखना है कि एक सत्यापन विफलता प्रोग्राम के निष्पादन प्रवाह को कैसे प्रभावित कर सकती है।
इस रिपॉजिटरी का विकास केवल अंतिम परिणाम दिखाने तक सीमित नहीं है, बल्कि इसमें अनुसंधान की पूरी प्रक्रिया शामिल है: वातावरण की तैयारी, उपकरणों का चयन, विफलता का अवलोकन, मेमोरी विश्लेषण और भेद्यता के वास्तविक प्रभाव का सत्यापन।
यह कार्य दो अलग-अलग खंडों में विभाजित है।
इस अनुभाग में समझाया गया है कि अभ्यास का वातावरण कैसे तैयार किया गया, कौन सा ऑपरेटिंग सिस्टम उपयोग किया गया, भेद्य अनुप्रयोग कौन सा है, और विश्लेषण करने के लिए कौन से उपकरण आवश्यक समझे गए।
दूसरा भाग व्यावहारिक पहलू पर केंद्रित है। यहाँ विफलता का पता लगाने, मेमोरी भ्रष्टाचार की पुष्टि करने, रजिस्टरों के अधिलेखन का अध्ययन करने, और यह जाँचने की प्रक्रिया वर्णित है कि भेद्यता का फायदा कैसे उठाया जा सकता है।
अभ्यास Windows 11 Pro 25H2 (Build 26200.6584) वाली वर्चुअल मशीन पर किया गया है। चयनित भेद्य सॉफ़्टवेयर FreeFloat FTP Server v1.0 है, जो एक पुराना अनुप्रयोग है और आधुनिक प्रोग्रामों में मौजूद कई सामान्य सुरक्षा सुविधाओं के अभाव के कारण इस प्रकार के अभ्यासों के लिए उपयुक्त है।
वर्चुअल मशीन का नेटवर्क NAT मोड में कॉन्फ़िगर किया गया था, जिससे निर्भरताएँ स्थापित करने, उपकरण डाउनलोड करने और प्रयोगशाला की बुनियादी कनेक्टिविटी बनाए रखने के लिए इंटरनेट तक पहुँच मिल सकी।
विश्लेषण के सभी चरणों को पूरा करने के लिए कई उपयोगिताओं पर निर्भर रहना आवश्यक था। कुछ का उपयोग वातावरण तैयार करने के लिए, कुछ का बाइनरी की जाँच के लिए, और कुछ का विफलता होने पर प्रक्रिया के व्यवहार का निरीक्षण करने के लिए किया गया।
इसका उपयोग रिपॉजिटरी डाउनलोड करने, कुछ संसाधनों को व्यवस्थित रखने और अनुसंधान के दौरान उपयोग की गई सामग्री के प्रबंधन को सुविधाजनक बनाने के लिए किया गया।
इसका उपयोग कनेक्टिविटी सत्यापित करने, उजागर सेवा की पहचान करने, और यह जाँचने के लिए सहायता के रूप में किया गया कि लक्ष्य अपेक्षित पोर्ट पर सही ढंग से प्रतिक्रिया दे रहा है।
इसे Windows सिस्टम के भीतर निम्न-स्तरीय विश्लेषण और डिबगिंग कार्यों में उपयोगी लाइब्रेरी, हेडर और उपकरण उपलब्ध कराने के लिए स्थापित किया गया।
इसका उपयोग त्वरित संपादन, स्क्रिप्ट की समीक्षा, और स्ट्रिंग्स या परीक्षण डेटा के सरल हेरफेर के लिए किया गया।
यह स्क्रिप्ट लिखने, स्वचालन का परीक्षण करने, और कोड के साथ अधिक व्यवस्थित रूप से काम करने के लिए एक सुविधाजनक वातावरण के रूप में कार्य करता था।
यह विशेष रूप से तब उपयोगी था जब लंबी स्क्रिप्ट की समीक्षा करनी हो या पेलोड निर्माण से संबंधित लॉजिक को डीबग करना हो।
दो संस्करणों पर विचार किया गया:
Ghidra को चलाने के लिए यह आवश्यक था, क्योंकि यह उपकरण Java पर विकसित किया गया है।
इसका उपयोग निष्पादन के दौरान प्रोग्राम की स्थिति देखने, रजिस्टरों की जाँच करने, मेमोरी की समीक्षा करने, और उस सटीक बिंदु का विश्लेषण करने के लिए किया गया जहाँ विफलता होती है।
इसका उपयोग स्थिर विश्लेषण चरण में बाइनरी की समीक्षा करने, और सुरक्षा की दृष्टि से संदिग्ध प्रतीत होने वाले फ़ंक्शन का पता लगाने के लिए किया गया।
इसका उपयोग भेद्य प्रोग्राम के आंतरिक तर्क को डीकंपाइल करने और बेहतर ढंग से समझने के लिए सहायता के रूप में किया गया।
इस प्लगइन ने पैटर्न निर्माण, ऑफसेट की गणना, और पेलोड में समस्याग्रस्त वर्णों की पहचान जैसे कार्यों को आसान बना दिया।
प्रयोगशाला का मुख्य घटक FreeFloat FTP Server v1.0 था, जो प्रूफ ऑफ कॉन्सेप्ट के भीतर लक्ष्य प्रणाली के रूप में कार्य करता है। इसकी रुचि इस तथ्य में है कि इसमें स्टैक ओवरफ्लो की एक क्लासिक भेद्यता शामिल है, जो इसे शैक्षिक विश्लेषण के लिए एक अत्यंत उपयुक्त मामला बनाती है।
हालाँकि इस प्रकार के अभ्यासों के लिए पहले से तैयार वर्चुअल मशीनें मौजूद हैं, इस मामले में वातावरण का दस्तावेजीकरण करने और उपयोग किए गए उपकरणों को उचित ठहराने का विकल्प चुना गया। इससे यह बेहतर ढंग से समझा जा सकता है कि प्रत्येक अनुप्रयोग प्रयोगशाला का हिस्सा क्यों है और विश्लेषण के दौरान वह क्या भूमिका निभाता है।
पहला कदम यह सत्यापित करना था कि FTP सेवा सुलभ है और सही ढंग से कार्य कर रही है। कनेक्टिविटी की पुष्टि होने के बाद, स्ट्रिंग प्रबंधन से संबंधित संभावित कमजोर बिंदुओं का पता लगाने के लिए स्थिर विश्लेषण उपकरणों के माध्यम से बाइनरी की समीक्षा की गई।
इस समीक्षा के दौरान strcpy और strcat जैसे असुरक्षित फ़ंक्शन सामने आए, जिससे संदेह मजबूत हुआ कि सेवा अत्यधिक लंबे इनपुट के प्रति भेद्य हो सकती है। FTP प्रोटोकॉल के कई कमांडों की भी जाँच की गई जो उपयोगकर्ता-नियंत्रित डेटा प्राप्त कर सकते हैं, और उनमें से एक को परीक्षणों के लिए मुख्य उम्मीदवार के रूप में चुना गया।
इस आधार के साथ, निष्पादन के दौरान उसके व्यवहार का निरीक्षण करने के लिए प्रक्रिया को एक डिबगर में लोड किया गया।
अगले चरण में यह जाँचने के लिए कि क्या प्रोग्राम सही ढंग से प्रतिक्रिया देना बंद कर देता है, धीरे-धीरे लंबी स्ट्रिंग्स भेजी गईं। इस प्रक्रिया से यह सत्यापित करना संभव हुआ कि एक निश्चित आकार के बाद सेवा विफल हो जाती है और अंततः मेमोरी में परिवर्तन का कारण बनती है।
उस व्यवहार ने पुष्टि की कि यह केवल एक सतही सत्यापन त्रुटि नहीं थी, बल्कि एक वास्तविक भ्रष्टाचार था जो प्रक्रिया के प्रवाह को प्रभावित करता था।
विफलता उत्पन्न करने के बाद, रिटर्न एड्रेस तक पहुँचने के लिए कितने बाइट्स आवश्यक हैं, इसकी सटीक गणना करना आवश्यक था। इसके लिए एक गैर-पुनरावृत्त अनुक्रम का उपयोग किया गया, ताकि क्रैश के समय EIP में दिखाई देने वाला मान भेजी गई इनपुट के भीतर एक सटीक स्थिति से संबंधित किया जा सके।
इस प्रक्रिया की बदौलत नियंत्रण रजिस्टर को अधिलेखित करने के लिए आवश्यक सटीक ऑफसेट प्राप्त हुआ।
ऑफसेट ज्ञात होने के बाद, एक नया परीक्षण तैयार किया गया जिसमें रिटर्न एड्रेस को आसानी से पहचाने जाने योग्य मान से बदल दिया गया। उद्देश्य यह जाँचना था कि क्या प्रोग्राम EIP को नियंत्रित तरीके से संशोधित करने की अनुमति देता है।
परीक्षण सफल रहा, क्योंकि डिबगर ने दिखाया कि रजिस्टर में ठीक वही मान था जो डाला गया था। इसने सिद्ध कर दिया कि निष्पादन प्रवाह को बदलना और उसे चुनी गई दिशा की ओर पुनर्निर्देशित करना संभव था।
उस बिंदु तक पहुँचने के बाद, विश्लेषण किया गया कि कौन से बाइट्स पेलोड में हस्तक्षेप कर सकते हैं। इस प्रकार की भेद्यताओं में यह आम बात है कि कुछ वर्ण स्ट्रिंग को ट्रंकेट, अप्रत्याशित परिवर्तन या समय से पहले समाप्त कर देते हैं।
मेमोरी में क्रमिक तुलनाओं के माध्यम से कई bad characters की पहचान की गई, जिनमें शामिल हैं:
\x00\x0a\x0dउन्हें पहचानना एक स्थिर और भेद्य प्रोग्राम के व्यवहार के अनुकूल अंतिम पेलोड बनाने के लिए महत्वपूर्ण था।
अगला कदम एक उपयुक्त पता खोजना था जो निष्पादन को उस मेमोरी क्षेत्र की ओर पुनर्निर्देशित करने की अनुमति दे जहाँ पेलोड रखा जाएगा। यह विश्लेषण ऑपरेटिंग सिस्टम और सक्रिय सुरक्षा सुविधाओं को ध्यान में रखकर किया जाना था, क्योंकि कुछ पते निष्पादनों के बीच स्थिर नहीं होते हैं।
प्रयोगशाला के भीतर एक मान्य संदर्भ पाया गया जो प्रवाह के अधिलेखन को हमलावर-नियंत्रित इनपुट से जोड़ने की अनुमति देता था।
प्रवाह नियंत्रण सत्यापित हो जाने के बाद, पहले खोजी गई बाधाओं के अनुकूल एक shellcode बनाई गई। इसके अलावा, पेलोड की शुरुआत में तटस्थ निर्देशों का एक क्षेत्र जोड़ा गया ताकि CPU सुरक्षित रूप से पेलोड की शुरुआत तक पहुँच सके, भले ही अपेक्षित स्थिति में थोड़ा विचलन हो।
यह कदम निष्पादन की विश्वसनीयता बढ़ाने के लिए महत्वपूर्ण था।
अंतिम चरण में, पूर्ण पेलोड को भेद्य सेवा पर भेजा गया, जबकि हमलावर मशीन पर एक listener सुन रहा था। परिणाम लक्ष्य प्रणाली के साथ एक दूरस्थ कनेक्शन की स्थापना थी, जिसने पुष्टि की कि यह भेद्यता न केवल प्रोग्राम को क्रैश करने की अनुमति देती है, बल्कि नियंत्रित निष्पादन प्राप्त करने की भी अनुमति देती है।
यह विफलता के वास्तविक प्रभाव को प्रदर्शित करता है और आक्रामक और रक्षात्मक सुरक्षा के दृष्टिकोण से इसकी प्रासंगिकता को उचित ठहराता है।
CVE-2025-5548 का अध्ययन स्पष्ट रूप से दिखाता है कि कैसे एक पुराना अनुप्रयोग, आधुनिक सुरक्षा तंत्रों के बिना, मेमोरी भ्रष्टाचार पर आधारित शास्त्रीय शोषण तकनीकों के प्रति भेद्य हो सकता है।
प्रयोगशाला के दौरान कई मूलभूत चरणों को पूरा किया गया: वातावरण की तैयारी, विफलता का प्रारंभिक अवलोकन, ओवरफ्लो का सत्यापन, निष्पादन रजिस्टर का नियंत्रण, पेलोड का डिबगिंग और अंतिम परिणाम का सत्यापन।
तकनीकी परीक्षण से परे, यह मामला यह समझने में मदद करता है कि असुरक्षित फ़ंक्शनों का उपयोग और सुरक्षा उपायों की अनुपस्थिति विरासत में मिले सॉफ़्टवेयर में एक महत्वपूर्ण जोखिम क्यों बनी हुई है। इसलिए, इस प्रकार के अभ्यास नियंत्रित वातावरण में रिवर्सिंग, भेद्यता विश्लेषण और शोषण के ज्ञान को मजबूत करने के लिए विशेष रूप से उपयोगी होते हैं।