कमजोरियाँ और उनका शोषण
कमजोरियाँ सॉफ्टवेयर में ऐसी खामियाँ होती हैं जो उसकी सुरक्षा धारणाओं का उल्लंघन करती हैं; शोषण ऐसी खामी को हमलावर-नियंत्रित व्यवहार में बदलने की कला है, जिसमें डेटा रिसाव से लेकर पूर्ण कोड निष्पादन तक शामिल है।
Definition
एक भेद्यता (vulnerability) एक प्रणाली में एक कमजोरी है जिसका उपयोग हमलावर उसकी सुरक्षा नीति का उल्लंघन करने के लिए कर सकता है; एक एक्सप्लॉइट (exploit) एक तकनीक या प्रोग्राम है जो अनधिकृत प्रभाव प्राप्त करने के लिए एक विशिष्ट भेद्यता का लाभ उठाता है।
Scope
यह विषय प्रमुख भेद्यता वर्गों — मेमोरी-करप्शन बग्स (बफर ओवरफ्लो, यूज़-आफ्टर-फ्री), इंजेक्शन, पूर्णांक त्रुटियाँ, और लॉजिक खामियाँ — और उनका फायदा उठाने की तकनीकों को शामिल करता है, जिसमें कंट्रोल-फ्लो हाईजैकिंग और रिटर्न-ओरिएंटेड प्रोग्रामिंग शामिल हैं। इसमें उन शमन उपायों को भी शामिल किया गया है जो शोषण की लागत बढ़ाते हैं (ASLR, DEP/NX, स्टैक कैनरीज़, कंट्रोल-फ्लो इंटीग्रिटी)। यह सुरक्षित-विकास प्रथाओं और वेब-विशिष्ट कमजोरियों को बाहर करता है, जिन्हें संबंधित विषयों में वर्णित किया गया है।
Core questions
- सॉफ्टवेयर की खामियों की कौन सी श्रेणियाँ शोषण योग्य कमजोरियाँ पैदा करती हैं?
- एक मेमोरी-करप्शन बग को प्रोग्राम पर नियंत्रण में कैसे बदला जाता है?
- रिटर्न-ओरिएंटेड प्रोग्रामिंग क्या है और यह सरल सुरक्षा उपायों को क्यों हरा देती है?
- ASLR, DEP, और स्टैक कैनरीज़ जैसे शमन उपाय शोषण की बाधा को कैसे बढ़ाते हैं?
- शोषण और शमन के बीच 'हथियारों की दौड़' क्यों बनी रहती है?
Key concepts
- बफर ओवरफ्लो
- यूज़-आफ्टर-फ्री
- पूर्णांक ओवरफ्लो
- इंजेक्शन
- कंट्रोल-फ्लो हाईजैकिंग
- रिटर्न-ओरिएंटेड प्रोग्रामिंग
- शेलकोड
- ASLR, DEP/NX, स्टैक कैनरीज़
- कंट्रोल-फ्लो इंटीग्रिटी
Key theories
- कंट्रोल-फ्लो हाईजैकिंग
- कई एक्सप्लॉइट एक कोड पॉइंटर (जैसे रिटर्न एड्रेस या फ़ंक्शन पॉइंटर) को दूषित करते हैं ताकि निष्पादन को हमलावर-चुने हुए कोड पर पुनर्निर्देशित किया जा सके, जिसका प्रामाणिक उदाहरण स्टैक बफर ओवरफ्लो है जो एक सहेजे गए रिटर्न एड्रेस को अधिलेखित करता है।
- शमन उपाय और शोषण की हथियारों की दौड़
- गैर-निष्पादन योग्य मेमोरी, एड्रेस-स्पेस लेआउट रैंडमाइजेशन, स्टैक कैनरीज़ और कंट्रोल-फ्लो इंटीग्रिटी जैसे बचाव प्रत्येक तकनीकों के एक वर्ग को अवरुद्ध करते हैं, जिससे एक निरंतर वृद्धि में नए हमले (रिटर्न-ओरिएंटेड प्रोग्रामिंग, सूचना लीक) को बढ़ावा मिलता है।
Mechanisms
एक क्लासिक स्टैक ओवरफ्लो बफर की सीमाओं से आगे लिखता है, सहेजे गए रिटर्न एड्रेस को अधिलेखित करता है ताकि, जब फ़ंक्शन वापस आता है, तो निष्पादन हमलावर-प्रदत्त शेलकोड पर कूद जाता है। शमन उपायों ने इसे तोड़ दिया: गैर-निष्पादन योग्य मेमोरी (DEP/NX) ने इंजेक्टेड कोड को चलने से रोक दिया, जिससे रिटर्न-ओरिएंटेड प्रोग्रामिंग को बढ़ावा मिला जो मौजूदा कोड टुकड़ों को जोड़ता है; एड्रेस-स्पेस लेआउट रैंडमाइजेशन ने लक्ष्य पतों को छिपा दिया, जिससे इसे हराने के लिए सूचना-रिसाव प्रिमिटिव्स को बढ़ावा मिला। कंट्रोल-फ्लो इंटीग्रिटी और मेमोरी-सेफ भाषाएँ इन वर्गों को पूरी तरह से बंद करने का लक्ष्य रखती हैं।
Clinical relevance
शोषण योग्य कमजोरियाँ वास्तविक हमलों का कच्चा माल हैं: मेमोरी-सेफ्टी बग्स प्रमुख ब्राउज़रों और ऑपरेटिंग सिस्टम में अधिकांश गंभीर कमजोरियों के लिए जिम्मेदार हैं, ज़ीरो-डे एक्सप्लॉइट्स जासूसी और अपराध में खरीदे, बेचे और उपयोग किए जाते हैं, और यह अनुशासन रक्षात्मक इंजीनियरिंग, जिम्मेदार प्रकटीकरण, बग बाउंटीज़ और रस्ट जैसी मेमोरी-सेफ भाषाओं की ओर बढ़ने को प्रेरित करता है।
Evidence & guidelines
भेद्यता वर्गों को MITRE के CWE में सूचीबद्ध किया गया है और CVSS गंभीरता स्कोर के साथ CVEs के रूप में व्यक्तिगत रूप से ट्रैक किया जाता है। प्रमुख विक्रेताओं (Microsoft, Google) के अध्ययनों से पता चलता है कि लगभग 70% गंभीर कमजोरियाँ मेमोरी अनसेफ्टी से उत्पन्न होती हैं, जो मेमोरी-सेफ भाषाओं की ओर मार्गदर्शन और आधुनिक प्लेटफार्मों में डिफ़ॉल्ट रूप से शमन उपायों (ASLR, CFI) की तैनाती को प्रेरित करती हैं।
History
शोषण 1988 के मॉरिस वर्म के बफर ओवरफ्लो के साथ सार्वजनिक ध्यान में आया और एलेफ वन के 1996 के 'स्मैशिंग द स्टैक फॉर फन एंड प्रॉफिट' द्वारा व्यवस्थित किया गया। प्रत्येक रक्षा ने एक प्रतिक्रिया को उकसाया: DEP ने रिटर्न-इनटू-लिबसी और शाचम की रिटर्न-ओरिएंटेड प्रोग्रामिंग (2007) को जन्म दिया; ASLR ने लीक-आधारित बाईपास को जन्म दिया। 2013 के 'एटर्नल वॉर इन मेमोरी' सर्वेक्षण ने चल रही हथियारों की दौड़ को रेखांकित किया, जो नए शमन उपायों और मेमोरी-सेफ भाषाओं को अपनाने दोनों को प्रेरित करता रहता है।
Key figures
- Elias Levy (Aleph One)
- Hovav Shacham
- Dawn Song
- Ross Anderson
- Halvar Flake
Related topics
Seminal works
- aleph1996
- szekeres2013
- anderson2020
Frequently asked questions
- ज़ीरो-डे भेद्यता क्या है?
- ज़ीरो-डे एक भेद्यता है जो सॉफ्टवेयर के रक्षकों (और अनपैच) को उस समय अज्ञात होती है जब इसका शोषण किया जाता है, जिससे उन्हें तैयारी के लिए शून्य दिन मिलते हैं। ऐसी खामियाँ हमलावरों के लिए विशेष रूप से मूल्यवान होती हैं क्योंकि अभी तक कोई फिक्स या हस्ताक्षर मौजूद नहीं है।
- मेमोरी-सेफ भाषाओं को एक समाधान के रूप में क्यों बढ़ावा दिया जाता है?
- मेमोरी-सेफ भाषाएँ (जैसे रस्ट) बग्स के पूरे वर्गों — बफर ओवरफ्लो, यूज़-आफ्टर-फ्री — को संकलन या रन टाइम पर रोकती हैं, जिससे गंभीर कमजोरियों का सबसे आम स्रोत समाप्त हो जाता है बजाय इसके कि प्रत्येक को शोषण करना कठिन बनाया जाए।