خطأ فى الأعدادات داخل Apache Superset يؤدى الى حدوث ثغرة RCE

News
بسبب غفلة عن تحديث الأعدادات الأفتراضية داخل Apache Superset ظهور ثغرة RCE و التحكم عن بعد فى الخادم
Mostafa Tamam
April 27, 2023, 6 p.m.
mostafa_tamam
خطأ فى الأعدادات داخل Apache Superset يؤدى الى حدوث ثغرة RCE

مقدمة

اكتشف باحثو فى شركة Horizon3.ai أن ثغرة الأعدادات الافتراضية (CVE-2023-27524) تجعل معظم خوادم Apache Superset التي متواجدة على الإنترنت عرضة للمهاجمين, تؤثر الثغرة الأمنية CVE-2023-27524 (بدرجة CVSS: 8.9) ، على الإصدارات التي تصل إلى 2.0.1 وتتضمنها وتتعلق باستخدام SECRET_KEY افتراضي يمكن أن يسيء استخدامه المهاجمون للمصادقة والوصول إلى الموارد غير المصرح بها على الإنترنت.

ما هو Apache Superset ؟

هو تطبيق مفتوح المصدر مكتوب بلغة Python ويعتمد على إطار عمل Flask للويب ، يستخدم Apache Superset لتحليل وتصور البيانات وإنشاء لوحات الأدارة والتقارير المخصصة بشكل ديناميكي, يتضمن البرنامج واجهة مستخدم بصرية وسهلة الاستخدام ويدعم العديد من مصادر البيانات المختلفة.

ما الذى حدث ؟

نشرت شركة Horizon3.ai فى الخامس والعشرين من هذا الشهر بأن هناك أكثر من 3000 حالة تعرضت لهذة الثغرة الأمنية على الإنترنت, حيث وجد أن جزءًا كبيرًا من هذه الخوادم على الأقل 2000 اى ثلثي جميع الخوادم تعمل بأعدادات افتراضية خطيرة, نتيجة لذلك ، فإن العديد من هذه الخوادم مفتوحة بشكل فعال للجمهور, حيث يمكن لأي مهاجم "تسجيل الدخول" إلى هذه الخوادم بأعلى الأمتيازات والوصول إلى البيانات المتصلة بهذه الخوادم وتعديلها ، وتنفيذ التحكم عن بُعد فى الخوادم.
 
وصفت Naveen Sunkavally ، التى تعمل كـ chief architect في شركة Horizon3.ai بأن:

"أعدادات افتراضية خطيرة في Apache Superset يسمح للمهاجم غير الموثوق به بالحصول على تنفيذ التعليمات البرمجية عن بُعد ، وجمع بيانات الاعتماد ، وتعريض البيانات للخطر."

 

كيف يحدث هذا الأستغلال ؟

تكمن المشكلة في حقيقة أن تطبيق الويب المستند إلى Flask يستخدم مفتاحًا سريًا افتراضيًا (SECRET_KEY) لتوقيع ملفات تعريف الارتباط للجلسة بشكل مشفر لإدارة حالة المستخدم ، ولا يغير العديد من المستخدمين هذا المفتاح بعد التثبيت, حيث يقوم المستخدم بتسجيل الدخول ، يرسل تطبيق الويب ملف تعريف ارتباط Cookies للجلسة يتضمن بيانات المستخدم الى المتصفح النهائى ثم يقوم تطبيق الويب بتوقيع ملف تعريف الارتباط باستخدام SECRET_KEY ، وهي قيمة من المفترض أن يتم إنشاؤها عشوائيًا وتخزينها عادةً في ملف تكوين محلي. مع كل طلب ويب ، يرسل المتصفح ملف تعريف ارتباط الجلسة الموقع مرة أخرى إلى التطبيق. ثم يتحقق التطبيق من صحة التوقيع على ملف تعريف الارتباط لإعادة مصادقة المستخدم قبل معالجة الطلب.

Apache Superset Exploitation (Source: Horizon3.ai)

وضحت ايضا Naveen Sunkavally بأن :

"يعتمد أمان تطبيق الويب بشكل حاسم على ضمان سرية SECRET_KEY بالفعل. إذا تم الكشف عن SECRET_KEY ، يمكن للمهاجم الذي ليس لديه امتيازات سابقة من إنشاء ملفات تعريف الارتباط الخاصة به والتوقيع عليها والوصول إلى التطبيق ، متنكراً كمستخدم شرعي.

تعمل أداة flask-unsign بتكامل مع عملية الاختراق حيث تعمل على محاولة كسر ملف تعريف ارتباط الجلسة cookies لاكتشاف ما إذا كان قد تم توقيعه بواسطة SECRET_KEY ضعيف ام لا ثم تزوير ملف تعريف الأرتباط cookie ثم انشاء جلسة دخول مزيفة ولكنها صالحة بأستخدام SECRET_KEY معروف.

وضحت ايضا الشركة المكتشفة لهذا الخطأ بأن الـ SECRET_KEY قد تم ضبطه افتراضيًا على القيمة x02\x01thisismyscretkey\x01\x02\\e\\y\\y\\h في وقت التثبيت. ثم تقع على عاتق المستخدم مسؤولية تعديل تكوين التطبيق لتعيين SECRET_KEY جديد مشفر.

ايضا قد قمت بالبحث باستخدام Shodan الذى أظهر نسبة عالية جدًا من خوادم Superset التي تستخدم SECRET_KEY الافتراضي, حيث أن استخدام SECRET_KEY الافتراضي يمثل خطرًا كبيرًا على أمن التطبيقات ، حيث يمكن لأي شخص يعرف هذا المفتاح السري الوصول إلى جميع الجلسات والبيانات الحساسة المرتبطة بالتطبيق, استخدمت بعد ذلك عبر flask-unsign لتحديد ما إذا كان قد تم توقيعه باستخدام SECRET_KEY الافتراضي, وبالتكامل ايضا مع الشركة المكتشفة لهذة الثغرة ، وجد أن اكثر من نسبة 70٪ من جميع الخوادم كانت تستخدم SECRET_KEY الافتراضي!

ثم بعد ذلك يأتى تزوير ملف تعريف الجلسة بقيمة user_id أو _user_id المحددة افتراضيا على 1 وهي القيمة المرتبطة غالبًا بحساب الـ admin، يمكن للمهاجم بسهولة وضع ملف الكوكيز في تخزين المتصفح المحلي وتحديث الصفحة، وبذلك يكون قد حصل على صلاحيات الـ admin لتطبيق الويب.

وأضافت Naveen Sunkavally:

"غالبًا ما تكون الواجهات الإدارية لتطبيقات الويب غنية بالميزات وتؤدي إلى تنفيذ التعليمات البرمجية عن بُعد على خادم التطبيق".

"لقد وجدنا مسارات موثوقة لتنفيذ التعليمات البرمجية عن بُعد عبر إصدارات مختلفة من مجموعة Superset في مجموعة متنوعة من التكوينات. يمكن تنفيذ التعليمات البرمجية عن بُعد على قواعد البيانات المتصلة بـ Superset وخادم Superset نفسه. وجدنا أيضًا مجموعة من الأساليب لجمع بيانات الاعتماد. تتضمن بيانات الاعتماد هذه كلمات المرور للمستخدمين وبيانات اعتماد قواعد البيانات ، "

 

السبيل الى الحماية

  • فى العموم اغلب المستخدمين لا يقرأون الـ documentation ويجب تصميم التطبيقات لإجبار المستخدمين على السير في مسار لا يكون لديهم فيه خيار سوى أن يكونوا آمنين بشكل افتراضي, نعلم جميعًا أن بيانات الاعتماد الافتراضية والمفاتيح الافتراضية سيئة ، ولكن ما مدى سوءها حقًا؟ في حالة Superset ، يمتد تأثير مفتاح Flask الافتراضي غير الآمن إلى ما يقرب من 2/3 من كل مستخدم لذلك أفضل نهج هو استبعاد الاختيار من المستخدمين ومطالبتهم باتخاذ إجراءات متعمدة ليكونوا بشكل امن.

Apache Superset team’s warning to users (Source: Horizon3.ai)

  • أتاحت ايضا Horizon3.ai أيضًا كود برمجي بلغة Python يمكن استخدامه لتحديد ما إذا كانت خوادم Superset عرضة للأختراق.

 

شارك الخبر على منصات التواصل الأجتماعى لتعميم الفائدة على باقى المستخدمين والسلام ختام laugh


References:

Horizon3.ai apache superset leads to remote code execution
the hacker news
Configuring Superset
Apache Superset on GitHub
Flask Unsign Toolkit


apache superset RCE remote-code-execution CVE-2023-27524 Root-X News Mostafa Tamam