Jeffrey Cross
Jeffrey Cross

हीप आधारित बफर अतिप्रवाह: कैसे iPhone और iPod टच हैक किया जा सकता है

IPhone और iPod टच डेवलपर फ़ोरम में हाल ही में स्कूटलबैट है कि कोड में एक बफर ओवरफ़्लो बग है जो सफारी (libtiff) में TIFF छवियों को लोड करने के लिए उपयोग किया जाता है। लेटडाउन यह है कि उपकरणों पर स्टैक निष्पादन योग्य नहीं है, कई लोगों को लगता है कि यह एक मृत अंत है।

ढेर, हालांकि, _is_ निष्पादन योग्य, और एक ढेर आधारित बफर अतिप्रवाह, जो कि लेफ्टिफ़ बग का शोषण करता है, आइपॉड टच और 1.1.1 अपग्रेड किए गए iPhone के लिए उपयोग करने योग्य होने का तरीका हो सकता है। अनइनीटेट के लिए, बफर बफर तब होता है जब क्या होता है उपयोगकर्ता द्वारा दिया गया डेटा उस संग्रहण स्थान से अधिक है जिसे उसे रखने के लिए आवंटित किया गया था। जब ऐसा होता है, तो अतिरिक्त डेटा प्रोग्राम की मेमोरी के समीपवर्ती क्षेत्रों को अधिलेखित कर देता है, जिसका नाम है "स्टैक।" स्टैक वह जगह है जहाँ प्रोग्राम वेरिएबल डेटा को स्टोर करता है और पॉइंटर जानकारी को लौटाता है, जिसे प्रोग्राम के लिए यह जानना आवश्यक होता है कि कहाँ से कब लौटना है। इसके कार्यों का निष्पादन समाप्त हो गया है।

एक अनजाने बफ़र ओवरफ़्लो के कारण कोई प्रोग्राम क्रैश हो सकता है, या कोई अवांछित गड़बड़ हो सकती है। यदि आपने कभी भी अपने सिस्टम में सुरक्षा अद्यतन लागू किया है, हालाँकि, आपने शायद इस बात का उल्लेख किया है कि एक विशेष बफर अतिप्रवाह पाया गया था जैसे कि "विशिष्ट परिस्थितियों में, बफर अतिप्रवाह का शोषण निष्पादन या मनमाना कोड या सिस्टम को जन्म दे सकता है। समझौता करें। ”मैंने इसे बनाया, लेकिन स्टॉक की चेतावनी आमतौर पर कुछ ऐसी ही होती है।

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

उपकरणों में एक तंत्र होता है जो स्टैक में कोड के निष्पादन को रोकता है। इससे भी बदतर, रिटर्न पॉइंटर एक रजिस्टर में संग्रहीत किया जाता है और स्टैक पर नहीं।

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

ढेर-आधारित अतिप्रवाह के साथ, वांछित निष्पादन योग्य कोड पेलोड हीप में स्थित है। अर्थात। यह रनटाइम आवंटित स्मृति में है, सफारी द्वारा भरी गई बड़ी TIFF छवि के भाग के रूप में कहें। बफर अतिप्रवाह शोषण अनिवार्य रूप से एक ही काम करता है, लेकिन स्टैक में एक पते के साथ स्टैक पॉइंटर को अधिलेखित करने के बजाय, आप इसे एक पॉइंटर के साथ ढेर पर लिखते हैं, प्रोग्राम के निष्पादन को पेलोड पर वापस निर्देशित करते हैं।

एक मिनट प्रतीक्षा करें ... स्टैक के बारे में क्या रिटर्न पॉइंटर के लिए उपयोग नहीं किया जा रहा है? यह बड़ी जटिलता है। क्योंकि रिटर्न पॉइंटर को लिंक रजिस्टर में स्टोर किया जाता है, यह स्टैक में रिटर्न पॉइंटर को ओवरराइट करने जैसा सरल नहीं है। इसके बजाय, आपको एक सहेजे गए लिंक रजिस्टर मान पर ठोकर खानी होगी या हो सकता है कि स्टैक में कोई फ़ंक्शन पॉइंटर हो और उसे ढेर में टिफ पेलोड डेटा के स्थान के साथ अधिलेखित कर दिया जाए। ओह।

हालाँकि, 1.0.2 iPhone सॉफ़्टवेयर को डिबग किया जा सकता है, और हम जानते हैं कि लिबर्टीफ़ के इंटर्नल क्या हैं, इसलिए शायद यह पूरी तरह से असंभव नहीं है। यह मेरे सिर पर है, लेकिन वहाँ बहुत सारे प्रोग्रामर हैं।

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

अधिक पढ़ने: iPhone देव विकी पर बफर अतिप्रवाह चर्चा - iPod टच देव विकी पर लिंक TIFF शोषण चर्चा - ढेर Overflows पर लिंक w00w00: कई ढेर आधारित अतिप्रवाह दृष्टिकोण पर महान तकनीकी लेख - लिंक बफर अतिप्रवाह - विकिपीडिया लिंक

शेयर

एक टिप्पणी छोड़