ما هو هجوم تجاوز سعة المخزن المؤقت Buffer Overflow Attack

اقرأ في هذا المقال


ما هو هجوم تجاوز سعة المخزن المؤقت Buffer Overflow Attack

يستغل المهاجمون مشكلات تجاوز سعة المخزن المؤقت عن طريق الكتابة فوق ذاكرة أحد التطبيقات، حيث يؤدي ذلك إلى تغيير مسار تنفيذ البرنامج، مما يؤدي إلى حدوث استجابة تؤدي إلى إتلاف الملفات أو الكشف عن المعلومات الخاصة، على سبيل المثال، قد يقدم المهاجم رمزًا إضافيًا، ويرسل تعليمات جديدة كليا إلى التطبيق للقدرة على الوصول إلى أنظمة تكنولوجيا المعلومات.

حيث إذا كان المهاجمون يعرفون تخطيط الذاكرة لأحد البرامج بشكل محترف، فيمكنهم عن قصد تغذية المدخلات التي لا يستطيع المخزن المؤقت تخزينها، والكتابة فوق المناطق التي تحتوي على تعليمات برمجية قابلة للتنفيذ، واستبدالها برمز خاص بهم، على سبيل المثال، كما يمكن للمهاجم أن يكتب فوق مؤشر كائن يشير إلى منطقة أخرى في الذاكرة ويوجهه إلى حمولة استغلال، للسيطرة على البرنامج.

ما هو تجاوز سعة المخزن المؤقت 

تعرف المخازن المؤقتة على انها مناطق تخزين الذاكرة التي تحتفظ بالبيانات مؤقتًا أثناء نقلها من موقع إلى آخر، حيث يحدث تجاوز سعة المخزن المؤقت أو تجاوز المخزن المؤقت عندما يتجاوز حجم البيانات سعة تخزين ذاكرة التخزين المؤقت، نتيجة لذلك، يقوم البرنامج الذي يحاول كتابة البيانات إلى المخزن المؤقت بالكتابة فوق مواقع الذاكرة المجاورة، على سبيل المثال، قد يتم تصميم المخزن المؤقت لبيانات اعتماد تسجيل الدخول بحيث يتوقع مدخلات اسم المستخدم وكلمة المرور من 8 بايت، لذلك إذا كانت المعاملة تتضمن إدخالًا بمقدار 10 بايت أي 2 بايت أكثر من المتوقع، فقد يكتب البرنامج الفائض البيانات التي تتجاوز حدود المخزن المؤقت.

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

ما هي لغات البرمجة الأكثر عرضة لخطر هذا الهجوم

(C++،C) لغات برمجة عالية الاداء وتمتاز بالسرعة في انشاء البرامج، وهما معرضتان بدرجة كبيرة لهجمات تجاوز سعة المخزن المؤقت، حيث لا تحتويان على وسائل حماية مضمنة ضد الكتابة فوق البيانات الموجودة في ذاكرتهم أو الوصول إليها، حيث تستخدم أنظمة (Windows،Linux) كودًا مكتوبًا بلغة(C++،C) ، حيث تستخدم لغات مثل (PERL، Java، JavaScript)، آليات أمان مدمجة تقلل من احتمالية تجاوز سعة المخزن المؤقت.

تقريبًا جميع التطبيقات وخوادم الويب وبيئات تطبيقات الويب معرضة لتدفق المخزن المؤقت، البيئات المكتوبة بلغات مفسرة، مثل (Java و Python)، محصنة ضد الهجمات، باستثناء الفائض في مترجمها، حيث تحدث هجمات تجاوز سعة المخزن المؤقت عادةً بسبب أخطاء الترميز والأخطاء في تطوير التطبيق، ينتج عن هذا تجاوز سعة المخزن المؤقت نظرًا لأن التطبيق لا يخصص مخازن مؤقتة ذات حجم مناسب ويفشل في التحقق من مشكلات تجاوز السعة، كما تعد هذه المشكلات إشكالية بشكل خاص في لغة البرمجة (C++،C) لأنها لا تحتوي على حماية تجاوز سعة المخزن المؤقت المضمنة.

كما ان لغة البرمجة هذه ليست الوحيدة المعرضة لهجمات تجاوز سعة المخزن المؤقت، يعد برنامج تجاوز سعة المخزن المؤقت في  (C++،C) أو (Fortran) وهي لغة برمجة متعددة الاستعمالات مناسبة للحسابات الرقمية والحوسبة، عرضة للخطر بشكل خاص وأكثر احتمالاً لتمكين المهاجمين من اختراق النظام.

كيفية منع فيضان المخزن المؤقت

  • مساحة العنوان العشوائية (ASLR): يتحرك عشوائيًا حول مواقع مساحة العنوان لمناطق البيانات، عادة، تحتاج هجمات تجاوز سعة المخزن المؤقت إلى معرفة مكان الكود القابل للتنفيذ، كما أن توزيع مساحات العنوان بشكل عشوائي يجعل هذا الأمر مستحيلًا تقريبًا.
  • منع تنفيذ البيانات: يشير إلى مناطق معينة من الذاكرة على أنها غير قابلة للتنفيذ أو قابلة للتنفيذ، مما يوقف الهجوم من تشغيل التعليمات البرمجية في منطقة غير قابلة للتنفيذ.
  • الحماية من الكتابة فوق معالج الاستثناء المنظم (SEHOP): تساعد في منع التعليمات البرمجية الضارة من مهاجمة معالجة الاستثناءات الهيكلية (SEH) وهو نظام مضمن لإدارة استثناءات الأجهزة والبرامج، وبالتالي يمنع المهاجم من أن يكون قادرًا على الاستفادة من تقنية الاستغلال الفوقية، على المستوى الوظيفي، يتم تحقيق الكتابة الفوقية باستخدام تجاوز سعة المخزن المؤقت المستند إلى المكدس للكتابة فوق سجل تسجيل استثناء، مخزّن في مكدس مؤشر ترابط.

التدابير الأمنية في التعليمات البرمجية وحماية نظام التشغيل ليست كافية، عندما تكتشف إحدى المؤسسات ثغرة أمنية في تجاوز سعة المخزن المؤقت، يجب أن تتفاعل بسرعة لتصحيح البرنامج المتأثر والتأكد من أن مستخدمي البرنامج يمكنهم الوصول إلى التصحيح.

عواقب تجاوز سعة المخزن المؤقت

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

أنواع هجمات تجاوز سعة المخزن المؤقت

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

المصدر: Buffer Overflow AttackWhat Is Buffer Overflow?What is buffer overflow?


شارك المقالة: