Stack buffer overflow
سافٹ ویئر میں، اسٹیک بفر اوور فلو یا اسٹیک بفر اوور رن اس وقت ہوتا ہے جب کوئی پروگرام مطلوبہ ڈیٹا ڈھانچے سے باہر پروگرام کے کال اسٹیک پر میموری ایڈریس پر لکھتا ہے، جو عام طور پر ایک مقررہ لمبائی کا بفر ہوتا ہے۔ اسٹیک بفر اوور فلو کیڑے اس وقت پیدا ہوتے ہیں جب کوئی پروگرام اسٹیک پر واقع بفر کو اس سے زیادہ ڈیٹا لکھتا ہے جو دراصل اس بفر کے لیے مختص کیا جاتا ہے۔ اس کے نتیجے میں تقریبا ہمیشہ اسٹیک پر ملحقہ ڈیٹا کی بدعنوانی ہوتی ہے، اور ایسی صورتوں میں جہاں غلطی سے اوور فلو شروع ہو گیا تھا، اکثر پروگرام کو کریش یا غلط طریقے سے چلانے کا سبب بنتا ہے۔ اسٹیک بفر اوور فلو زیادہ عام پروگرامنگ کی خرابی کی ایک قسم ہے جسے بفر اوور فلو (یا بفر اوور رن) کہا جاتا ہے۔ اسٹیک پر بفر کو زیادہ بھرنا ڈھیر پر بفر کو زیادہ بھرنے کے مقابلے میں پروگرام کے نفاذ کو پٹری سے اتارنے کا زیادہ امکان ہے کیونکہ اسٹیک میں تمام فعال فنکشن کالز کے واپسی کے پتے ہوتے ہیں۔ اسٹیک بفر اوور فلو جان بوجھ کر حملے کے حصے کے طور پر ہو سکتا ہے جسے اسٹیک سمیشنگ کہا جاتا ہے۔ اگر متاثرہ پروگرام خصوصی مراعات کے ساتھ چل رہا ہے، یا غیر معتبر نیٹ ورک میزبانوں سے ڈیٹا قبول کرتا ہے (جیسے۔ ایک ویب سرور) پھر بگ ایک ممکنہ حفاظتی کمزوری ہے۔ اگر اسٹیک بفر کسی ناقابل اعتماد صارف کی طرف سے فراہم کردہ ڈیٹا سے بھرا ہوا ہے تو وہ صارف اسٹیک کو اس طرح سے خراب کر سکتا ہے کہ وہ چل رہے پروگرام میں قابل عمل کوڈ داخل کرے اور عمل کا کنٹرول سنبھال لے۔ یہ حملہ آوروں کے لیے کمپیوٹر تک غیر مجاز رسائی حاصل کرنے کے قدیم ترین اور زیادہ قابل اعتماد طریقوں میں سے ایک ہے۔ اسٹیک پر مبنی بفر اوور فلو کا استحصال کرنے کا کینونکل طریقہ حملہ آور کے زیر کنٹرول ڈیٹا (عام طور پر اسٹیک پر ہی) کے لیے پوائنٹر کے ساتھ فنکشن ریٹرن ایڈریس کو اوور رائٹ کرنا ہے۔ اس کی مثال اسٹرکیپی () کے ساتھ درج ذیل مثال میں دی گئی ہے: #include <string.h> وایڈ فو (چار * بار) {چار سی [12] ؛ اسٹرکیپی (سی، بار) ؛// کوئی حد نہیں چیکنگ} انٹ مین (انٹیٹ آرگسی، چار * * آرگوی) {فو (آرگوی [1]) ؛ ریٹرن 0 ؛} یہ کوڈ کمانڈ لائن سے ایک دلیل لیتا ہے اور اسے مقامی اسٹیک متغیر سی میں کاپی کرتا ہے۔ یہ 12 حروف سے چھوٹے کمانڈ لائن دلائل کے لیے ٹھیک کام کرتا ہے (جیسا کہ نیچے شکل بی میں دیکھا جا سکتا ہے)۔ 11 حروف سے زیادہ لمبی کوئی بھی دلیل اسٹیک کی بدعنوانی کا باعث بنے گی۔ (محفوظ حروف کی زیادہ سے زیادہ تعداد یہاں بفر کے سائز سے ایک کم ہے کیونکہ سی پروگرامنگ زبان میں، سٹرنگز کو نیل بائٹ کردار سے ختم کیا جاتا ہے۔ اس طرح بارہ حروف والے ان پٹ کو ذخیرہ کرنے کے لیے تیرہ بائٹس کی ضرورت ہوتی ہے، ان پٹ کے بعد سینٹینل زیرو بائٹ ہوتا ہے۔ صفر بائٹ پھر ایک میموری لوکیشن کو اوور رائٹ کرتا ہے جو بفر کے آخر سے باہر ایک بائٹ ہے۔) پروگرام مختلف ان پٹ کے ساتھ فو () میں اسٹیک کرتا ہے: اوپر کی شکل سی میں، جب کمانڈ لائن فو () پر 11 بائٹس سے بڑی دلیل فراہم کی جاتی ہے تو مقامی اسٹیک ڈیٹا، محفوظ شدہ فریم پوائنٹر، اور سب سے اہم بات، ریٹرن ایڈریس کو اوور رائٹ کر دیتا ہے۔ جب فو () واپس کرتا ہے تو یہ اسٹیک سے واپسی کا پتہ پاپ کرتا ہے اور اس پتے پر چھلانگ لگاتا ہے (یعنی۔ اس پتے سے ہدایات پر عمل درآمد شروع ہوتا ہے)۔ اس طرح، حملہ آور نے واپسی کے پتے کو اسٹیک بفر چار سی [12] کے پوائنٹر کے ساتھ اوور رائٹ کر دیا ہے، جس میں اب حملہ آور سے فراہم کردہ ڈیٹا موجود ہے۔ ایک حقیقی اسٹیک بفر اوور فلو میں "اے" کی سٹرنگ کا استحصال پلیٹ فارم اور مطلوبہ فنکشن کے لیے موزوں شیل کوڈ ہوگا۔ اگر اس پروگرام کو خصوصی مراعات حاصل تھیں (مثال کے طور پر۔ ایس یو آئی ڈی بٹ کو سپر یوزر کے طور پر چلانے کے لیے سیٹ کیا گیا ہے)، پھر حملہ آور اس کمزوری کو متاثرہ مشین پر سپر یوزر کے مراعات حاصل کرنے کے لیے استعمال کر سکتا ہے۔ حملہ آور کچھ کیڑوں کا استحصال کرنے کے لیے اندرونی متغیر اقدار میں بھی ترمیم کر سکتا ہے۔ اس مثال کے ساتھ: #include <string.h> #include <stdio.h> وایڈ فو (چار * بار) {فلوٹ مائی فلوٹ = 10.5 ؛// ایڈڈر = 0x0023FF4C چار سی [28] ؛// ایڈڈر = 0x0023FF30// پرنٹ کرے گا 10.500000 پرنٹ ایف ("میری فلوٹ ویلیو =% f"، مائی فلوٹ) ؛/* ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ !!!! XXXX ") ؛ میمپی مائی _ فلوٹ ویلیو میں 0x1010C042 (لٹل اینڈین) ڈالے گا۔ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ !!!! \x10\x10\xc0\x42 ") ؛ ریٹرن 0 ؛} پلیٹ فارم سے متعلق اختلافات متعدد پلیٹ فارمز میں کال اسٹیک کے نفاذ میں باریک فرق ہوتے ہیں جو اسٹیک بفر اوور فلو استحصال کے کام کرنے کے طریقے کو متاثر کر سکتے ہیں۔ کچھ مشین آرکیٹیکچر کال اسٹیک کے ٹاپ لیول ریٹرن ایڈریس کو رجسٹر میں محفوظ کرتے ہیں۔ اس کا مطلب یہ ہے کہ کال اسٹیک کو بعد میں کھولنے تک کوئی بھی اوور رائٹ ریٹرن ایڈریس استعمال نہیں کیا جائے گا۔ مشین سے متعلق مخصوص تفصیل کی ایک اور مثال جو استحصال کی تکنیکوں کے انتخاب کو متاثر کر سکتی ہے وہ حقیقت یہ ہے کہ زیادہ تر آر آئی ایس سی طرز کی مشین آرکیٹیکچرز میموری تک غیر منسلک رسائی کی اجازت نہیں دیں گے۔ مشین اوپی کوڈز کے لیے ایک مقررہ لمبائی کے ساتھ مل کر، یہ مشین کی حد اسٹیک پر کودنے کی تکنیک کو نافذ کرنا تقریبا ناممکن بنا سکتی ہے (ایک رعایت یہ ہے کہ جب پروگرام میں دراصل اسٹیک رجسٹر پر واضح طور پر کودنے کے لیے غیر متوقع کوڈ موجود ہو)۔ اسٹیک بفر اوور فلو کے موضوع کے اندر، ایک اکثر زیر بحث لیکن شاذ و نادر ہی نظر آنے والا فن تعمیر وہ ہے جس میں اسٹیک مخالف سمت میں بڑھتا ہے۔ فن تعمیر میں اس تبدیلی کو اکثر اسٹیک بفر اوور فلو کے مسئلے کے حل کے طور پر تجویز کیا جاتا ہے کیونکہ اسٹیک بفر کا کوئی بھی اوور فلو جو ایک ہی اسٹیک فریم کے اندر ہوتا ہے، ریٹرن پوائنٹر کو اوور رائٹ نہیں کر سکتا۔ تاہم، پچھلے اسٹیک فریم سے بفر میں ہونے والا کوئی بھی اوور فلو پھر بھی ریٹرن پوائنٹر کو اوور رائٹ کرے گا اور بگ کے بدنیتی پر مبنی استحصال کی اجازت دے گا۔ مثال کے طور پر، اوپر کی مثال میں، فو کے لیے ریٹرن پوائنٹر کو اوور رائٹ نہیں کیا جائے گا کیونکہ اوور فلو دراصل میمکیپی کے لیے اسٹیک فریم کے اندر ہوتا ہے۔ تاہم، چونکہ میمکیپی پر کال کے دوران اوور فلو ہونے والا بفر پچھلے اسٹیک فریم میں رہتا ہے، اس لیے میمکیپی کے لیے ریٹرن پوائنٹر میں بفر کے مقابلے میں عددی طور پر زیادہ میموری ایڈریس ہوگا۔ اس کا مطلب یہ ہے کہ فو کے لیے ریٹرن پوائنٹر کو اوور رائٹ کرنے کے بجائے، میمکیپی کے لیے ریٹرن پوائنٹر کو اوور رائٹ کر دیا جائے گا۔ زیادہ سے زیادہ، اس کا مطلب یہ ہے کہ اسٹیک کو مخالف سمت میں بڑھانا اس بات کی کچھ تفصیلات کو تبدیل کر دے گا کہ اسٹیک بفر اوور فلو کس طرح استحصال کے قابل ہیں، لیکن اس سے استحصال کے قابل کیڑوں کی تعداد میں نمایاں کمی نہیں ہوگی۔ تحفظ کی اسکیمیں برسوں کے دوران، بدنیتی پر مبنی اسٹیک بفر اوور فلو استحصال کو روکنے کے لیے متعدد کنٹرول فلو انٹیگریٹی اسکیمیں تیار کی گئی ہیں۔ ان کو عام طور پر تین زمروں میں درجہ بند کیا جا سکتا ہے: پتہ لگائیں کہ اسٹیک بفر اوور فلو ہوا ہے اور اس طرح انسٹرکشن پوائنٹر کو بدنیتی پر مبنی کوڈ کی طرف موڑنے سے روکا جا سکتا ہے۔ اسٹیک بفر اوور فلو کا براہ راست پتہ لگائے بغیر اسٹیک سے بدنیتی پر مبنی کوڈ کے نفاذ کو روکیں۔ میموری کی جگہ کو اس طرح بے ترتیب بنائیں کہ قابل عمل کوڈ تلاش کرنا ناقابل اعتماد ہو جائے۔ اسٹیک کینریاں، جن کا نام کوئلے کی کان میں کینری سے مشابہت کے لیے رکھا گیا ہے، بدنیتی پر مبنی کوڈ کے نفاذ سے پہلے اسٹیک بفر اوور فلو کا پتہ لگانے کے لیے استعمال ہوتی ہیں۔ یہ طریقہ ایک چھوٹا عدد رکھ کر کام کرتا ہے، جس کی قیمت اسٹیک ریٹرن پوائنٹر سے ٹھیک پہلے میموری میں پروگرام کے آغاز پر تصادفی طور پر منتخب کی جاتی ہے۔ زیادہ تر بفر اوور فلوز میموری کو نچلے سے اعلی میموری پتے پر اوور رائٹ کرتے ہیں، لہذا ریٹرن پوائنٹر کو اوور رائٹ کرنے کے لیے (اور اس طرح عمل پر قابو پانے کے لیے) کینری ویلیو کو بھی اوور رائٹ کرنا ضروری ہے۔ اس قدر کو اس بات کو یقینی بنانے کے لیے چیک کیا جاتا ہے کہ معمول کے اسٹیک پر ریٹرن پوائنٹر کا استعمال کرنے سے پہلے یہ تبدیل نہیں ہوا ہے۔ یہ تکنیک اسٹیک بفر اوور فلو کا استحصال کرنے میں دشواری کو بہت بڑھا سکتی ہے کیونکہ یہ حملہ آور کو کچھ غیر روایتی ذرائع سے انسٹرکشن پوائنٹر کا کنٹرول حاصل کرنے پر مجبور کرتی ہے جیسے کہ اسٹیک پر موجود دیگر اہم متغیرات کو خراب کرنا۔ اسٹیک بفر اوور فلو کے استحصال کو روکنے کا ایک اور طریقہ یہ ہے کہ اسٹیک میموری کے علاقے پر میموری پالیسی نافذ کی جائے جو اسٹیک سے عمل درآمد کی اجازت نہیں دیتی ہے (ڈبلیو ایکس، "رائٹ ایکس او آر ایگزیکٹیو")۔ اس کا مطلب یہ ہے کہ اسٹیک سے شیل کوڈ کو چلانے کے لیے حملہ آور کو یا تو میموری سے ایگزیکیوشن پروٹیکشن کو غیر فعال کرنے کا کوئی طریقہ تلاش کرنا چاہیے، یا اپنے شیل کوڈ پے لوڈ کو میموری کے غیر محفوظ علاقے میں رکھنے کا کوئی طریقہ تلاش کرنا چاہیے۔ یہ طریقہ اب زیادہ مقبول ہوتا جا رہا ہے کہ زیادہ تر ڈیسک ٹاپ پروسیسرز میں نو ایکزیکٹ فلیگ کے لیے ہارڈ ویئر سپورٹ دستیاب ہے۔ اگرچہ یہ طریقہ کینونکل اسٹیک سمیشنگ استحصال کو روکتا ہے، لیکن اسٹیک اوور فلو کو دوسرے طریقوں سے استعمال کیا جا سکتا ہے۔ سب سے پہلے، شیل کوڈ کو غیر محفوظ میموری علاقوں جیسے ڈھیر میں ذخیرہ کرنے کے طریقے تلاش کرنا عام بات ہے، اور اس لیے استحصال کے طریقے میں بہت کم تبدیلی کی ضرورت ہے۔ ایک اور حملہ شیل کوڈ بنانے کے لیے نام نہاد واپسی libc طریقہ ہے۔ اس حملے میں بدنیتی پر مبنی پے لوڈ شیل کوڈ کے ساتھ نہیں بلکہ ایک مناسب کال اسٹیک کے ساتھ اسٹیک کو لوڈ کرے گا تاکہ عمل کو معیاری لائبریری کالز کے سلسلے میں رکھا جائے، عام طور پر میموری ایگزیکٹیو پروٹیکشن کو غیر فعال کرنے اور شیل کوڈ کو معمول کے مطابق چلانے کی اجازت دینے کے اثر کے ساتھ۔ یہ کام کرتا ہے کیونکہ عمل اصل میں کبھی بھی اسٹیک کے ویکٹر نہیں ہوتا ہے۔ ریٹرن ٹو لبک کا ایک متغیر ریٹرن پر مبنی پروگرامنگ (آر او پی) ہے، جو ریٹرن پتے کا ایک سلسلہ ترتیب دیتا ہے، جن میں سے ہر ایک موجودہ پروگرام کوڈ یا سسٹم لائبریریوں کے اندر چیری سے منتخب کردہ مشین ہدایات کی ایک چھوٹی سی ترتیب کو انجام دیتا ہے، ترتیب جو واپسی کے ساتھ ختم ہوتی ہے۔ یہ نام نہاد گیجٹ ہر ایک واپسی سے پہلے کچھ سادہ رجسٹر ہیرا پھیری یا اسی طرح کے عمل کو انجام دیتے ہیں، اور ان کو ایک ساتھ جوڑنے سے حملہ آور کے مقاصد حاصل ہوتے ہیں۔ یہاں تک کہ ہدایات یا ہدایات کے گروپوں کا استحصال کرکے "ریٹرن لیس" ریٹرن پر مبنی پروگرامنگ کا استعمال کرنا بھی ممکن ہے جو واپسی کی ہدایت کی طرح برتاؤ کرتے ہیں۔ بے ترتیب کاری کوڈ کو ڈیٹا سے الگ کرنے کے بجائے، تخفیف کی ایک اور تکنیک عمل درآمد کرنے والے پروگرام کی میموری کی جگہ میں بے ترتیب کاری متعارف کرانا ہے۔ چونکہ حملہ آور کو اس بات کا تعین کرنے کی ضرورت ہوتی ہے کہ قابل عمل کوڈ کہاں رہتا ہے جسے استعمال کیا جا سکتا ہے، یا تو قابل عمل پے لوڈ فراہم کیا جاتا ہے (قابل عمل اسٹیک کے ساتھ) یا کوڈ کے دوبارہ استعمال کا استعمال کرتے ہوئے بنایا جاتا ہے جیسے کہ ریٹ 2 لبسی یا ریٹرن پر مبنی پروگرامنگ (آر او پی)۔ میموری لے آؤٹ کو بے ترتیب بنانا، ایک تصور کے طور پر، حملہ آور کو یہ جاننے سے روکے گا کہ کوئی کوڈ کہاں ہے۔ تاہم، نفاذ عام طور پر ہر چیز کو بے ترتیب نہیں کرے گا۔ عام طور پر قابل عمل خود ایک مقررہ پتے پر لوڈ کیا جاتا ہے اور اس لیے یہاں تک کہ جب اے ایس ایل آر (ایڈریس اسپیس لے آؤٹ بے ترتیب) کو ایک غیر متزلزل اسٹیک کے ساتھ جوڑا جاتا ہے تو حملہ آور میموری کے اس مقررہ علاقے کو استعمال کر سکتا ہے۔ لہذا، تمام پروگراموں کو پی آئی ای (پوزیشن-انڈیپینڈنٹ ایگزیکٹوبلز) کے ساتھ مرتب کیا جانا چاہیے تاکہ میموری کا یہ علاقہ بھی بے ترتیب ہو۔ بے ترتیب کاری کی اینٹروپی عمل درآمد سے لے کر عمل درآمد تک مختلف ہے اور کافی کم اینٹروپی اپنے آپ میں میموری کی جگہ کو مجبور کرنے کے معاملے میں ایک مسئلہ بن سکتی ہے جو بے ترتیب ہے۔ بائی پاس جوابی اقدامات پچھلی تخفیف استحصال کے اقدامات کو مشکل بناتی ہیں۔ لیکن اسٹیک بفر اوور فلو کا فائدہ اٹھانا اب بھی ممکن ہے اگر کچھ کمزوریاں موجود ہوں یا کچھ شرائط پوری ہوں۔ اسٹیک کینری بائی پاس فارمیٹ سٹرنگ کی کمزوری کے استحصال کے ساتھ معلومات کا رساو ایک حملہ آور کمزور پروگرام میں میموری کے مقامات کو ظاہر کرنے کے لیے فارمیٹ سٹرنگ کی کمزوری کا استحصال کرنے کے قابل ہوتا ہے۔ غیر قابل عمل اسٹیک بائی پاس جب ڈیٹا پر عمل درآمد کی روک تھام کو اسٹیک تک کسی بھی قابل عمل رسائی سے منع کرنے کے لیے فعال کیا جاتا ہے، تب بھی حملہ آور کوڈ کے حصے (لینکس پر) یا پروگرام کے ہر دوسرے قابل عمل حصے میں ڈیٹا کی طرف اشارہ کرنے کے لیے اوور رائٹ ریٹرن ایڈریس (انسٹرکشن پوائنٹر) کا استعمال کر سکتا ہے۔ مقصد موجودہ کوڈ کو دوبارہ استعمال کرنا ہے۔ روپ چین پروگرام کی واپسی کی ہدایت (x86 میں ریٹ) سے تھوڑا پہلے ریٹرن پوائنٹر کو اوور رائٹ کرنے پر مشتمل ہوتا ہے۔ نئے ریٹرن پوائنٹر اور ریٹرن انسٹرکشن کے درمیان ہدایات پر عمل کیا جائے گا اور ریٹرن انسٹرکشن استحصال کرنے والے کے زیر کنٹرول پے لوڈ پر واپس آ جائے گی۔ جوپ چین جمپ اورینٹڈ پروگرامنگ ایک ایسی تکنیک ہے جو ریٹ انسٹرکشن کے بجائے کوڈ کو دوبارہ استعمال کرنے کے لیے جمپ انسٹرکشنز کا استعمال کرتی ہے۔ بے ترتیب بائی پاس 64 بٹ سسٹمز پر اے ایس ایل آر کی وصولی کی ایک حد یہ ہے کہ یہ میموری کے انکشاف اور معلومات کے رساو کے حملوں کا شکار ہے۔ حملہ آور معلومات کے رساو کے حملے کا استعمال کرتے ہوئے ایک واحد فنکشن ایڈریس ظاہر کر کے آر او پی لانچ کر سکتا ہے۔ مندرجہ ذیل سیکشن میں اے ایس ایل آر تحفظ کو توڑنے کے لیے اسی طرح کی موجودہ حکمت عملی بیان کی گئی ہے۔ قابل ذکر مثالیں 1988 میں مورس کیڑا یونیکس فنگر سرور میں اسٹیک بفر اوور فلو کا استحصال کرکے جزوی طور پر پھیل گیا۔ 2003 میں سلیممر کیڑا مائیکروسافٹ کے ایس کیو ایل سرور میں اسٹیک بفر اوور فلو کا استحصال کرکے پھیل گیا۔ 2003 میں بلاسٹر کیڑا مائیکروسافٹ ڈی سی او ایم سروس میں اسٹیک بفر اوور فلو کا استحصال کرکے پھیل گیا۔ 2004 میں وٹی کیڑا انٹرنیٹ سیکیورٹی سسٹمز بلیک آئی سی ای ڈیسک ٹاپ ایجنٹ میں اسٹیک بفر اوور فلو کا استحصال کرکے پھیل گیا۔ وائی کی چند مثالیں ہیں جو صوابدیدی کوڈ کو غیر ترمیم شدہ نظام پر چلانے کی اجازت دیتی ہیں۔ "ٹوائلائٹ ہیک" جس میں دی لیجنڈ آف زیلڈا: ٹوائلائٹ پرنسس میں مرکزی کردار کے گھوڑے کو ایک لمبا نام دینا شامل ہے، اور سپر سمیش بروس بریول کے لیے "سمیش اسٹیک" جس میں کھیل کی سطح کے ایڈیٹر میں خصوصی طور پر تیار کردہ فائل کو لوڈ کرنے کے لیے ایس ڈی کارڈ کا استعمال شامل ہے۔ اگرچہ دونوں کو کسی بھی صوابدیدی کوڈ کو انجام دینے کے لیے استعمال کیا جا سکتا ہے، لیکن مؤخر الذکر اکثر ترمیمات کے ساتھ خود کو دوبارہ لوڈ کرنے کے لیے استعمال ہوتا ہے۔ یہ بھی دیکھیں ExecShield Heap اوور فلو انٹیجر اوور فلو NX بٹ-میموری سیکیورٹی-بہتر لینکس اسٹیک اوور فلو کے علاقوں کے لیے کوئی ایگزیکٹیو بٹ-جب اسٹیک خود اسٹوریج کی خلاف ورزی کو اوور فلو کرتا ہے حوالہ جات سافٹ ویئر کیڑے سافٹ ویئر کی بے ضابطگیاں کمپیوٹر سیکیورٹی کمپیوٹر کی غلطیوں کا استحصال کرتی ہے