ما هو ال Buffer Overflow

Vulnerabilities
ال Buffer Overflow واحدة من أكثر ثغرات الأمنية شهرة وما زالت شائعة لحد كبير. ويعود ذلك الي لغات البرمجة المستخدمة في التطبيقات
Zayed Yasser
May 29, 2023, 6:15 p.m.
zeyad
ما هو ال Buffer Overflow

ما هو Buffer Overflow؟

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

يتركز الخطأ البرمجي على المخازن او (Buffers) والتي هي أقسام متتابعة من الذاكرة التي تحتفظ بالبيانات مؤقتًا أثناء نقلها الي مكان اخر في الجهاز.  يعرف أيضًا باسم buffer overrun، ويحدث buffer overflow عندما يتجاوز حجم البيانات في الbuffer السعة التخزينية له. يتدفق تلك البيانات الزائدة إلى مواقع الذاكرة المجاورة وتفسد أو تغير البيانات في تلك المواقع. أو بمعني اخر تحدث عند كتابة او ادخال قيم علي الذاكرة ال ل Buffe دون تعين حد معين للادخال أوعند عدم التأكد ان البيانات المدخلة من المستخدم لا تتعدي حد معين. و هذا الي اعادة كتابة بعض من القيم المدخلة في اماكن كان مخزن بها بالفعل بياتات سابقة علي الذاكرة وعند استخدام هذا بشكل معين يؤدي الي امكانية تفيذ بعض الاوامر الضارة علي الجهاز.

ما هو هجوم Buffer Overflow؟

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

غالبًا ما ينطوي هجوم buffer overflow على استغلال في بعض لغات البرمجة من خلال تجاوز حد الاقصي  Buffer التي توجد عليها. وغالبًا ما يتسبب هذا النوع من الهجمات بالتلاعب بالذاكرة والافتراضات الخاطئة حول تركيب أو حجم البيانات.

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

الخسائر الناتجة عن هجمة ال Buffer Overflow  ؟

هناك العديد من الخسائر التي تحدث من تنفيذ هجمة ال BOF  :

  1. أقل هذه الخسائر ضررا هو اتلاف البرنامج  المصاب و توقف الخدمة المقدمة من خلاله (System crashes & Service down )
  2. فقدان السيطرة علي النظام التشغيل بالكليه : لانه قد يستخدم المخترق جهازك المصاب في تنفيذ عمليات بصلحياتك وقد يصل الي اجهزه من خوادم و غيره متصله معك علي نفس الشبكة.
  3. فقدان و تسريب جميع البيانات و الملفات و المعلومات الشخصية المحفوظة علي جهازك.

أنواع هجمات  Buffer Overflow  

هناك عدة انواع من ال Buffer Overflow Attacks  و أشهرها

  1. Stack-based Buffer Overflow  : هذا هو أشهرهم ويحدث عندما يقوم المخترق بحقن الاكواد الخبيثة في ال Buffer
  2. Heap-based Buffer Overflow: وهو أصعب في تنفيزه من ال Stack-based attack
  3. Format string attack  

كيف تتجنب الـ Buffer Overflow   ؟

لتجنب buffer overflow، يمكن للمطورين تصميم البرمجيات بحيث تتحقق من أن حجم البيانات المدخلة في buffer لا يتجاوز الحد الأقصى المسموح به للbuffer. ويمكن أيضًا استخدام تقنيات الحماية مثل تحديد المساحة الحدية للbuffer والتحقق من صحة البيانات قبل إدخالها في الbuffer وعدم الاعتماد على المدخلات الخارجية بدون التحقق من صحتها ومنع تحميل البرنامج الضار على الخادم أو جهاز الكمبيوتر بشكل عام. ويمكن أيضاً استخدام أدوات الفحص الضمني للبرمجيات (Static Analysis) والفحص الديناميكي (Dynamic Analysis) للكشف عن ثغرات الbuffer overflow وإصلاحها. وبالإضافة إلى ذلك، يمكن استخدام تقنيات الحماية المتقدمة مثل عزل النظام (Sandboxing) وتقنيات التحقق من أصالة المدخلات (Input validation) وتحديد الامتيازات (Privilege separation) للحد من خطر buffer overflow والحفاظ على الأمان البرمجي.

ويمكن لمطورين البرامج تجنب Buffer Overflow  من خلال استخدام بعض معاير الأمان حين كتابة كودهم البرمجي, عن طريق استخدام لغات برمجة تضمين Built-in protection Methods Or Functions  و من خلال اجراء اختبارات علي البرامج بشكل دوري من أجل كشف الاخطاء و تعديلها.

واحدة من اشهر الطرق لتجنب Buffer Overflow  هو عدم استخدام مكتبات برمجية لا تدعم (Bounds-checked) و التي من ضمنها  gets, scanf, and strcpy وغيرها

ويمكن ايضا استخدام طريقة اخري حديثة تسمي runtime protection   و التي يتم استخدامها في أنظمة التشغيل الحديثة و هذا يتضمن حمايات مثل :

  1. Address space layout randomization (ASLR) : يجب ان تعلم انه لكي تقوم بعمل  Buffer Overflow  يجب ان تعلم اين عنوان الذي يتم فيه تنفيذ الكود و هذه الطريقة تعمل علي استخدام مكان عشوائي تنقيذ الكود و ذلك في كل مرة يتم فيها عمل Run  لل Code   وبهذا لا يستطيع المخترق تنفيذ اكواد خبيثة.
  2. Data execution prevention  : هذه الطريقة تمنع المخترق من run code in non-executable region  وهذا يتم من خلال تقسيم ال ذاكرة الي executable  و non-executable (مناطق تنفيذ للكود و مناطق لا تسمح بتنفيذ الكود)

الخاتمة

وفي النهايه عزيزى القارئ نرجوا دائما أن يكون جهازك أمن ضد هجمة ال Buffer Overflow و غيرها من الثغرات الأمنية و تكون مقالتنا قد زادت عندكم من المعلومات عن Buffer Overflow و كيفه عمله وانواعه وطرق تجنبه وأن تكون في امان من الهجامات سيبرانية, الي لقاء في مقالة أخري.

References


Buffer Overflow run code in non-executable region Data execution prevention What is Bof ASLR