Stack buffer overflow
மென்பொருளில், ஒரு நிரல் திட்டமிடப்பட்ட தரவு கட்டமைப்பிற்கு வெளியே நிரலின் அழைப்பு அடுக்கில் ஒரு நினைவக முகவரிக்கு எழுதும்போது ஒரு அடுக்கு இடையக ஓவர்ஃப்ளோ அல்லது அடுக்கு இடையக ஓவர் ரன் ஏற்படுகிறது, இது பொதுவாக ஒரு நிலையான நீள இடையகமாகும். ஒரு நிரல் அந்த இடையகத்திற்கு உண்மையில் ஒதுக்கப்பட்டதை விட அடுக்கில் அமைந்துள்ள இடையகத்திற்கு அதிக தரவை எழுதும்போது அடுக்கு இடையக மேற்பரப்பு பிழைகள் ஏற்படுகின்றன. இது கிட்டத்தட்ட எப்போதும் அடுக்கில் அருகிலுள்ள தரவின் ஊழலுக்கு வழிவகுக்கிறது, மேலும் தவறுதலாக ஓவர்ஃப்ளோ தூண்டப்பட்ட சந்தர்ப்பங்களில், பெரும்பாலும் நிரல் செயலிழக்கவோ அல்லது தவறாக செயல்படவோ செய்யும். ஸ்டேக் பஃபர் ஓவர்ஃப்ளோ என்பது பஃபர் ஓவர்ஃப்ளோ (அல்லது பஃபர் ஓவர் ரன்) என்று அழைக்கப்படும் பொதுவான நிரலாக்க செயலிழப்பின் ஒரு வகையாகும். அடுக்கில் ஒரு இடையகத்தை அதிகமாக நிரப்புவது குவியலில் ஒரு இடையகத்தை அதிகமாக நிரப்புவதை விட நிரல் செயல்பாட்டை தடம் புரளச் செய்ய அதிக வாய்ப்புள்ளது, ஏனெனில் அடுக்கில் அனைத்து செயலில் உள்ள செயல்பாட்டு அழைப்புகளுக்கான திரும்பும் முகவரிகள் உள்ளன. ஸ்டேக் ஸ்மாஷிங் என்று அழைக்கப்படும் தாக்குதலின் ஒரு பகுதியாக ஒரு ஸ்டேக் பஃபர் ஓவர்ஃப்ளோ வேண்டுமென்றே ஏற்படலாம். பாதிக்கப்பட்ட நிரல் சிறப்பு சலுகைகளுடன் இயங்கினால், அல்லது நம்பத்தகாத நெட்வொர்க் புரவலன்களிடமிருந்து தரவை ஏற்றுக்கொண்டால் (எ. கா. ஒரு வெப் சர்வர்) பின்னர் பிழை ஒரு சாத்தியமான பாதுகாப்பு பாதிப்பாகும். அடுக்கு இடையகத்தில் நம்பத்தகாத பயனரிடமிருந்து வழங்கப்பட்ட தரவு நிரம்பியிருந்தால், அந்த பயனர் இயங்கும் நிரலில் செயல்படுத்தக்கூடிய குறியீட்டை செலுத்தும் வகையில் அடுக்கை சிதைக்கலாம் மற்றும் செயல்முறையின் கட்டுப்பாட்டை எடுத்துக் கொள்ளலாம். தாக்குபவர்களுக்கு கணினியில் அங்கீகரிக்கப்படாத அணுகலைப் பெறுவதற்கான பழமையான மற்றும் மிகவும் நம்பகமான முறைகளில் இதுவும் ஒன்றாகும். அடுக்கு அடிப்படையிலான இடையக மேல்புறத்தை சுரண்டுவதற்கான நியதி முறை, செயல்பாட்டு திரும்பும் முகவரியை தாக்குபவர்-கட்டுப்படுத்தப்பட்ட தரவுகளுக்கு (பொதுவாக அடுக்கிலேயே) ஒரு சுட்டியுடன் மேல் எழுதுவதாகும். இது பின்வரும் எடுத்துக்காட்டில் ஸ்ட்ரக்பி () உடன் விளக்கப்பட்டுள்ளதுஃ #include <string.h> வெற்றிடமான ஃபூ (சரம் * பட்டை) {சரம் சி [12]; ஸ்ட்ரக்பி (சி, பட்டை);// வரம்புகள் இல்லை சரிபார்ப்பு} இன்ட் மைன் (இன்ட் ஆர்க்சி, சரம் * * ஆர்க்வி) {ஃபூ (ஆர்க்வி [1]); ரிட்டர்ன் 0;} இந்த குறியீடு கட்டளை வரியிலிருந்து ஒரு வாதத்தை எடுத்து உள்ளூர் அடுக்கு மாறி சி க்கு நகலெடுக்கிறது. இது 12 எழுத்துக்களை விட சிறிய கட்டளை-வரி வாதங்களுக்கு நன்றாக வேலை செய்கிறது (கீழே உள்ள படம் பி இல் காணலாம்). 11 எழுத்துகளுக்கு மேல் நீளமுள்ள எந்தவொரு வாதமும் அடுக்கின் ஊழலுக்கு வழிவகுக்கும். (பாதுகாப்பான எழுத்துக்களின் அதிகபட்ச எண்ணிக்கை இங்கே இடையகத்தின் அளவை விட ஒன்று குறைவாக உள்ளது, ஏனெனில் சி நிரலாக்க மொழியில், சரங்கள் பூஜ்ய பைட் எழுத்துக்களால் நிறுத்தப்படுகின்றன. பன்னிரண்டு எழுத்து உள்ளீட்டை சேமிக்க பதின்மூன்று பைட்டுகள் தேவைப்படுகின்றன, உள்ளீட்டைத் தொடர்ந்து சென்டினல் பூஜ்ஜிய பைட் தேவைப்படுகிறது. பூஜ்ஜிய பைட் பின்னர் இடையகத்தின் முடிவுக்கு அப்பால் ஒரு பைட் இருக்கும் நினைவக இருப்பிடத்தை மேல் எழுதுகிறது.) நிரல் பல்வேறு உள்ளீடுகளுடன் ஃபூ () இல் அடுக்கி வைக்கப்படுகிறதுஃ மேலே உள்ள சி படத்தில், கட்டளை வரியில் ஃபூ () இல் 11 பைட்டுகளை விட பெரிய ஒரு வாதம் வழங்கப்படும்போது, உள்ளூர் அடுக்கு தரவு, சேமிக்கப்பட்ட பிரேம் சுட்டிக்காட்டி மற்றும் மிக முக்கியமாக, திரும்பும் முகவரி ஆகியவற்றை மேல் எழுதுகிறது. ஃபூ () திரும்பும்போது அது அடுக்கில் இருந்து திரும்பும் முகவரியைத் திறந்து அந்த முகவரிக்கு (அதாவது. அந்த முகவரியிலிருந்து அறிவுறுத்தல்களைச் செயல்படுத்தத் தொடங்குகிறது). இவ்வாறு, தாக்குபவர் திரும்பும் முகவரியை ஸ்டேக் பஃபர் சார் சி [12] க்கு ஒரு சுட்டியுடன் மாற்றியமைத்துள்ளார், இது இப்போது தாக்குபவர் வழங்கிய தரவைக் கொண்டுள்ளது. ஒரு உண்மையான அடுக்கு இடையக மேற்பரப்பு சுரண்டலில் "A" இன் சரம் அதற்கு பதிலாக தளத்திற்கும் விரும்பிய செயல்பாட்டிற்கும் பொருத்தமான ஷெல்ல்கோடாக இருக்கும். இந்த திட்டத்திற்கு சிறப்பு சலுகைகள் இருந்தால் (எ. கா. சூப்பர் பயனராக இயக்க அமைக்கப்பட்ட எஸ்யூஐடி பிட்), பின்னர் தாக்குபவர் இந்த பாதிப்பைப் பயன்படுத்தி பாதிக்கப்பட்ட இயந்திரத்தில் சூப்பர் பயனர் சலுகைகளைப் பெறலாம். தாக்குபவர் சில பிழைகளை சுரண்ட உள் மாறி மதிப்புகளையும் மாற்றியமைக்கலாம். இந்த உதாரணத்துடன்ஃ #include <string.h> #include <stdio.h> வெற்றிடமான ஃபூ (சரம் பட்டை) {மிதக்க எனது மிதவை = 10.5;// சேர் = 0x0023FF4C சரம் c [28];// சேர் = 0x0023FF30// 10.500000 பிரிண்ட்எஃப் ("எனது மிதவை மதிப்பு =% f", எனது மிதவை);/* ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ !!!! XXXX "); memcpy மை _ ஃப்ளோட் மதிப்பில் 0x1010C042 (லிட்டில் எண்டியன்) ஐ வைக்கும். ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ !!!! | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | சில இயந்திர கட்டமைப்புகள் அழைப்பு அடுக்கின் உயர்மட்ட திரும்பும் முகவரியை ஒரு பதிவேட்டில் சேமிக்கிறது. இதன் பொருள் என்னவென்றால், அழைப்பு அடுக்கை பின்னர் அவிழ்க்கும் வரை எந்தவொரு மேல் எழுதப்பட்ட திரும்பும் முகவரியும் பயன்படுத்தப்படாது. சுரண்டல் நுட்பங்களின் தேர்வை பாதிக்கக்கூடிய ஒரு இயந்திர-குறிப்பிட்ட விவரத்தின் மற்றொரு எடுத்துக்காட்டு என்னவென்றால், பெரும்பாலான RISC-பாணி இயந்திர கட்டமைப்புகள் நினைவகத்திற்கு சீரமைக்கப்படாத அணுகலை அனுமதிக்காது. இயந்திர ஆப்கோட்களுக்கான ஒரு நிலையான நீளத்துடன் இணைந்து, இந்த இயந்திர வரம்பு அடுக்குக்கு குதிக்கும் நுட்பத்தை செயல்படுத்துவது கிட்டத்தட்ட சாத்தியமற்றது (ஒரு விதிவிலக்கு நிரல் உண்மையில் அடுக்குக்கு வெளிப்படையாக குதிக்க சாத்தியமற்ற குறியீட்டைக் கொண்டிருக்கும்போது). அடுக்கு இடையக நிரம்பி வழிவது என்ற தலைப்பில், அடிக்கடி விவாதிக்கப்படும் ஆனால் அரிதாகக் காணப்படும் கட்டமைப்பு என்பது அடுக்கு எதிர் திசையில் வளரும் ஒன்றாகும். கட்டமைப்பில் இந்த மாற்றம் ஸ்டேக் பஃபர் ஓவர்ஃப்ளோ சிக்கலுக்கான தீர்வாக அடிக்கடி பரிந்துரைக்கப்படுகிறது, ஏனெனில் ஒரே ஸ்டேக் சட்டகத்திற்குள் ஏற்படும் ஸ்டேக் பஃப்பரின் எந்த ஓவர்ஃப்ளோவும் ரிட்டர்ன் சுட்டிக்காட்டியை மேல் எழுத முடியாது. இருப்பினும், முந்தைய அடுக்கு சட்டகத்திலிருந்து ஒரு இடையகத்தில் ஏற்படும் எந்தவொரு ஓவர்ஃப்ளோவும் இன்னும் ஒரு ரிட்டர்ன் சுட்டிக்காட்டியை மேல் எழுதும் மற்றும் பிழையின் தீங்கிழைக்கும் சுரண்டலை அனுமதிக்கும். எடுத்துக்காட்டாக, மேலே உள்ள எடுத்துக்காட்டில், ஃபூவிற்கான ரிட்டர்ன் சுட்டிக்காட்டி மேல் எழுதப்படாது, ஏனெனில் மேல்நிலை உண்மையில் மெம்சிபிக்கான அடுக்கு சட்டகத்திற்குள் நிகழ்கிறது. இருப்பினும், மெம்சிபிக்கு அழைப்பின் போது நிரம்பி வழியும் இடையகமானது முந்தைய அடுக்கு சட்டகத்தில் இருப்பதால், மெம்சிபிக்கான ரிட்டர்ன் சுட்டிக்காட்டி இடையகத்தை விட எண்ணிக்கையில் அதிக நினைவக முகவரியைக் கொண்டிருக்கும். இதன் பொருள் என்னவென்றால், ஃபூவிற்கான ரிட்டர்ன் சுட்டிக்காட்டி மேல் எழுதப்படுவதற்குப் பதிலாக, மெம்சிபிக்கான ரிட்டர்ன் சுட்டிக்காட்டி மேல் எழுதப்படும். அதிகபட்சமாக, இதன் பொருள் என்னவென்றால், அடுக்கை எதிர் திசையில் வளர்ப்பது அடுக்கு இடையக நிரம்பி வழிவது எவ்வாறு சுரண்டக்கூடியது என்பதற்கான சில விவரங்களை மாற்றும், ஆனால் இது சுரண்டக்கூடிய பிழைகளின் எண்ணிக்கையை கணிசமாகக் குறைக்காது. பாதுகாப்புத் திட்டங்கள் பல ஆண்டுகளாக, தீங்கிழைக்கும் அடுக்கு இடையக மேற்பரப்பு சுரண்டலைத் தடுக்க பல கட்டுப்பாட்டு-ஓட்ட ஒருமைப்பாட்டுத் திட்டங்கள் உருவாக்கப்பட்டுள்ளன. இவை பொதுவாக மூன்று பிரிவுகளாக வகைப்படுத்தப்படலாம்ஃ ஒரு அடுக்கு இடையக ஓவர்ஃப்ளோ ஏற்பட்டுள்ளதா என்பதைக் கண்டறிந்து, இதனால் அறிவுறுத்தல் சுட்டிக்காட்டி தீங்கிழைக்கும் குறியீட்டிற்கு திருப்பிவிடப்படுவதைத் தடுக்கிறது. ஸ்டேக் பஃபர் ஓவர்ஃப்ளோவை நேரடியாகக் கண்டறியாமல் அடுக்கிலிருந்து தீங்கிழைக்கும் குறியீட்டை செயல்படுத்துவதைத் தடுக்கவும். இயக்கக்கூடிய குறியீட்டைக் கண்டுபிடிப்பது நம்பமுடியாததாக மாறும் வகையில் நினைவக இடத்தை சீரற்றதாக்குங்கள். ஸ்டேக் கேனரிகள், நிலக்கரிச் சுரங்கத்தில் உள்ள கேனரிக்கு ஒத்ததாக பெயரிடப்பட்ட ஸ்டேக் கேனரிகள், தீங்கிழைக்கும் குறியீட்டை செயல்படுத்துவதற்கு முன்பு ஒரு அடுக்கு இடையக நிரம்பி வழிவதைக் கண்டறியப் பயன்படுத்தப்படுகின்றன. இந்த முறை ஒரு சிறிய முழு எண்ணை வைப்பதன் மூலம் செயல்படுகிறது, இதன் மதிப்பு நிரல் தொடக்கத்தில் தோராயமாக தேர்ந்தெடுக்கப்படுகிறது, ஸ்டாக் ரிட்டர்ன் சுட்டிக்காட்டிக்கு சற்று முன்பு நினைவகத்தில். பெரும்பாலான இடையக நிரம்பி வழியும் நினைவகம் குறைந்த நினைவக முகவரிகளிலிருந்து உயர்ந்த நினைவக முகவரிகளுக்கு மேல் எழுதப்படுகிறது, எனவே ரிட்டர்ன் சுட்டிக்காட்டியை மேல் எழுதுவதற்கு (இதனால் செயல்முறையின் கட்டுப்பாட்டை எடுக்க) கேனரி மதிப்பும் மேல் எழுதப்பட வேண்டும். அடுக்கில் உள்ள ரிட்டர்ன் சுட்டிக்காட்டியைப் பயன்படுத்துவதற்கு முன்பு இது மாறவில்லை என்பதை உறுதிப்படுத்த இந்த மதிப்பு சரிபார்க்கப்படுகிறது. இந்த நுட்பம் ஒரு அடுக்கு இடையக ஓவர்ஃப்ளோவைப் பயன்படுத்துவதில் உள்ள சிரமத்தை பெரிதும் அதிகரிக்கும், ஏனெனில் இது அடுக்கில் உள்ள பிற முக்கியமான மாறிகளை சிதைப்பது போன்ற சில பாரம்பரியமற்ற வழிகளால் அறிவுறுத்தல் சுட்டிக்காட்டியின் கட்டுப்பாட்டைப் பெற தாக்குபவரை கட்டாயப்படுத்துகிறது. ஸ்டேக் பஃபர் ஓவர்ஃப்ளோ சுரண்டலைத் தடுப்பதற்கான மற்றொரு அணுகுமுறை, ஸ்டேக் மெமரி பகுதியில் ஒரு மெமரி கொள்கையை அமல்படுத்துவதாகும், இது ஸ்டேக்கிலிருந்து செயல்படுத்த அனுமதிப்பதில்லை (டபிள்யூ எக்ஸ், "எக்ஸ்ஓஆர் எக்ஸிக்யூட் எழுதவும்"). இதன் பொருள் என்னவென்றால், அடுக்கிலிருந்து ஷெல்ல்கோடை இயக்குவதற்கு ஒரு தாக்குபவர் நினைவகத்திலிருந்து செயல்படுத்தும் பாதுகாப்பை முடக்க ஒரு வழியைக் கண்டுபிடிக்க வேண்டும், அல்லது அவர்களின் ஷெல்ல்கோட் பேலோடை பாதுகாக்கப்படாத நினைவகப் பகுதியில் வைக்க ஒரு வழியைக் கண்டுபிடிக்க வேண்டும். பெரும்பாலான டெஸ்க்டாப் செயலிகளில் செயல்படுத்தப்படாத கொடிக்கான வன்பொருள் ஆதரவு கிடைப்பதால் இந்த முறை இப்போது மிகவும் பிரபலமாகி வருகிறது. இந்த முறை நியதி அடுக்கை உடைக்கும் சுரண்டலைத் தடுக்கும் அதே வேளையில், அடுக்கு நிரம்பி வழிவதை வேறு வழிகளில் பயன்படுத்தலாம். முதலாவதாக, குவியல் போன்ற பாதுகாப்பற்ற நினைவகப் பகுதிகளில் ஷெல்கோடை சேமிப்பதற்கான வழிகளைக் கண்டுபிடிப்பது பொதுவானது, எனவே சுரண்டல் வழியில் மிகக் குறைந்த மாற்றமே தேவைப்படுகிறது. மற்றொரு தாக்குதல் ஷெல்கோட் உருவாக்கத்திற்கான libc முறைக்கு திரும்புவது என்று அழைக்கப்படுகிறது. இந்த தாக்குதலில் தீங்கிழைக்கும் பேலோட் அடுக்கை ஷெல்ல்கோடுடன் ஏற்றாது, ஆனால் சரியான அழைப்பு அடுக்குடன் ஏற்றும், இதனால் செயல்திறன் நிலையான நூலக அழைப்புகளின் சங்கிலிக்கு திசைதிருப்பப்படுகிறது, பொதுவாக நினைவக செயல்படுத்தல் பாதுகாப்புகளை முடக்குவதன் விளைவாகவும் ஷெல்ல்கோடை இயல்பாக இயக்க அனுமதிக்கிறது. இது செயல்படுகிறது, ஏனெனில் செயலாக்கம் உண்மையில் அடுக்குக்கு திசையன்கள் அல்ல. ரிட்டர்ன்-டு-லிப்ஸின் ஒரு மாறுபாடு ரிட்டர்ன்-ஓரியண்டட் புரோகிராமிங் (ஆர்ஓபி) ஆகும், இது தொடர்ச்சியான ரிட்டர்ன் முகவரிகளை அமைக்கிறது, அவை ஒவ்வொன்றும் தற்போதுள்ள நிரல் குறியீடு அல்லது கணினி நூலகங்களுக்குள் செர்ரி-தேர்ந்தெடுக்கப்பட்ட இயந்திர அறிவுறுத்தல்களின் ஒரு சிறிய வரிசையை செயல்படுத்துகின்றன, இது ஒரு திருப்பத்துடன் முடிவடைகிறது. இந்த கேஜெட்டுகள் என்று அழைக்கப்படுபவை ஒவ்வொன்றும் திரும்புவதற்கு முன்பு சில எளிய பதிவு கையாளுதல் அல்லது ஒத்த செயல்பாட்டைச் செய்கின்றன, மேலும் அவற்றை ஒன்றாக இணைப்பது தாக்குபவரின் முடிவுகளை அடைகிறது. திரும்பும் அறிவுறுத்தலைப் போலவே செயல்படும் அறிவுறுத்தல்கள் அல்லது அறிவுறுத்தல்களின் குழுக்களைப் பயன்படுத்துவதன் மூலம் "திரும்பாத" திரும்ப சார்ந்த நிரலாக்கத்தைப் பயன்படுத்துவது கூட சாத்தியமாகும். தரவுகளிலிருந்து குறியீட்டைப் பிரிப்பதற்குப் பதிலாக, மற்றொரு தணிப்பு நுட்பம் செயல்படுத்தும் நிரலின் நினைவக இடத்திற்கு சீரற்ற தன்மையை அறிமுகப்படுத்துவதாகும். பயன்படுத்தக்கூடிய செயல்படுத்தக்கூடிய குறியீடு எங்கு உள்ளது என்பதை தாக்குபவர் தீர்மானிக்க வேண்டும் என்பதால், செயல்படுத்தக்கூடிய பேலோட் வழங்கப்படுகிறது (செயல்படுத்தக்கூடிய அடுக்குடன்) அல்லது ரெட் 2 லிப்ஸி அல்லது ரிட்டர்ன்-ஓரியண்டட் புரோகிராமிங் (ஆர்ஓபி) போன்ற குறியீடு மறுபயன்பாட்டைப் பயன்படுத்தி ஒன்று கட்டப்பட்டுள்ளது. நினைவக அமைப்பை சீரற்றதாக மாற்றுவது, ஒரு கருத்தாக, தாக்குபவர் எந்த குறியீடும் எங்கே என்பதை அறிந்து கொள்வதைத் தடுக்கும். இருப்பினும், செயல்படுத்தல்கள் பொதுவாக எல்லாவற்றையும் சீரற்றதாக்காது; வழக்கமாக செயல்படுத்தக்கூடியவை ஒரு நிலையான முகவரியில் ஏற்றப்படுகின்றன, எனவே ஏ. எஸ். எல். ஆர் (முகவரி இடம் தளவமைப்பு சீரற்றமயமாக்கல்) ஒரு தீர்க்கமுடியாத அடுக்குடன் இணைக்கப்படும்போது கூட தாக்குபவர் இந்த நிலையான நினைவகப் பகுதியைப் பயன்படுத்தலாம். எனவே, அனைத்து நிரல்களும் பிஐஇ (நிலை-சுயாதீன செயலாக்கங்கள்) உடன் தொகுக்கப்பட வேண்டும், இதனால் நினைவகத்தின் இந்த பகுதி கூட சீரற்றதாக இருக்கும். சீரற்றமயமாக்கலின் என்ட்ரோபி செயல்படுத்துவதிலிருந்து செயல்படுத்துவதற்கு வேறுபட்டது மற்றும் சீரற்றதாக இருக்கும் நினைவக இடத்தை முரட்டுத்தனமாக கட்டாயப்படுத்துவதில் போதுமான குறைந்த என்ட்ரோபி ஒரு சிக்கலாக இருக்கலாம். புறவழி எதிர் நடவடிக்கைகள் முந்தைய தணிப்புகள் சுரண்டலின் படிகளை கடினமாக்குகின்றன. ஆனால் சில பாதிப்புகள் இருந்தால் அல்லது சில நிபந்தனைகள் பூர்த்தி செய்யப்பட்டால் ஒரு அடுக்கு இடையக ஓவர்ஃப்ளோவைப் பயன்படுத்துவது இன்னும் சாத்தியமாகும். ஸ்டேக் கேனரி பைபாஸ் ஃபார்மேட் ஸ்ட்ரிங் வல்நரபிலிட்டி சுரண்டலுடன் தகவல் கசிவு ஒரு தாக்குபவர் பாதிக்கப்படக்கூடிய நிரலில் நினைவக இருப்பிடங்களை வெளிப்படுத்துவதற்காக ஃபார்மேட் ஸ்ட்ரிங் வல்நரபிலிட்டியை சுரண்ட முடியும். தரவு செயல்படுத்தல் தடுப்பு அடுக்குக்கான எந்தவொரு செயல்படுத்தும் அணுகலையும் தடைசெய்ய இயக்கப்பட்டிருக்கும் போது, தாக்குபவர் இன்னும் ஒரு குறியீடு பிரிவில் (லினக்ஸில்) அல்லது நிரலின் மற்ற அனைத்து செயல்படுத்தக்கூடிய பிரிவிலும் உள்ள தரவை சுட்டிக்காட்டுவதற்கு மேல் எழுதப்பட்ட திரும்பும் முகவரியைப் (அறிவுறுத்தல் சுட்டிக்காட்டி) பயன்படுத்தலாம். ஏற்கனவே உள்ள குறியீட்டை மீண்டும் பயன்படுத்துவதே குறிக்கோள். ரோப் சங்கிலி என்பது நிரலின் ரிட்டர்ன் அறிவுறுத்தலுக்கு (x86 இல் மீண்டும்) சற்று முன்பு ரிட்டர்ன் சுட்டிக்காட்டியை மேல் எழுதுவதாகும். புதிய ரிட்டர்ன் சுட்டிக்காட்டி மற்றும் ரிட்டர்ன் அறிவுறுத்தலுக்கு இடையிலான அறிவுறுத்தல்கள் செயல்படுத்தப்படும், மேலும் ரிட்டர்ன் அறிவுறுத்தல் சுரண்டுபவரால் கட்டுப்படுத்தப்படும் பேலோடுக்கு திரும்பும். ஜோப் சங்கிலி ஜம்ப் ஓரியண்டட் புரோகிராமிங் என்பது ரெட் அறிவுறுத்தலுக்கு பதிலாக குறியீட்டை மீண்டும் பயன்படுத்த ஜம்ப் அறிவுறுத்தல்களைப் பயன்படுத்தும் ஒரு நுட்பமாகும். 64-பிட் அமைப்புகளில் ஏ. எஸ். எல். ஆர் உணர்தலின் ஒரு வரம்பு என்னவென்றால், இது நினைவக வெளிப்பாடு மற்றும் தகவல் கசிவு தாக்குதல்களால் பாதிக்கப்படக்கூடியது. தகவல் கசிவு தாக்குதலைப் பயன்படுத்தி ஒரு செயல்பாட்டு முகவரியை வெளிப்படுத்துவதன் மூலம் தாக்குபவர் ROP ஐத் தொடங்கலாம். பின்வரும் பகுதி ஏ. எஸ். எல். ஆர் பாதுகாப்பை உடைப்பதற்கான இதேபோன்ற தற்போதைய மூலோபாயத்தை விவரிக்கிறது. குறிப்பிடத்தக்க எடுத்துக்காட்டுகள் 1988 ஆம் ஆண்டில் மோரிஸ் புழு யுனிக்ஸ் விரல் சேவையகத்தில் ஒரு அடுக்கு இடையக நிரம்பி வழிவதன் மூலம் ஓரளவு பரவியது. 2003 ஆம் ஆண்டில் ஸ்லாமர் புழு மைக்ரோசாப்டின் எஸ். க்யூ. எல் சேவையகத்தில் ஒரு அடுக்கு இடையக நிரம்பி வழிவதன் மூலம் பரவியது. 2003 ஆம் ஆண்டில் பிளாஸ்டர் புழு மைக்ரோசாப்ட் டி. சி. ஓ. எம் சேவையில் ஒரு அடுக்கு இடையக மேற்பரப்பைப் பயன்படுத்துவதன் மூலம் பரவியது. 2004 ஆம் ஆண்டில் இன்டர்நெட் செக்யூரிட்டி சிஸ்டம்ஸ் பிளாக்ஐசிஇ டெஸ்க்டாப் ஏஜென்ட்டில் ஒரு அடுக்கு இடையக ஓவர்ஃப்ளோவைப் பயன்படுத்துவதன் மூலம் விட்டி புழு பரவியது. மாற்றியமைக்கப்படாத அமைப்பில் தன்னிச்சையான குறியீட்டை இயக்க அனுமதிக்கும் வைக்கு இரண்டு எடுத்துக்காட்டுகள் உள்ளன. தி லெஜண்ட் ஆஃப் செல்டாஃ ட்விலைட் பிரின்சஸ் என்ற திரைப்படத்தில் முக்கிய கதாபாத்திரத்தின் குதிரைக்கு ஒரு நீண்ட பெயரைக் கொடுப்பதை உள்ளடக்கிய "ட்விலைட் ஹேக்" மற்றும் சூப்பர் ஸ்மாஷ் பிரதர்ஸ் பிராலுக்கான "ஸ்மாஷ் ஸ்டேக்" ஆகியவை விளையாட்டின் நிலை எடிட்டரில் சிறப்பாக தயாரிக்கப்பட்ட கோப்பை ஏற்ற ஒரு எஸ்டி கார்டைப் பயன்படுத்துவதை உள்ளடக்கியது. எந்தவொரு தன்னிச்சையான குறியீட்டையும் செயல்படுத்த இரண்டையும் பயன்படுத்தலாம் என்றாலும், பிந்தையது பெரும்பாலும் பயன்படுத்தப்படும் மாற்றங்களுடன் பிராலையே மீண்டும் ஏற்ற பயன்படுத்தப்படுகிறது. ExecShield ஹீப் ஓவர்ஃப்ளோ முழு எண் ஓவர்ஃப்ளோ NX பிட்-நினைவக பாதுகாப்பு-மேம்படுத்தப்பட்ட லினக்ஸ் ஸ்டாக் ஓவர்ஃப்ளோ பகுதிகளுக்கு செயல்படுத்தப்படாத பிட்-அடுக்கு தானாகவே நிரம்பி வழியும் போது சேமிப்பு மீறல் குறிப்புகள் மென்பொருள் பிழைகள் மென்பொருள் முரண்பாடுகள் கணினி பாதுகாப்பு கணினி பிழைகளை சுரண்டுகிறது