यह एक बहुत ही विशिष्ट प्रकार का शोषण है जो सभी प्रकार के सॉफ़्टवेयर को प्रभावित करता है।

यूज़-आफ्टर-फ़्री (यूएएफ) एक आदिम मेमोरी करप्शन भेद्यता है जो ऑपरेटिंग सिस्टम से लेकर एप्लिकेशन सॉफ़्टवेयर तक सभी प्रकार के सॉफ़्टवेयर के लिए एक महत्वपूर्ण ख़तरा बनी हुई है। यह गंभीर सुरक्षा दोष तब होता है जब कोई एप्लिकेशन घटक किसी मेमोरी पते में डेटा तक पहुंचने का प्रयास करता है जिसे पहले ही मुक्त कर दिया गया है, इसलिए नाम- उपयोग-बाद-मुक्त।

यूएएफ की कमजोरियां सॉफ्टवेयर के संभावित शोषण या यहां तक ​​कि सिस्टम समझौता का कारण बन सकती हैं। यहां बताया गया है कि यूएएफ भेद्यता क्या है, ऐसा क्यों होता है, और आप अपने सॉफ़्टवेयर को यूएएफ भेद्यता से कैसे सुरक्षित कर सकते हैं।

उपयोग-आफ्टर-फ्री (यूएएफ) भेद्यता क्या है?

यूज़-आफ्टर-फ्री भेद्यता में गोता लगाने से पहले, आइए एक कदम पीछे हटें और मेमोरी प्रबंधन की कुछ बुनियादी बातों को समझें। जब कोई प्रोग्राम निष्पादित होता है, तो उसका डेटा और कोड मेमोरी में लोड हो जाता है।

मेमोरी प्रबंधन यह प्रबंधित करने की प्रक्रिया है कि मेमोरी में डेटा और कोड को इष्टतम तरीके से कैसे स्टोर किया जाए (जिसे मेमोरी एलोकेशन कहा जाता है) और हटाया जाए (जिसे मेमोरी डीलोकेशन कहा जाता है)। दो प्राथमिक मेमोरी सेगमेंट हैं जहां प्रोग्राम डेटा संग्रहीत किया जाता है

ढेर और ढेर.

प्रोग्राम को स्टैक पर स्थिर रूप से और हीप पर गतिशील रूप से मेमोरी स्पेस आवंटित किया जा सकता है। उपयोग-के बाद-मुक्त भेद्यता तब होती है जब प्रोग्रामर अपने प्रोग्राम में गतिशील मेमोरी आवंटन और डीलोकेशन को ठीक से प्रबंधित नहीं करते हैं। इसका मतलब है कि यूएएफ वर्ग की कमजोरियाँ एक प्रकार का ढेर शोषण है। इस भेद्यता को बेहतर ढंग से समझने के लिए, इसकी एक मजबूत समझ रखने में मदद मिलती है प्रोग्रामिंग में पॉइंटर्स कैसे काम करते हैं.

यूज़-आफ्टर-फ्री (यूएएफ) जैसा कि नाम से पता चलता है, एक प्रकार की आदिम मेमोरी भ्रष्टाचार भेद्यता है जो तब होती है जब कोई वस्तु पहले से ही मेमोरी से हटाए गए आवंटन को फिर से एक्सेस किया जाता है जिससे क्रैश हो जाता है, या अनपेक्षित परिणाम जैसे मेमोरी लीक, विशेषाधिकार में वृद्धि (ईओपी) या मनमाना कोड कार्यान्वयन। आइए जानें कि यह स्थिति सबसे पहले कैसे उत्पन्न होती है और इसका फायदा कैसे उठाया जाता है।

उपयोग-आफ्टर-फ्री (यूएएफ) का शोषण कैसे किया जाता है?

यूज़-आफ्टर-फ्री (यूएएफ), जैसा कि नाम से संकेत मिलता है, एक आदिम मेमोरी भ्रष्टाचार भेद्यता है जो तब होती है जब कोई प्रोग्राम उन मेमोरी स्थानों तक पहुंच जारी रखता है जिन्हें उसने मुक्त कर दिया है। आइए एक उदाहरण कोड पर नजर डालें:

#शामिल करना <stdio।एच>
#शामिल करना <stdlib।एच>

int यहाँमुख्य(){
int यहाँ *एमयूओ = मॉलोक (साइजऑफ(int यहाँ));
*एमयूओ = 69420;
printf("मान: %d\n", *एमयूओ);
मुफ़्त (एमयूओ);
printf("मान?: %d\n", *एमयूओ);
वापस करना0;
}

क्या भेद्यता का पता लगाया जा सकता है? जैसा कि आप देख सकते हैं, इस कोड में, एमयूओ का उपयोग करके पॉइंटर को मेमोरी से हटा दिया जाता है मुक्त() फ़ंक्शन, फिर भी इसे अगली पंक्ति में फिर से कॉल किया जाता है प्रिंटफ() समारोह। इसके परिणामस्वरूप अप्रत्याशित प्रोग्राम व्यवहार होता है और सॉफ़्टवेयर में भेद्यता कहां मौजूद है, इसके आधार पर विशेषाधिकार वृद्धि और मेमोरी लीक हासिल करने के लिए इसका लाभ उठाया जा सकता है।

मुफ़्त के बाद उपयोग को कैसे कम करें?

यूएएफ किसी एप्लिकेशन की प्रोग्रामिंग में गलतियों के कारण होता है। अपने सॉफ़्टवेयर में यूज़-आफ्टर-फ़्री कमजोरियों से बचने के लिए आप कुछ सावधानियां बरत सकते हैं।

यहां कुछ सर्वोत्तम प्रथाएं दी गई हैं जिन्हें आप अपने सॉफ़्टवेयर में मेमोरी भ्रष्टाचार की कमजोरियों को कम करने के लिए अपना सकते हैं:

  • यूएएफ, बफर ओवरफ्लो इत्यादि जैसी आदिम मेमोरी भ्रष्टाचार कमजोरियों को रोकने के लिए इन-बिल्ट तंत्र के साथ रस्ट जैसी मेमोरी-सुरक्षित प्रोग्रामिंग भाषाओं का उपयोग करना। यदि आप C/C++ जैसी प्रोग्रामिंग भाषाओं का उपयोग करते हैं, तो आपके कोड में मेमोरी बग आने की अधिक संभावना है। इसी कारण से, विंडोज़ और लिनक्स जैसे ऑपरेटिंग सिस्टम भी धीरे-धीरे रस्ट की ओर स्थानांतरित हो रहे हैं। आपको भी विचार करना चाहिए जंग के बारे में सीखना यदि आप निम्न-स्तरीय प्रोग्राम बनाते हैं।
  • मेमोरी-सुरक्षित भाषा का उपयोग करने के अलावा यह अनुशंसा की जाती है कि आप उपयोग-आफ्टर-फ्री भेद्यता के किसी भी परिचय से बचने के लिए मुक्त होने के बाद पॉइंटर को NULL मान पर सेट करने जैसी सर्वोत्तम प्रथाओं का पालन करें।
  • आप वन टाइम एलोकेशन (ओटीए) जैसी तकनीकों को भी लागू कर सकते हैं जो हमलावरों को मुक्त मेमोरी तक पहुंचने से रोकती हैं ऑब्जेक्ट और एक सख्त ऑब्जेक्ट जीवनचक्र नीति, जो आवंटित की गई प्रत्येक मेमोरी ऑब्जेक्ट का ट्रैक रखने में मदद करती है हटा दिया गया हालाँकि, ध्यान रखें कि ये कार्यान्वयन मेमोरी और प्रदर्शन को बढ़ा सकते हैं।

उपयोग-आफ्टर-फ्री (यूएएफ) भेद्यता के वास्तविक दुनिया के उदाहरण

यूज़-आफ्टर-फ्री (यूएएफ) भेद्यता को वेब ब्राउज़र से लेकर एंड्रॉइड कर्नेल से लेकर रोजमर्रा के अनुप्रयोगों तक विभिन्न वास्तविक दुनिया के परिदृश्यों में खोजा और शोषण किया गया है। यह सक्रिय सुरक्षा उपायों की आवश्यकता को दर्शाता है। यूएएफ के कुछ वास्तविक दुनिया के उदाहरणों में शामिल हैं:

  • इंटरनेट ब्राउज़र: वेब ब्राउज़र में यूएएफ कमजोरियों का फायदा मनमाना कोड निष्पादित करने, उपयोगकर्ता की गोपनीयता से समझौता करने और रिमोट कोड निष्पादन हमलों को अंजाम देने के लिए किया गया है। एक हालिया उदाहरण CVE-2021-38008 होगा, जिसने Google Chrome में UAF भेद्यता का फायदा उठाया, जिससे धमकी देने वाले अभिनेताओं को पीड़ित मशीन पर दूरस्थ रूप से मनमाना कोड निष्पादित करने की अनुमति मिली।
  • ऑपरेटिंग सिस्टम: विंडोज/लिनक्स/एंड्रॉइड कर्नेल में पाई गई यूएएफ कमजोरियों ने हमलावरों को उन्नत विशेषाधिकार प्राप्त करने, सुरक्षा तंत्र को बायपास करने और दृढ़ता हासिल करने की अनुमति दी है। यूएएफ की ढेर सारी कमजोरियां पाई गई हैं और आज तक ऑपरेटिंग सिस्टम कर्नेल में पाई जाती हैं। इस लेखन के समय, सीवीई-2023-3269, लिनक्स कर्नेल में एक और यूएएफ भेद्यता जिसके कारण विशेषाधिकार वृद्धि हुई, सार्वजनिक रूप से जारी की गई थी। CVE-2022-23270 विंडोज़ कर्नेल में UAF भेद्यता का एक उदाहरण है।
  • सॉफ्टवेयर अनुप्रयोग: सॉफ्टवेयर अनुप्रयोगों में यूएएफ कमजोरियों का उपयोग कार्यक्रम में हेरफेर करने के लिए किया गया है व्यवहार, जिससे सूचना प्रकटीकरण, मनमाना कोड निष्पादन, प्रोग्राम क्रैश, और सबसे खराब स्थिति में, विशेषाधिकार प्राप्त होता है वृद्धि. कई सॉफ़्टवेयर एप्लिकेशन यूएएफ हमलों के प्रति संवेदनशील रहे हैं और अभी भी हैं। ये सॉफ़्टवेयर अधिकतर C/C++ प्रोग्राम हैं जिन्हें अकुशल और असुरक्षित मेमोरी प्रबंधन दृष्टिकोण के साथ विकसित किया गया है।

वास्तविक दुनिया के अनुप्रयोगों में उपयोग-आफ्टर-फ्री कमजोरियों के बारे में अधिक जानने के लिए आप इसकी जांच कर सकते हैं आधिकारिक मेटर सीवीई सूची पृष्ठ बनाएं और उपयोग-आफ्टर-फ्री कीवर्ड के आधार पर क्रमबद्ध करें।

कुशल मेमोरी आवंटन सॉफ़्टवेयर को सुरक्षित बनाने में मदद करता है

इष्टतम और सुविचारित मेमोरी आवंटन आपके अनुप्रयोगों को सामान्य आदिम मेमोरी भ्रष्टाचार कमजोरियों का शिकार होने से बचाने में काफी मदद करता है।

यूएएफ के साथ-साथ टाइम ऑफ चेक टाइम ऑफ यूज (TOCTOU), रेस की स्थिति और बफर ओवरफ्लो (बीओएफ) सबसे अधिक उपयोग की जाने वाली मेमोरी कमजोरियों में से कुछ हैं। इन सभी से यह सीखकर बचा जा सकता है कि आपके प्रोग्राम की मेमोरी को जिस प्लेटफ़ॉर्म पर वह चलाता है वह कैसे प्रबंधित करता है। यह आपको स्पष्टता देता है कि ऑपरेटिंग सिस्टम आपके प्रोग्राम को मेमोरी में कैसे आवंटित कर रहा है और आपको इष्टतम प्रदर्शन और सुरक्षा के लिए सॉफ़्टवेयर डिज़ाइन करने के लिए टूल से लैस करता है।

यदि आपने पहले से नहीं किया है, तो आप यह समझकर शुरुआत कर सकते हैं कि दुनिया के सबसे अधिक उपयोग किए जाने वाले सर्वर ऑपरेटिंग सिस्टम लिनक्स पर मेमोरी प्रबंधन कैसे किया जाता है।