Problemy bezpieczeństwa poprawione we wtyczce Smash Balloon Social Post Feed
Opublikowany: 2021-10-29Podczas wewnętrznego audytu wtyczki Smash Balloon Social Post Feed (znanej również jako niestandardowy kanał Facebooka) odkryliśmy, że kilka wrażliwych punktów końcowych AJAX było dostępnych dla wszystkich użytkowników posiadających konto w zagrożonej witrynie, takich jak subskrybenci. Niektóre z tych punktów końcowych mogą umożliwić występowanie ataków Stored Cross-Site Scripting (XSS).
Udany atak Stored XSS może umożliwić przestępcom przechowywanie złośliwych skryptów w każdym poście i na każdej stronie zaatakowanej witryny. Jeśli zalogowany administrator odwiedzi jeden z adresów URL, których dotyczy problem, skrypt może uruchomić się w jego przeglądarce i wykonać czynności administracyjne w jego imieniu, takie jak tworzenie nowych administratorów i instalowanie nieuczciwych wtyczek.
Zgłosiliśmy luki w zabezpieczeniach autorowi tej wtyczki za pośrednictwem poczty e-mail, a oni niedawno wydali wersję 4.0.1, aby je usunąć. Zdecydowanie zalecamy aktualizację do najnowszej wersji wtyczki Smash Balloon Social Post Feed i posiadanie sprawdzonego rozwiązania bezpieczeństwa w swojej witrynie, takiego jak Jetpack Security.
Detale
Nazwa wtyczki: Smash Balloon Social Post Feed
URI wtyczki: https://wordpress.org/plugins/custom-facebook-feed/
Autor: Smash Balloon
URI autora: https://smashballoon.com/
Luki
Przechowywane Cross-Site Scripting za pomocą arbitralnej aktualizacji ustawień
Wersje, których dotyczy problem: < 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()
) );
}
Akcja wp_ajax_cff_save_settings
AJAX, która jest odpowiedzialna za aktualizację wewnętrznych ustawień wtyczki, nie wykonała wcześniej żadnych kontroli uprawnień ani jednorazowych. Umożliwiło to wszystkim zalogowanym użytkownikom wywołanie tej akcji i zaktualizowanie dowolnych ustawień wtyczki.

Niestety jedno z tych ustawień, customJS
, umożliwia administratorom przechowywanie niestandardowego kodu JavaScript w postach i na stronach ich witryny. Zaktualizowanie tego ustawienia to wszystko, czego wymagałoby od złego aktora przechowywanie złośliwych skryptów w witrynie.
Oś czasu
2021-10-14 – Pierwszy kontakt z Smash Balloon
2021-10-18 – Wysyłamy im szczegółowe informacje o tych lukach
21.10.2021 – Udostępniono kanał postów społecznościowych Smash Balloon 4.0.1
Wniosek
Zalecamy sprawdzenie, z której wersji wtyczki Smash Balloon Social Post Feed korzysta Twoja witryna, a jeśli jest starsza niż 4.0.1, zaktualizuj ją tak szybko, jak to możliwe!
W Jetpack ciężko pracujemy, aby zapewnić ochronę Twoich stron internetowych przed tego typu lukami. Zalecamy posiadanie planu bezpieczeństwa dla witryny, który obejmuje skanowanie złośliwych plików i tworzenie kopii zapasowych. Jetpack Security to świetna opcja bezpieczeństwa WordPress, która zapewnia bezpieczeństwo Twojej witrynie i odwiedzającym.
Kredyty
Autor oryginalny: Marc Montpas
Podziękowania dla reszty zespołu Jetpack Scan za opinie, pomoc i poprawki.