Masalah Keamanan Ditambal di Plugin Umpan Pos Sosial Smash Balloon
Diterbitkan: 2021-10-29Selama audit internal plugin Smash Balloon Social Post Feed (juga dikenal sebagai Custom Facebook Feed), kami menemukan beberapa titik akhir AJAX yang sensitif dapat diakses oleh pengguna mana pun yang memiliki akun di situs yang rentan, seperti pelanggan. Beberapa dari titik akhir ini dapat mengaktifkan serangan Stored Cross-Site Scripting (XSS) terjadi.
Serangan XSS Tersimpan yang berhasil dapat memungkinkan pelaku jahat untuk menyimpan skrip berbahaya di setiap pos dan halaman situs yang terpengaruh. Jika administrator yang masuk mengunjungi salah satu URL yang terpengaruh, skrip dapat berjalan di browser mereka dan melakukan tindakan administratif atas nama mereka, seperti membuat administrator baru dan memasang plugin jahat.
Kami melaporkan kerentanan kepada pembuat plugin ini melalui email, dan mereka baru-baru ini merilis versi 4.0.1 untuk mengatasinya. Kami sangat menyarankan Anda memperbarui ke versi terbaru plugin Smash Balloon Social Post Feed dan memiliki solusi keamanan yang mapan di situs Anda, seperti Jetpack Security.
rincian
Nama Plugin: Smash Balloon Social Post Feed
URI Plugin: https://wordpress.org/plugins/custom-facebook-feed/
Pengarang: Smash Balloon
Penulis URI: https://smashballoon.com/
Kerentanan
Skrip Lintas Situs yang Disimpan melalui Pembaruan Pengaturan Sewenang-wenang
Versi yang terpengaruh: < 4.0.1
CVE-ID: CVE-2021-24918
CVSSv3.1: 7.3
CWSS: 80.6
public function cff_save_settings() {
$data = $_POST;
$model = isset( $data[ 'model' ] ) ? $data['model'] : null;
// return if the model is null
if ( null === $model ) {
return;
}
// (...)
$model = (array) \json_decode( \stripslashes( $model ) );
$general = (array) $model['general'];
$feeds = (array) $model['feeds'];
$translation = (array) $model['translation'];
$advanced = (array) $model['advanced'];
// Get the values and sanitize
$cff_locale = sanitize_text_field( $feeds['selectedLocale'] );
$cff_style_settings = get_option( 'cff_style_settings' );
$cff_style_settings[ 'cff_timezone' ] = sanitize_text_field( $feeds['selectedTimezone'] );
$cff_style_settings[ 'cff_custom_css' ] = $feeds['customCSS'];
$cff_style_settings[ 'cff_custom_js' ] = $feeds['customJS'];
$cff_style_settings[ 'gdpr' ] = sanitize_text_field( $feeds['gdpr'] );
$cachingType = sanitize_text_field( $feeds['cachingType'] );
$cronInterval = sanitize_text_field( $feeds['cronInterval'] );
$cronTime = sanitize_text_field( $feeds['cronTime'] );
$cronAmPm = sanitize_text_field( $feeds['cronAmPm'] );
$cacheTime = sanitize_text_field( $feeds['cacheTime'] );
$cacheTimeUnit = sanitize_text_field( $feeds['cacheTimeUnit'] );
// Save general settings data
update_option( 'cff_preserve_settings', $general['preserveSettings'] );
// Save feeds settings data
update_option( 'cff_locale', $cff_locale );
// (...)
// Save translation settings data
foreach( $translation as $key => $val ) {
$cff_style_settings[ $key ] = $val;
}
// Save advanced settings data
$cff_ajax = sanitize_text_field( $advanced['cff_ajax'] );
foreach( $advanced as $key => $val ) {
if ( $key == 'cff_disable_resize' || $key == 'disable_admin_notice' ) {
$cff_style_settings[ $key ] = !$val;
} else {
$cff_style_settings[ $key ] = $val;
}
}
// (...)
update_option( 'cff_ajax', $cff_ajax );
// Update the cff_style_settings option that contains data for translation and advanced tabs
update_option( 'cff_style_settings', $cff_style_settings );
// clear cron caches
$this->cff_clear_cache();
new CFF_Response( true, array(
'cronNextCheck' => $this->get_cron_next_check()
) );
}
Tindakan AJAX wp_ajax_cff_save_settings
, yang bertanggung jawab untuk memperbarui pengaturan dalam plugin, tidak melakukan pemeriksaan hak istimewa atau nonce apa pun sebelum melakukannya. Ini memungkinkan setiap pengguna yang masuk untuk memanggil tindakan ini dan memperbarui pengaturan plugin apa pun.

Sayangnya, salah satu pengaturan ini, customJS
, memungkinkan administrator untuk menyimpan JavaScript khusus di pos dan halaman situs mereka. Memperbarui pengaturan ini adalah semua yang diperlukan aktor jahat untuk menyimpan skrip berbahaya di situs.
Linimasa
2021-10-14 – Kontak awal dengan Smash Balloon
2021-10-18 – Kami mengirimi mereka detail tentang kerentanan ini
2021-10-21 – Smash Balloon Social Post Feed 4.0.1 dirilis
Kesimpulan
Kami menyarankan Anda memeriksa versi plugin Smash Balloon Social Post Feed yang digunakan situs Anda, dan jika kurang dari 4.0.1, perbarui sesegera mungkin!
Di Jetpack, kami bekerja keras untuk memastikan situs web Anda terlindungi dari jenis kerentanan ini. Kami 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.
kredit
Peneliti asli: Marc Montpas
Terima kasih kepada tim Jetpack Scan lainnya atas umpan balik, bantuan, dan koreksinya.