Sicherheitsprobleme im Smash Balloon Social Post Feed Plugin gepatcht
Veröffentlicht: 2021-10-29Während einer internen Prüfung des Smash Balloon Social Post Feed-Plug-ins (auch bekannt als benutzerdefinierter Facebook-Feed) stellten wir fest, dass mehrere sensible AJAX-Endpunkte für alle Benutzer mit einem Konto auf der anfälligen Website, wie z. B. Abonnenten, zugänglich waren. Einige dieser Endpunkte könnten Stored Cross-Site Scripting (XSS)-Angriffe ermöglichen.
Ein erfolgreicher Stored-XSS-Angriff könnte Angreifern ermöglichen, bösartige Skripte auf jedem Beitrag und jeder Seite der betroffenen Website zu speichern. Wenn ein angemeldeter Administrator eine der betroffenen URLs besucht, kann das Skript in seinem Browser ausgeführt werden und in seinem Namen administrative Aktionen ausführen, wie z. B. neue Administratoren erstellen und betrügerische Plugins installieren.
Wir haben die Schwachstellen dem Autor dieses Plugins per E-Mail gemeldet, und sie haben kürzlich Version 4.0.1 veröffentlicht, um sie zu beheben. Wir empfehlen dringend, dass Sie auf die neueste Version des Smash Balloon Social Post Feed-Plugins aktualisieren und eine etablierte Sicherheitslösung auf Ihrer Website haben, wie z. B. Jetpack Security.
Einzelheiten
Plugin-Name: Smash Balloon Social Post Feed
Plugin-URI: https://wordpress.org/plugins/custom-facebook-feed/
Autor: Ballon zerschlagen
Autor-URI: https://smashballoon.com/
Die Schwachstellen
Gespeichertes Cross-Site-Scripting über willkürliche Einstellungsaktualisierung
Betroffene Versionen: < 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()
) );
}
Die AJAX-Aktion wp_ajax_cff_save_settings
, die für die Aktualisierung der inneren Einstellungen des Plugins verantwortlich ist, hat zuvor keine Berechtigungs- oder Nonce-Prüfungen durchgeführt. Dies ermöglichte es allen angemeldeten Benutzern, diese Aktion aufzurufen und alle Einstellungen des Plugins zu aktualisieren.

Leider ermöglicht eine dieser Einstellungen, customJS
, Administratoren, benutzerdefiniertes JavaScript in den Beiträgen und Seiten ihrer Website zu speichern. Ein Angreifer hätte nur diese Einstellung aktualisieren müssen, um bösartige Skripte auf der Website zu speichern.
Zeitleiste
14.10.2021 – Erstkontakt mit Smash Balloon
18.10.2021 – Wir senden ihnen Details zu diesen Schwachstellen
21.10.2021 – Smash Balloon Social Post Feed 4.0.1 wird veröffentlicht
Fazit
Wir empfehlen Ihnen, zu überprüfen, welche Version des Smash Balloon Social Post Feed-Plugins Ihre Website verwendet, und wenn es weniger als 4.0.1 ist, aktualisieren Sie es so schnell wie möglich!
Bei Jetpack arbeiten wir hart daran sicherzustellen, dass Ihre Websites vor dieser Art von Schwachstellen geschützt sind. Wir empfehlen, dass Sie einen Sicherheitsplan für Ihre Website haben, der das Scannen von bösartigen Dateien und Sicherungen umfasst. Jetpack Security ist eine großartige WordPress-Sicherheitsoption, um sicherzustellen, dass Ihre Website und Besucher sicher sind.
Kredite
Ursprünglicher Forscher: Marc Montpas
Danke an den Rest des Jetpack-Scan-Teams für Feedback, Hilfe und Korrekturen.