Abdulrahman
Abdulrahman

@infosec_90

11 تغريدة 123 قراءة Dec 15, 2021
موضوع اليوم عن ثغرات Redos
وهي اختصار
لـRegular expression Denial of Service
يهم هذا الموضوع :
المبرمجين
مختبر جودة البرمجيات
صائد المكأفات
مختبر اختراق
ملاحظة هذا الثغرة مقبولة في برامج المكأفات
#أمن_المعلومات #الامن_السيبراني
#برمجة #جودة_البرمجيات
اولا : نحتاج الى معرفة ماهو Regex
لنفرض انك مبرمج لموقع ولديك عدة مدخلات
في موقعك مثلا تحتاج ايميل المستخدم والاسم والرقم السري ..الخ
في نماذج الموقع
انت كمبرمج لو كل مستخدم حاول التسجيل بموقعك وللتأكد
هل المدخل ايميل او اسم مستخدم صعب جدا التتحقق بشكل يدوي
تخيل انك كل يوم تراجع مدخلات المستخدمين في موقعك هل المدخل ايميل او لا
من هنا ظهرت الحاجة لحل هذه المشكلة واستخدام Regex
لذلك شخصيا اعرف Regex انه بناء نمط او جملة شرطية للتحقق من المدخل
بنمط معين يريده المبرمج مثلا الايميل اسم المستخدم .الخ
هذه الطريقة تختصر الكثير من الوقت
وتوجد انماط كثيرة مثلا لا اريد اسم مستخدم يحتوي على رموز $%@#^&@
او لا اريد باسورد ضعيف ويحتوي على ارقام متسلسلة ..الخ
حيث لها فوائد جدا كثيرة
اذا اين يحدث الخطأ يحدث الخطأ عندما يكتب المبرمج Regex غير
صحيح يمكن المهاجم من كتابة نمط يتسبب في حدوث dos
هنا عندنا نمط بسيط كمثال لإيصال
الصورة بشكل عملي في Regex قلنا له ابدا بحرف a بالاضافة الى d+b
باستخدام الكونسول لوق سنحاول
اختبار النمط التالي وهل يمكن الهجوم عليه ام لا
طرق اختبار الانماط والهجوم عليها تتم بعدة طرق منها :
الاولى :
استخدام الخورازميات في النمط ضد النمط
بحيث المبرمج يكتب علامة ضرب او اي عملية رياضية
ونهاجم هذا النمط بكتابة نمط يعطي نتيجة غير نهائية كانه لوب غير منتهي
الثانية : بكتابة حرف غير موجود في النمط
لا اريد تعقيد هذا يكفي
الان لنختبرها
في الصورة فيه مشكلة عندنا بالوقت المستغرق في معالجة الطلب
كل ما نزيد عدد الاحرف او نكتب نمط غير واضح بيتم زيادة الوقت
في معالجة الطلب وهذا بيسبب استهلاك لموارد اي سيرفر او تطبيق
لدرجة ايقافه عن العمل بسبب regex
غير صحيح استخدمه المبرمج
الان عندنا مثال ثاني في نموذج
ايميل في هذا المثال
بيتم استغلال علامة الضرب الا وضعها المبرمج بنفسه
تعالوا الان نختبرها ونستغل علامة الضرب باضافة عدة احرف
الخطورة :
1- لاتحتاج الى عدد طلبات كبير
فقط اضافة حرف اضافي وبيتكفل بايقاف السيرفر عن العمل
2- لايمكن للود بلنس او waf صد هذا النوع
من الهجمات
3- لايمكن اكتشافها بسهولة
ملاحظة دائما عند اصابة هذا النوع
في front دائما نفس النمط يكون مستخدم في backend
اماكن الإصابة الشائعة:
1- خانة الباسورد
بعض المبرمجين يستخدمون تشفير عالي
بحيث إذا كتبت باسورد من 100 حرف
يتسبب في إيقاف التطبيق
2-خانة الايميلات
3- اي خانة تحتوي على تحقق Regex
اخيرا بعض المراجع وtools:
owasp.org
github.com
github.com

جاري تحميل الاقتراحات...