
استغلال للاستيلاء على حسابات GitLab عبر CVE-2023-7028، يوضح تجاوز إعادة تعيين كلمة المرور عن طريق حقن بريد إلكتروني للمهاجم لتلقي رمز إعادة التعيين.
GitLab هو مدير مستودعات بيانات مستضاف على الويب يُستخدم على نطاق واسع، ويوفر منصة شاملة لإدارة الكود المصدري والتكامل والصيانة والتعاون في مشاريع تطوير البرمجيات.CVE-2023-7028 هو ثغرة أمنية تسمح للمهاجم بالاستيلاء على حساب المستخدم (Account TakeOver) عبر نموذج reset password.الإصدارات التالية من GitLab:
reset password وتحديدًا في نقطة نهاية API POST /users/password الخاصة بـ GitLab. يستغل المهاجم الثغرة في حقل عنوان البريد الإلكتروني لتجاوز التحقق من التنسيق الخاطئ، مما يؤدي إلى إمكانية إدراج بريده الإلكتروني الخاص، وعندها يرسل GitLab إلى بريد المهاجم الإلكتروني.reset tokenبناءً على مقطع الكود الذي يوفره GitLab، نلاحظ ما يلي:

يقع جزء معالجة طلب إعادة تعيين كلمة المرور في الملف spec/controllers/passwords_controller_spec.rb، والذي يسمح بإدخال عدة عناوين بريد إلكتروني من الإدخال ولكن دون أي آلية للتحقق من البريد الإلكتروني لتأكيد أنه بريد المستخدم.
يطلب الخادم فقط authenticity_token (وهو رمز مخفي لمكافحة CSRF) من المهاجم في نموذج الإرسال لإرسال طلب إعادة تعيين كلمة المرور.

→ يمكننا إدراج بريدنا الإلكتروني الخاص لاستلام reset token لإعادة تعيين كلمة مرور بريد الضحية، وبالتالي الاستيلاء على حساب المستخدم.
عند التقاط طلب إعادة تعيين كلمة المرور، نحصل على ما يلي:

authenticity_token واحدًا يُستخدم لمكافحة CSRF، ويوضع اسم البريد الإلكتروني للمستخدم الذي ستتم إعادة تعيين كلمة مروره في المتغير user[email].أضف بريد المهاجم الإلكتروني وفقًا للحمولة التالية &user[email][]=victim_email&user[email][]=attacker_email وأرسل الطلب:

→ عند فحص بريد المهاجم الإلكتروني، نلاحظ أن رمز إعادة تعيين كلمة المرور قد تم إرساله إليه ويمكن الوصول إليه لتغيير كلمة المرور.

