مقالات

الدليل الكامل حول ثغرة UAF وطريقة استغلالها

Use-After-Free (UAF) هي ثغرة أمنية بدائية لتلف الذاكرة والتي لا تزال تمثل تهديدًا خطيرًا لجميع أنواع البرامج، من أنظمة التشغيل إلى التطبيقات. يحدث هذا الخلل الأمني ​​الخطير عندما يحاول أحد مكونات التطبيق الوصول إلى البيانات الموجودة في عناوين الذاكرة التي تم تحريرها بالفعل، ومن هنا جاء الاسم “Use After Free”.

يمكن أن تحدث ثغرات UAF في أي نوع من التطبيقات، ولكنها أكثر شيوعًا في البرامج التي تعالج كميات كبيرة من البيانات، مثل أنظمة التشغيل وقواعد البيانات وتطبيقات الويب. كما يمكن أن تسبب ثغرات UAF العديد من المشاكل.

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

ما هي ثغرة Use-After-Free (UAF)؟

ما هي ثغرة Use-After-Free (UAF)؟

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

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

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

Use-After-Free (UAF)، كما يوحي الاسم، هو نوع من ثغرات فساد الذاكرة البدائية التي تحدث عند إعادة الوصول إلى كائن محرّر من الذاكرة، مما يتسبب في حدوث أعطال وتسرب للذاكرة أو تصعيد الامتياز (EOP).  دعونا نلقي نظرة على طريقة ظهور هذا الشرط في المقام الأول وكيف يمكن استغلاله.

شرح ماهية الهجمات الإلكترونية على الرعاية الصحية

كيف تعمل Use-After-Free؟

كيف تعمل Use-After-Free؟

Use-After-Free (UAF)، كما يوحي الاسم، هو ثغرة أمنية تحدث عندما يستمر أحد التطبيقات في الوصول إلى المناطق المحررة من الذاكرة. دعنا نلقي نظرة على مثال التعليمات البرمجية:

#include <stdio.h>
#include <stdlib.h>

int main() {
 int *techthingss = malloc(sizeof(int));
 *techthingss = 69420;
 printf(“Value: %d\n”, *techthingss);
 free(techthingss);
 printf(“Value?: %d\n”, *techthingss);
 return 0;
}

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

كيف يمكنني التخفيف من تأثير UAF؟

ينتج UAF عن خطأ في برمجة التطبيق. هناك بعض الاحتياطات التي يمكنك اتخاذها لتجنب ثغرات التطبيق.

فيما يلي بعض النصائح التي يمكنك تطبيقها للتخفيف من ثغرات تلف الذاكرة في التعليمات البرمجية الخاصة بك:

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

PTaaS .. شرح مفهوم (اختبار الاختراق كخدمة) وطريقة عمله

أمثلة على الثغرات الأمنية لـ (UAF)

أمثلة على الثغرات الأمنية لـ (UAF)

تم اكتشاف الثغرات الأمنية في Use-After-Free واستغلالها في مجموعة متنوعة من سيناريوهات العالم الحقيقي، من متصفحات الويب إلى نواة أندرويد إلى التطبيقات اليومية. هذا يدل على الحاجة إلى تدابير أمنية استباقية.

تشمل أمثلة UAF ما يلي:
  1. متصفحات الإنترنت: تُستخدم ثغرات UAF في متصفحات الويب لتنفيذ تعليمات برمجية عشوائية وتعريض خصوصية المستخدم للخطر وتنفيذ هجمات تنفيذ التعليمات البرمجية عن بُعد. مثال حديث هو CVE-2021-38008، الذي استغل ثغرة UAF في جوجل Chrome، مما سمح للمهاجم بتنفيذ تعليمات برمجية عشوائية عن بُعد على جهاز الضحية.
  2. أنظمة التشغيل: سمحت ثغرات UAF الموجودة في نواة ويندوز / لينكس / أندرويد للمهاجمين بالحصول على امتيازات عالية، وتجاوز آليات الأمان، والبقاء مرنين. تم العثور على عدد من الثغرات الأمنية UAF ولا تزال موجودة في نواة نظام التشغيل. في وقت كتابة هذه السطور، تم تحديد هذا على أنه CVE-2023-3269. هذه ثغرة UAF أخرى في نواة لينكس تتسبب في تصعيد الامتيازات العامة. CVE-2022-23270 هو مثال على ثغرة أمنية في UAF في نواة ويندوز.
  3. البرمجيات: تم استغلال ثغرات UAF في التطبيقات للتلاعب بسلوك UAF، مما أدى إلى الكشف عن المعلومات، وتنفيذ التعليمات البرمجية التعسفي، وتعطل التطبيق، وفي أسوأ الحالات، تصعيد الامتيازات. كانت التطبيقات المختلفة ولا تزال عرضة لهجمات UAF. تم تطوير هذه التطبيقات بشكل أساسي بلغات C / C ++ باستخدام تقنيات إدارة الذاكرة غير الفعالة وغير الآمنة.

لمزيد من المعلومات حول الثغرات الأمنية الفعلية Use-After-Free، قم بزيارة صفحة قائمة MITER CVE الرسمية وفرزها حسب الكلمة الأساسية Use-After-Free.

يساعد تخصيص الذاكرة الفعال على حماية تطبيقك

يمكن أن يقطع التخصيص الأمثل والمدروس للذاكرة شوطًا طويلاً في حماية تطبيقك من ثغرات الشائعة في تلف الذاكرة البدائية.

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

 

بوشريط صلاح الدين

مصمم ومبرمج وكاتب مقالات محترف

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى
error: Content is protected !!