
- بواسطة x32x01 ||


إيه هي ثغرة Race Condition؟
Race Condition هي ثغرة بتحصل لما عمليات متعددة (Processes أو Threads) بتتنافس على الوصول لنفس المورد (زي متغير أو ملف) في نفس الوقت، وده بيؤدي إلى نتايج غير متوقعة أو تعارض في البيانات. الثغرة دي بتحصل بسبب نقص في المزامنة (Synchronization) بين العمليات.ليه بتحصل؟
- النظام بيسمح بتنفيذ عمليات متعددة في وقت واحد (Multitasking) بدون تحكم كافي.
- عمليات القراءة والكتابة على مورد مشترك بتحصل بدون ترتيب (Sequential Execution).
- مثال: لو اتنين مستخدمين بيحاولوا يعدّلوا نفس القيمة في قاعدة بيانات في نفس اللحظة.
الآثار السلبية
- تعارض البيانات: زي تكرار عمليات أو فقدان تحديثات.
- تحطيم النظام: بسبب تنفيذ أوامر غير متوقعة.
- فقدان الموارد: زي تخصيص أموال زيادة في نظام بنكي.
- ثغرات أمنية: ممكن المهاجم يستغل الثغرة عشان يصعّد الصلاحيات أو يسرق بيانات.
مثال عملي على Race Condition
لنفترض إن عندنا تطبيق بنكي بيدير حسابات المستخدمين. الحساب فيه رصيد 100 ريال، وفيه اتنين مستخدمين (A وB) بيحاولوا يسحبوا فلوس في نفس الوقت:- المستخدم A عايز يسحب 50 ريال.
- المستخدم B عايز يسحب 75 ريال.
- العملية:
- A يقرأ الرصيد (100 ريال) ويبدأ يسحب 50 ريال.
- في نفس اللحظة، B يقرأ الرصيد (100 ريال) ويبدأ يسحب 75 ريال.
- A يكتب الرصيد الجديد (100 - 50 = 50 ريال).
- B يكتب الرصيد الجديد (100 - 75 = 25 ريال).
- النتيجة: الرصيد بيبقى 25 ريال (آخر كتابة)، لكن المستخدمين سحبوا 50 + 75 = 125 ريال، رغم إن الحساب فيه 100 ريال بس!
كيف يستغل المهاجم الثغرة؟
- تصعيد الصلاحيات: لو المهاجم قدر يتحكم في توقيت العمليات، ممكن يعدّل بيانات حساسة (زي صلاحيات المستخدم).
- سرقة الموارد: زي المثال البنكي، ممكن يستغل الثغرة عشان يسحب فلوس زيادة.
- تعطيل النظام: إجبار النظام على تنفيذ عمليات متضاربة تؤدي لانهياره.
- مثال عملي: المهاجم بيستخدم سكريبت يرسل طلبات متكررة بسرعة فائقة (زي
Burp Suite Intruder
) عشان يستغل نقص المزامنة.
نصايح للحماية من Race Condition
عشان تحمي تطبيقاتك من ثغرة Race Condition:- استخدم المزامنة:
- استخدم Mutex (Mutual Exclusion) أو Semaphores عشان تضمن إن عملية واحدة بس هي اللي بتوصل للمورد في وقت معين.
- مثال: في Python، استخدم
threading.Lock()
لقفل المورد أثناء الكتابة.
- التسلسل (Serialization):
- نفّذ العمليات بشكل تتابعي في الموارد الحرجة (Critical Sections).
- مثال: استخدم قوائم انتظار (Queues) في قاعدة البيانات.
- التحقق من البيانات:
- تأكد من قيمة المورد قبل الكتابة (مثال: تحقق إن الرصيد كافي قبل السحب).
- استخدم معاملات قاعدة بيانات (Transactions) زي
ACID
.
- اختبار التطبيق:
- استخدم أدوات زي
Burp Suite
أو OWASP ZAP لمحاكاة هجمات متعددة المهام. - جرب الثغرة في بيئة معزولة زي Hack The Box.
- استخدم أدوات زي
- حدّث الأنظمة: ركّب آخر تحديثات الأمان للبرامج وقواعد البيانات.
- راقب السجلات: استخدم أدوات زي
Splunk
أو ELK Stack لرصد محاولات استغلال الثغرة. - للهكرز الأخلاقيين: جرب الثغرة في بيئات تدريب زي TryHackMe.
خلّصنا.. ابدأ رحلتك في الأمن السيبراني!
ثغرة Race Condition ممكن تكون كارثية لو ما اتعالجتش، خصوصًا في تطبيقات زي الأنظمة البنكية. لو عايز تبقى هاكر أخلاقي، اتعلم إزاي تكتشف الثغرة دي وتحمي منها باستخدام تقنيات المزامنة. تابع منتديات اكتب كود لشروحات جديدة عن Cybersecurity وPenetration Testing
كل أسبوع! 

التعديل الأخير: