انترنت

ما هي ثغرة الاستخدام بعد التحرير (UAF)؟

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




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

ما هي ثغرة الاستخدام بعد التحرير (UAF)؟

مخطط تخصيص الذاكرة


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

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


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

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

أقرأ ايضا  أفضل 9 مواقع للصحة العقلية لكبار السن


كيف يتم استغلال Use-After-Free (UAF)؟

عرض توضيحي لـ UAF


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

#include <stdio.h>
#include <stdlib.h>int main() {
    int *MUO = malloc(sizeof(int));
    *MUO = 69420;
    printf("Value: %d\n", *MUO);
    free(MUO);
    printf("Value?: %d\n", *MUO);
    return 0;
}

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

كيفية التخفيف من الاستخدام بعد التحرير؟

يحدث UAF بسبب أخطاء في برمجة أحد التطبيقات. هناك بعض الاحتياطات التي يمكنك اتخاذها لتجنب نقاط الضعف Use-After-Free في برنامجك.


فيما يلي بعض أفضل الممارسات التي يمكنك اتباعها لتقليل نقاط ضعف تلف الذاكرة في برنامجك:

  • استخدام لغات برمجة آمنة للذاكرة مثل Rust مع آليات مدمجة لمنع ثغرات تلف الذاكرة البدائية مثل UAF وBuffer Overflows وما إلى ذلك. إذا كنت تستخدم لغات برمجة مثل C/C++، فمن المرجح أن تتسبب في حدوث أخطاء في الذاكرة في الكود الخاص بك. ولنفس السبب، حتى أنظمة التشغيل مثل Windows وLinux تنتقل ببطء إلى Rust. يجب عليك أيضًا التفكير في التعرف على Rust إذا كنت تقوم بإنشاء برامج منخفضة المستوى.
  • بالإضافة إلى استخدام لغة آمنة للذاكرة، يوصى باتباع أفضل الممارسات مثل تعيين مؤشر إلى قيمة NULL بعد تحريرها لتجنب أي إدخال لثغرة Use-After-Free.
  • يمكنك أيضًا تنفيذ تقنيات مثل One Time Allocation (OTA) التي تمنع المهاجمين من الوصول إلى كائنات الذاكرة المحررة وسياسة دورة حياة الكائن الصارمة، والتي تساعد في تتبع كل كائن ذاكرة يتم تخصيصه وإلغاء تخصيصه. ضع في اعتبارك أن هذه التنفيذات قد تزيد من تكلفة الذاكرة والأداء.
أقرأ ايضا  هل يمكن أن يؤدي تحديث BIOS إلى جعل جهاز الكمبيوتر الخاص بك أكثر أمانًا؟


أمثلة واقعية على ثغرة الاستخدام بعد التحرير (UAF)

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

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



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

يساعد تخصيص الذاكرة الفعّال في جعل البرامج آمنة

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

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

إذا لم تكن قد فعلت ذلك بالفعل، فيمكنك البدء بفهم كيفية إدارة الذاكرة على Linux، نظام تشغيل الخادم الأكثر استخدامًا في العالم.


اكتشاف المزيد من موقع قلم ورقم

اشترك للحصول على أحدث التدوينات في بريدك الإلكتروني.

اترك رد

زر الذهاب إلى الأعلى

اكتشاف المزيد من موقع قلم ورقم

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading

أنت تستخدم إضافة Adblock

لكي تتمكن من قراءة المقال يرجى ازالة مانع الاعلانات لديك واعمل تحديث للصفحة.