
CVE-2023-27524
انتهت مسابقة آسيان لأمن المعلومات للطلاب مؤقتًا، وحقق فريقي MSEC_HUNT3R المركز الثاني في فئة Jeopardy. كانت مشاعري مختلطة بين الفرح والحزن، لأن فئة الويب هذا العام لم ترقَ إلى مستوى توقعاتي، لكن على أي حال، لدي CVE أستطيع تحليله :v
تم اكتشاف CVE-2023-27524 على Apache Superset بدرجة CVSS تبلغ 8,9 في عام 2021، لكن لم يُنشر CVE إلا في عام 2023. إنها أداة مفتوحة المصدر لاستكشاف البيانات وتصورها. تتأثر الإصدارات من 1.4.1 إلى 2.0.1، وتحدث المشكلة عندما يشغّل المشرف (admin) Apache بالإعدادات الافتراضية، ونتيجة لذلك تكون هذه الخوادم كمنزل بلا أبواب لأن الجميع يملك المفتاح. مما يسمح للمهاجم (attacker) بـ"تسجيل الدخول" بصلاحيات المسؤول، بل ويمكنه تمامًا أن ينام بوقاحة على سرير زوجتك دون أن يكتشفه أحد :)) في هذه المقالة، سأحلل بعمق الإعداد الافتراضي لهذا التكوين. يستند هذا التحليل إلى هذا الرابط.
تمت كتابة Superset باستخدام مكتبة Flask الخاصة بـ Python ويستخدم SECRET_KEY لمصادقة المستخدمين. من الشائع في التطبيقات المبنية على Flask استخدام ملفات تعريف ارتباط (cookie) الجلسة الموقّعة تشفيريًا لإدارة حالة المستخدم. عندما يسجّل المستخدم الدخول، يرسل تطبيق الويب ملف تعريف ارتباط الجلسة الذي يتضمن معرّف المستخدم إلى متصفح المستخدم النهائي. ثم يوقّع عليه تطبيق الويب باستخدام SECRET_KEY، وهي قيمة تُنشأ عشوائيًا وتُخزَّن في ملف الإعدادات المحلي. كلما وصل request، يرسل المتصفح (browser) الـ cookie الخاصة بالجلسة (session) الحالية إلى تطبيق الويب، ويقوم تطبيق الويب بمصادقة المستخدم بناءً على التوقيع في الـ cookie قبل تنفيذ الـ request.