11.4.2. فساد الذاكرة
يحدث تلف في الذاكرة عندما يتم تعديل موقع داخل مساحة الذاكرة لعملية ما نتيجة لأخطاء البرمجة. عادةً ما تؤدي أخطاء تلف الذاكرة إلى سلوك برنامج غير محتمل ، ولكن في كثير من الحالات ، تسمح هذه الأخطاء بمعالجة ذاكرة العملية بطريقة يمكن التحكم في تدفق تنفيذ البرنامج ، مما يسمح بالنشاط الذي يحدده المهاجم.
يشار إلى هذه الهجمات عادةً على أنها تجاوزات المخزن المؤقت ، على الرغم من أن هذا المصطلح مفرط في التبسيط. تختلف الأنواع الأكثر شيوعًا لفساد الذاكرة اختلافًا كبيرًا عن بعضها البعض ولها تكتيكاتها وتقنياتها الخاصة المطلوبة للاستغلال الناجح.
• Stack Buffer Overflow: عندما يكتب برنامج بيانات إلى مخزن مؤقت على المكدس أكثر من المساحة المتاحة له ، يمكن أن تتلف الذاكرة المجاورة ، مما يتسبب في كثير من الأحيان في تعطل البرنامج.
• تلف الكومة: يتم تخصيص ذاكرة الكومة في وقت التشغيل وعادة ما تحتوي على بيانات من البرنامج قيد التشغيل. تحدث فساد الكومة عن طريق معالجة البيانات للكتابة فوق القائمة المرتبطة بمؤشرات ذاكرة الكومة.
• تجاوز عدد صحيح: تحدث هذه الفائض عندما يحاول أحد التطبيقات إنشاء قيمة رقمية لا يمكن احتواؤها في مساحة التخزين المخصصة له.
• سلسلة التنسيق: عندما يقبل برنامج إدخال المستخدم ويقوم بتنسيقه دون التحقق منه ، يمكن الكشف عن مواقع الذاكرة أو الكتابة فوقها ، اعتمادًا على الرموز المميزة للتنسيق المستخدمة.