
مثال على كود استغلال لـ CVE-2021-33831
يُستخدم التطبيق لتتبّع الأشخاص وفقًا لقوانين العدوى الألمانية بهدف تتبّع سلاسل عدوى كوفيد-19. تم إنشاؤه بواسطة مشروع طلابي يُدعى iCampus ويُستخدم ليس فقط في جامعة فيلداو ولكن أيضًا في كوتوبوس-سينفتنبرغ. يتأثر حوالي 10,000 شخص. يُطلب من ضيوف الجامعات استخدام هذا التطبيق.
يتكون التطبيق من واجهة أمامية Vue وواجهة خلفية Laravel.
تكشف الواجهة الخلفية عن نقطة تسجيل المستخدم الضيف /corona-app-backend/api/account/register
والتي تسمح بتسجيل ضيوف الجامعة. يمكن لأعضاء الجامعة تسجيل الدخول باستخدام اسم المستخدم/كلمة المرور الخاصة بتسجيل الدخول الموحّد.
نقطة التسجيل هذه غير محمية ضد الإنشاء الآلي للمستخدمين (مثل عبر كابتشا). بمجرد أن يحصل برنامج على ملف تعريف ارتباط csrf عبر /corona-app-backend/sanctum/csrf-cookie ورمز جلسة عبر /corona-app-backend/account يصبح قادرًا على إنشاء مستخدمين. بقدر ما يريد. وطالما يريد. عدد كبير جدًا من المستخدمين المزيّفين يجعل من المستحيل عمليًا على جهة صحية تتبّع سلاسل العدوى، مما يجعل هذا نوعًا من هجوم حجب الخدمة.
تسجيل المستخدم هو طلب post إلى نقطة التسجيل يحتوي على ملف تعريف ارتباط csrf ورمز الجلسة مع الحمولة json التالية:
{"first_name":"John","last_name":"Doe","telephone":"099182","email":null,"accept":true}
يجب تعيين أي من الحقلين email أو phone. كلاهما غير موثَّق (بخلاف فحوصات البنية).
مع جلسة مستخدم صالحة، يمكن إنشاء زيارات (تسجيلات دخول إلى الغرف) عبر النقطة /corona-app-backend/api/visit
الزيارة هي طلب post إلى نقطة الزيارة يحتوي على ملف تعريف ارتباط csrf ورمز الجلسة مع الحمولة json التالية:
{"room":"15-K01","visited_on":"2021-05-09T22:01:00.000Z","exited_on":"2021-05-10T21:59:00.000Z"}')
يمكن الحصول على قيمة حقل الغرفة من قائمة يمكن استرجاعها من نقطة الغرف /corona-app-backend/api/rooms والتي تعيد json بجميع غرف الجامعة. يحتاج المرء فقط إلى ملف تعريف ارتباط csrf ورمز الجلسة لنجاح الطلب.
يمكن مقارنة المشكلة بـ CVE-2021-33840 لكنها تتجاوز ذلك بكثير.
أيضًا، لا يحتوي التطبيق على أي تشفير في أجزاء الواجهة الأمامية/الخلفية (بخلاف تشفير النقل عبر https). تستقبل الواجهة الخلفية بيانات json غير مشفرة وتُسلّم بيانات json غير مشفرة.
ينشئ كود الاستغلال الآلي بالكامل المكتوب بلغة Perl 500 مستخدم (من قواعد بيانات أسماء عشوائية) بأرقام هواتف عشوائية لكنها تبدو صالحة، ويتم تسجيل دخول جميع المستخدمين إلى غرفة واحدة. آلي بالكامل. تم إدراج تأخير زمني قدره 5 ثوانٍ/طلب لتجنب تحميل الخادم فوق طاقته وعدم تفعيل أي حماية قد تكون موجودة. نجح الاستغلال في العمل آليًا بالكامل، وأبلغت عن المشكلة بما في ذلك المستخدمون المزيّفون الذين تم إنشاؤهم إلى الجامعة في نفس اليوم.
قبل اختيار غرفة، تأكدت من عدم زيارة الغرفة في ذلك اليوم. هذا ممكن لأن التطبيق يحتوي على عداد لعدد الأشخاص الذين كان المرء على اتصال بهم في غرفة معينة. فإذا زار المرء غرفة وكان العداد 0، فلم يكن أي شخص آخر في تلك الغرفة خلال ذلك الإطار الزمني.
تأثر التطبيق أيضًا بثغرة RCE من CVE-2021-3129 والتي أبلغت عنها في 12.04.2021 إلى الجامعة.
تم الإبلاغ عن المشكلة الحالية في 31.05.2021.
لكلا البلاغين تلقيت رسالة تأكيد استلام عبر البريد الإلكتروني في اليوم التالي لتقديم البلاغات. لم أتلقَّ أي شيء آخر بعد ذلك.
طلب الحصول على الكود المصدري للتطبيق قيد المعالجة.