أكثر من 10 آلاف منصة تعليمية في خطر بسبب 3 ثغرات أمنية في MasterStudy LMS

أكثر من 10 آلاف منصة تعليمية في خطر بسبب 3 ثغرات أمنية في MasterStudy LMS

في 25 فبراير 2024، تم الإبلاغ عن ثغرة Privilege Escalation في MasterStudy LMS، وهو مكون إضافي لـ WordPress يحتوي على أكثر من 10000 عملية تثبيت نشطة. تتيح هذه الثغرة الأمنية للمهاجم غير المصادق أن يمنح نفسه امتيازات إدارية عن طريق تحديث بيانات تعريف المستخدم أثناء التسجيل.

وفي اليوم التالي، 26 فبراير 2024، وفي وقت لاحق في 31 مارس، تم تلقي طلبات بخصوص ثغرة أمنية [Local File Inclusion] في البرنامج الإضافي MasterStudy LMS WordPress. تتيح هذه الثغرة الأمنية للمهاجمين غير المصادقين إمكانية تضمين وتنفيذ ملفات عشوائية على الخادم، مما يسمح بتنفيذ أي تعليمات برمجية PHP في تلك الملفات.

المحتوى

ما هي إضافة MasterStudy LMS؟

مكون إضافي مجاني لبرنامج WordPress LMS للأعمال التعليمية عبر الإنترنت. يقوم مكون WordPress الإضافي بتحويل أي موقع ويب عادي لـ WP إلى مدرسة عبر الإنترنت تحتوي على جميع ميزات التعليم الإلكتروني ونظام إدارة التعلم (LMS) الضرورية.

الإصدارت المٌصابة

الاصدار المصاب من MasterStudy LMS

يعد MasterStudy LMS الخاص بـ WordPress عرضة لتصعيد الامتيازات في جميع الإصدارات حتى الإصدار 3.3.1، بما في ذلك. ويرجع ذلك إلى عدم كفاية عمليات التحقق من الصحة داخل دالة _register_user() التي يستدعيها إجراء AJAX ‘wp_ajax_nopriv_stm_lms_register’. وهذا يجعل من الممكن للمهاجمين غير المصادقين تسجيل مستخدم بامتيازات على مستوى المسؤول عند تثبيت MasterStudy LMS Pro وتمكين الوظيفة الإضافية LMS Forms Editor.

الاصدار 2 المصاب من MasterStudy LMS

البرنامج المساعد MasterStudy LMS عرضة [Local File Inclusion] في جميع الإصدارات حتى الإصدار 3.3.0، بما في ذلك، عبر الباراميتر "Modal". وهذا يجعل من الممكن للمهاجمين غير المصادقين تضمين وتنفيذ ملفات عشوائية على الخادم، مما يسمح بتنفيذ أي كود PHP في تلك الملفات. يمكن استخدام ذلك لتجاوز عناصر التحكم في الوصول أو الحصول على بيانات حساسة أو تنفيذ التعليمات البرمجية في الحالات التي يمكن فيها تحميل الصور وأنواع الملفات "الآمنة" الأخرى وإدراجها.

الاصدار 3 المصاب من MasterStudy LMS

البرنامج المساعد MasterStudy LMS عرضة [Local File Inclusion] في جميع الإصدارات حتى الإصدار 3.3.3، بما في ذلك، عبر الباراميتر "template". وهذا يجعل من الممكن للمهاجمين غير المصادقين تضمين وتنفيذ ملفات عشوائية على الخادم، مما يسمح بتنفيذ أي كود PHP في تلك الملفات. يمكن استخدام ذلك لتجاوز عناصر التحكم في الوصول أو الحصول على بيانات حساسة أو تنفيذ التعليمات البرمجية في الحالات التي يمكن فيها تحميل الصور وأنواع الملفات "الآمنة" الأخرى وإدراجها.

التحليل الفني للثغرات

#1: Privilege Escalation via stm_lms_register AJAX Action

يكشف فحص الكود أن المكون الإضافي يستخدم دالة stm_lms_register() في فئة STM_LMS_User للتعامل مع التسجيل. إذا تمت إضافة مستخدم بنجاح، فستستدعي هذه الوظيفة الدالة _register_user(). ولسوء الحظ، تم تنفيذ هذه الوظيفة بشكل غير آمن، مما سمح للمستخدمين غير المصادقين بتعديل قدراتهم، بما في ذلك منح أنفسهم صلاحيات المسؤول.

				
					public static function _register_user( $user, $data, $user_email ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore
    $login_data = array(
        'user_login'    => $data['register_user_login'],
        'user_password' => $data['register_user_password'],
        'remember'      => false,
    );
    wp_signon( $login_data, is_ssl() );
 
    if ( class_exists( 'STM_LMS_Form_Builder' ) ) {
        $default_fields = self::_user_profile_fields();
    }
 
    /*If everything is right, check for Instructor application*/
    STM_LMS_Instructor::become_instructor( $data, $user );
 
    if ( ! empty( $default_fields ) && ! empty( $data['profile_default_fields_for_register'] ) ) {
        foreach ( $data['profile_default_fields_for_register'] as $index => $field ) {
            if ( isset( $field['value'] ) && in_array( $field['label'], array_column( $default_fields, 'label' ) ) ) {  // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict
                update_user_meta( $user, $index, $field['value'] );
            }
        }
    }
				
			

Profile_default_fields_for_register إذا كانت قيمة $default_fields ليست فارغة. يحدث هذا فقط في حالة وجود فئة STM_LMS_Form_Builder، وهي فئة إضافية احترافية. وهذا يعني أنه لا يمكن استغلال الثغرة الأمنية إلا عند تثبيت MasterStudy LMS Pro وتمكين الوظيفة الإضافية LMS Forms Editor.

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

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

#2: Local File Inclusion via modal

يكشف فحص الكود أن المكون الإضافي يستخدم وظيفة load_modal() في كلاس STM_LMS_Helpers لتحميل ملف القالب المشروط عبر AJAX.

				
					public static function load_modal() {
    check_ajax_referer( 'load_modal', 'nonce' );
 
    if ( empty( $_GET['modal'] ) ) {
        die;
    }
    $r = array();
 
    $modal       = 'modals/' . sanitize_text_field( $_GET['modal'] );
    $params      = ( ! empty( $_GET['params'] ) ) ? json_decode( stripslashes_deep( $_GET['params'] ), true ) : array();
    $r['params'] = $params;
    $r['modal']  = STM_LMS_Templates::load_lms_template( $modal, $params );
 
    wp_send_json( $r );
}
				
			

تستدعي هذه الدالة Load_lms_template() في كلاس STM_LMS_Helpers.

				
					public static function load_lms_template( $template_name, $stm_lms_vars = array() ) {
    ob_start();
    extract( $stm_lms_vars ); // phpcs:ignore WordPress.PHP.DontExtract
        $tpl = self::locate_template( $template_name, $stm_lms_vars );
 
    if ( file_exists( $tpl ) ) {
 
        include $tpl;
 
    }
        return apply_filters( "stm_lms_{$template_name}", ob_get_clean(), $stm_lms_vars );
}
				
			

يكشف الكود أنه لا يوجد أي تعقيم لمسار الملف في أي مكان في هذه الوظائف. وهذا يجعل من الممكن تضمين ملفات PHP عشوائية من الخادم من خلال الباراميتر "modal". يقتصر تضمين الملف على ملفات PHP الموجودة في الثغرة الأمنية. وهذا يعني أن الجهات الفاعلة في مجال التهديد لا يمكنها استغلال إحدى طرق تنفيذ التعليمات البرمجية عن بُعد الأكثر شيوعًا عبر هجوم تسميم ملف السجل. بالإضافة إلى ذلك، نظرًا لأن المكون الإضافي يستخدم أيضًا دالة file_exists() لفحص الملفات، فإن طريقة تنفيذ التعليمات البرمجية عن بعد الشائعة الأخرى باستخدام الأغلفة غير ممكنة أيضًا. ومع ذلك، لدى المهاجم عدة خيارات لتضمين ملف PHP ضار واستغلاله وتنفيذه على الخادم.

ويمكن تحقيق ذلك من خلال تسلسل الهجوم واستغلال نقاط الضعف في المكونات الإضافية الأخرى. ومع ذلك، تجدر الإشارة إلى أن احتمالات الهجوم محدودة. من المحتمل أن يتم الاستفادة من هذه الثغرة الأمنية في سيناريو حيث يكون لدى المهاجم حق الوصول لتحميل ملف PHP، ولكن ليس لديه حق الوصول المباشر إلى الملف لتنفيذه.

#3: Local File Inclusion via template

يكشف فحص الكود أن المكون الإضافي يستخدم دالة () في كلاس STM_LMS_Helpers لتحميل الدورات التدريبية بالقالب المحدد عبر AJAX.

				
					public static function load_content() {
    check_ajax_referer( 'load_content', 'nonce' );
 
    if ( empty( $_GET['template'] ) ) {
        die;
    }
 
    $tpl = stripslashes( $_GET['template'] );
    $tpl = sanitize_text_field( $tpl );
    $tpl = addslashes( $tpl );
				
			
				
					$content = STM_LMS_Templates::load_lms_template(
    $tpl,
    array(
        'args'         => $args,
        'query_result' => $query_result,
    )
);
				
			

يكشف الكود أنه لا يوجد أي تعقيم لمسار الملف في هذه الدالة مما يجعل من الممكن مرة أخرى تضمين ملفات PHP عشوائية من الخادم من خلال باراميتر “template”.

الجدول الزمني

25 فبراير 2024 – أُرسل تقرير بوجود الثغرة في الإضافة البرمجية. 

  • 28 فبراير 2024 – تم التحقق من صحة التقرير.
  • 13 مارس 2024 – بدء الاتصال مع مبرمجي الإضافة وطُلب منهم تأكيد البريد الوارد للتعامل مع المناقشة.
  • 20 مارس 2024 – تم إصدار النسخة المصححة بالكامل لتضمين الملفات المحلية عبر الثغرة الأمنية المشروطة للمكون الإضافي MasterStudy LMS، 3.3.1.
  • 27 مارس 2024 – تم إصدار النسخة المصححة بالكامل لثغرة Privilege Escalation الخاصة بالمكون الإضافي MasterStudy LMS، 3.3.2.
  • 31 مارس 2024 – نتلقى [Local File Inclusion via template ] عبر ثغرة أمنية في القالب في MasterStudy LMS .
  • 01 إبريل 2024 – بدأ فريق عمل الإضافة بالعمل على الإصلاح.
  • 4 إبريل 2024 – تم إصدار النسخة المصححة بالكامل من الإضافة، 3.3.4.

رسالة لعملاءي

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

الدعم التقني

أوصيك إذا لم تكن تقنيًا بتوظيف أحد المتخصصين لرعاية وفحص موقعك وتحديثه وصيانته أولًا بأول فلا يمكنك أبدًا الحصول على موقع آمن وينافس ويظهر بشكل احترافي للعملاء دون وجود دعم تقني دوري للموقع فلعلك لاحظت التحديثات والترقيات الدائمة لتطبيقات هواتفك أو نظام تشغيلك أو متصفحك وحتى برامح فحص الفيروسات نفسها.. إن التحديثات والتأمينات باتت ضرورة ملحة بعدما أصبحت الهجمات لا تبقي ولا تذر أحدًا حتى المنصات الكبيرة والمواقع المشهورة.

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

الشهر الواحد

دعم الصيانة والتحديثات
$250
$ 199
99
شهر/
  • صيانة الأعطال التقنية
  • تحديث الأنظمة وحمايتها
  • تأمين المواقع والتطبيقات
  • ضبط وتأمين الاستضافات
  • تصحيح الأكواد البرمجية
  • حماية الملفات البرمجية
  • فحص الفيروسات الدوري
  • نسخ احتياطي آمن

ربع سنوي

دعم الصيانة والتحديثات
$750
$ 569
99
3 أشهر/
  • صيانة الأعطال التقنية
  • تحديث الأنظمة وحمايتها
  • تأمين المواقع والتطبيقات
  • ضبط وتأمين الاستضافات
  • تصحيح الأكواد البرمجية
  • حماية الملفات البرمجية
  • فحص الفيروسات الدوري
  • نسخ احتياطي آمن
شائعة

نصف سنوي

دعم الصيانة والتحديثات
$1500
$ 1109
99
6 أشهر/
  • صيانة الأعطال التقنية
  • تحديث الأنظمة وحمايتها
  • تأمين المواقع والتطبيقات
  • ضبط وتأمين الاستضافات
  • تصحيح الأكواد البرمجية
  • حماية الملفات البرمجية
  • فحص الفيروسات الدوري
  • نسخ احتياطي آمن

العام الكامل

دعم الصيانة والتحديثات
$3000
$ 2159
99
عام/
  • صيانة الأعطال التقنية
  • تحديث الأنظمة وحمايتها
  • تأمين المواقع والتطبيقات
  • ضبط وتأمين الاستضافات
  • تصحيح الأكواد البرمجية
  • حماية الملفات البرمجية
  • فحص الفيروسات الدوري
  • نسخ احتياطي آمن
الأوفر

ختام المقالة

أرجو أن أكون قد وفقت في إظهار أهمية وخطورة الدعم التقني وأن يكون سردي قد نال إعجابكم وأقبل تعليقاتكم بالأسفل ويسعدني كافة مشاركتكم.. هذه الخدمة لها صفحة منفصلة بها كافة التفاصيل في حالة احتياجك لهذه الخدمة من أجل موقعك الإلكتروني أو تطبيقك ولا تنسى زائري الكريم بتحديث الإضافة الآن لآخر نسخة لكي تكون بأمان حتى توظفني وأفحص موقعك بالكامل وأعطيك تقرير مفصل لكافة أجزاء كيانك البرمجي.

باقات الدعم التقني للأنظمة
للمواقع الإلكترونية والاستضافات وتطبيقات الهواتف وأنظمة سطح المكتب

شارك المقالة للإفادة

نبذة عن الكاتب

م. أحمد أسامة
م. أحمد أسامة
مهندس برمجيات مصري ● خبرة تزيد عن تسعة أعوام ● مدير لشركة [TGHEZ LTD] - أقدم خدمات تصميم وبرمجة وحماية مواقع الويب وإنشاء تطبيقات الجوال وتوزيع الاستضافات ● شريكًا مؤسسًا لشركة كريتكس كود بأمستردام بهولندا ومهندس مستقل بمنصة المدرسة لتعليم البرمجة بالعربية ● لدي عملاء من 15 دولة حول العالم.

لمعرفة المقالات الجديدة والتواصل معي تابعني عبر:

اختراقات ذات صلة

اكتب تعليقًا

مشترك
إخطار
guest
التقييم
إلى أي درجة أعجبك عملي/مقالتي
0 تعليقات
تعليقات مضمنة
عرض جميع التعليقات

لا يمكنك طباعة شيء من الموقع

Scroll to Top