Skip to main content
WordPress

La vulnerabilità espone oltre 4 milioni di siti che utilizzano WPBakery

Il 27 luglio, il nostro team di Threat Intelligence ha scoperto una vulnerabilità in WPBakery , un plug-in di WordPress installato su oltre 4,3 milioni di siti.

Questo difetto ha consentito agli aggressori autenticati con autorizzazioni a livello di collaboratore o superiori di inserire JavaScript dannoso nei post.

Inizialmente abbiamo contattato il team del plugin il 28 luglio 2020 tramite il loro forum di supporto. Dopo aver ricevuto la conferma del canale di supporto appropriato, abbiamo divulgato tutti i dettagli il 29 luglio 2020. Hanno confermato la vulnerabilità e hanno riferito che il loro team di sviluppo aveva iniziato a lavorare su una correzione il 31 luglio 2020. Dopo un lungo periodo di corrispondenza con il team di sviluppo dei plugin e un numero di patch insufficienti, una patch sufficiente finale è stata rilasciata il 24 settembre 2020.

Consigliamo vivamente di aggiornare immediatamente alla versione più recente, la 6.4.1. Mentre lo fai, ti consigliamo anche di verificare di non avere alcun collaboratore non attendibile o account utente autore sul tuo sito WordPress.

Gli utenti di Wordfence Premium sono protetti dagli exploit mirati a queste vulnerabilità dal 28 luglio 2020. Gli utenti gratuiti di Wordfence hanno ricevuto la stessa protezione il 28 agosto 2020.

Descrizione:
Plugin interessato da XSS (Stored Stored Cross-Site Scripting) autenticato
Slug plugin WPBakery : js_composer
Versioni interessate: <= 6.4
ID CVE: in sospeso.
Punteggio CVSS: 6.4
Versione completamente patchata: 6.4.1

Il page builder di WPBakery è il page builder più popolare per WordPress. È uno strumento molto facile da usare che consente ai proprietari dei siti di creare pagine personalizzate utilizzando le funzionalità di trascinamento della selezione.

Sfortunatamente, il plug-in è stato progettato con un difetto che potrebbe dare agli utenti con ruoli a livello di contributore e autore la possibilità di inserire JavaScript dannoso in pagine e post. Questo difetto ha anche dato a questi utenti la possibilità di modificare i post di altri utenti. Il plugin ha disabilitato esplicitamente qualsiasi controllo di filtro HTML post predefinito nella saveAjaxFefunzione utilizzando kses_remove_filters();. Ciò significava che qualsiasi utente con accesso al builder WPBakery poteva inserire HTML e JavaScript ovunque in un post utilizzando il page builder.

public function saveAjaxFe() {
vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie();

$post_id = intval( vc_post_param( 'post_id' ) );
if ( $post_id > 0 ) {
ob_start();
// Update post_content, title and etc.
// post_title
// content
// post_status
if ( vc_post_param( 'content' ) ) {
$post = get_post( $post_id );
$post->post_content = stripslashes( vc_post_param( 'content' ) );
$post_status = vc_post_param( 'post_status' );
$post_title = vc_post_param( 'post_title' );
if ( null !== $post_title ) {
$post->post_title = $post_title;
}
kses_remove_filters();
remove_filter( 'content_save_pre', 'balanceTags', 50 );

Inoltre, mentre WPBakery prevedeva che solo le pagine create con il page builder di WPBakery fossero modificabili tramite il builder, gli utenti potevano accedere all’editor fornendo i parametri e i valori corretti per qualsiasi post. Questo potrebbe essere classificato come un bug generale così come un problema di sicurezza, ed è ciò che ha reso possibile a collaboratori ed editori di utilizzare l’wp_ajax_vc_saveazione AJAX e la saveAjaxFefunzione corrispondente per iniettare JavaScript dannoso sui propri post e sui post di altri utenti.

Il plugin aveva anche funzionalità onclick personalizzate per i pulsanti. Ciò ha permesso a un utente malintenzionato di iniettare JavaScript dannoso in un pulsante che sarebbe stato eseguito con un clic del pulsante. Inoltre, collaboratore e di livello autore gli utenti sono stati in grado di utilizzare la vc_raw_js, vc_raw_htmle il pulsante utilizzando custom_onclick codici brevi per aggiungere dannoso JavaScript per i messaggi.

Tutto ciò significava che un utente con accesso a livello di collaboratore poteva inserire script nei post che sarebbero stati eseguiti in seguito una volta che qualcuno accedeva alla pagina o faceva clic su un pulsante, utilizzando vari metodi diversi. Poiché gli utenti a livello di collaboratore richiedono l’approvazione prima della pubblicazione, è molto probabile che un amministratore visualizzi una pagina contenente JavaScript dannoso creato da un utente malintenzionato con accesso a livello di collaboratore. Eseguendo JavaScript dannoso nel browser dell’amministratore, sarebbe possibile per un utente malintenzionato creare un nuovo utente amministrativo dannoso o iniettare una backdoor, tra molte altre cose.

Nell’ultima versione di WPBakery, gli utenti di livello inferiore non dispongono più di unfiltered_htmlfunzionalità per impostazione predefinita, tuttavia, gli amministratori possono concedere tale autorizzazione se lo desiderano. Inoltre, gli utenti senza i privilegi appropriati non possono più modificare i post di altri utenti, accedere al generatore di pagine se non consentito o utilizzare shortcode che potrebbero consentire l’iniezione di JavaScript dannoso.

Dual Account Control

Una strategia per mantenere il tuo sito protetto dagli attacchi Cross-Site Scripting contro account con privilegi più elevati consiste nell’utilizzare due account. Il controllo dell’account doppio utilizza due account per qualsiasi utente che potrebbe richiedere capacità amministrative. Questo può essere fatto utilizzando un account utente con funzionalità amministrative per attività relative all’amministratore come l’aggiunta di nuovi utenti e plug-in e un altro account utente con funzionalità di editor utilizzato per esaminare e approvare i post di autori e collaboratori.

In questo modo si limiterà l’impatto che potrebbe avere una vulnerabilità di Cross-Site Scripting. Quando si accede a una pagina come amministratore del sito, qualsiasi JavaScript dannoso inserito da un utente malintenzionato può utilizzare solo funzioni amministrative come l’aggiunta di un nuovo utente o la modifica di un file del tema per infettare ulteriormente il sito. Utilizzando un account utente con solo funzionalità di editor durante la modifica, la creazione e il controllo dei post creati da utenti di livello inferiore, un tentativo di sfruttamento XSS potrebbe essere limitato, poiché un utente malintenzionato non può aggiungere con successo nuovi account amministratore o modificare temi tramite un editor account.

Soprattutto nei casi in cui molti utenti possono accedere ad azioni autenticate, si consiglia di utilizzare un account utente amministrativo solo quando è necessario eseguire funzioni amministrative sul proprio sito.

Tempistica di divulgazione

27 luglio 2020 – Scoperta iniziale della vulnerabilità. Sviluppiamo una regola del firewall e la spostiamo nella fase di test.
28 luglio 2020 – La regola del firewall è sufficientemente testata e rilasciata agli utenti premium. Facciamo il nostro primo contatto con il team di plugin di WPBakery.
29 luglio 2020 – Il team di WPBakery risponde confermando la casella di posta appropriata e inviamo i dettagli di divulgazione completi.
21 agosto 2020 – Dopo un po ‘di follow-up viene rilasciata una patch iniziale.
26 agosto 2020 – Facciamo sapere al team di WPBakery che mancano alcuni problemi minori aggiuntivi che richiedono una risoluzione.
28 agosto 2020 – Gli utenti gratuiti di Wordfence ricevono la regola del firewall.
2 settembre 2020 –Seguiamo per vedere se il team di WPBakery ha ricevuto la nostra ultima email.
9 settembre 2020 – Il team di WPBakery conferma di aver ricevuto la nostra e-mail e sta lavorando per ottenere il rilascio di una patch aggiuntiva.
11 settembre 2020 –  Il team di WPBakery rilascia una patch aggiuntiva che non è del tutto sufficiente.
Dall’11 al 23 settembre 2020 – Lavoriamo insieme più strettamente per ottenere una patch adeguata.
24 settembre 2020 – Patch sufficiente finale rilasciata nella versione 6.4.1.

Conclusione

Nel post di oggi, abbiamo descritto in dettaglio un difetto nel plugin WPBakery che forniva agli utenti autenticati la possibilità di iniettare JavaScript dannoso nei post utilizzando il generatore di pagine WPBakery. Oltre a ciò, abbiamo fornito alcune informazioni su come proteggersi dalle vulnerabilità a livello di collaboratore e autore. Questo difetto è stato completamente corretto nella versione 6.4.1. Si consiglia agli utenti di eseguire immediatamente l’aggiornamento all’ultima versione disponibile, che è la versione 6.4.1 al momento di questa pubblicazione.

Poiché WPBakery è un plug-in premium spesso incluso come generatore di pagine con numerosi temi premium, potrebbe essere necessario ricontrollare che eventuali aggiornamenti siano disponibili con l’acquisto del tema. La verifica del numero di versione del plug-in nella dashboard dei plug-in dovrebbe avvisarti della versione installata sul tuo sito.

I siti che utilizzano Wordfence Premium sono protetti dagli attacchi che tentano di sfruttare questa vulnerabilità dal 28 luglio 2020. I siti che utilizzano ancora la versione gratuita di Wordfence hanno ricevuto la stessa protezione il 28 agosto 2020.

Se conosci un amico o un collega che utilizza questo plug-in sul proprio sito, ti consigliamo vivamente di inoltrare loro questo avviso per aiutare a mantenere i loro siti protetti poiché si tratta di un aggiornamento di sicurezza significativo.

Leave a Reply

Rispettiamo la tua privacy!

Su questo sito utilizziamo strumenti nostri o di terze parti che memorizzano piccoli file (cookie) sul tuo dispositivo. I cookie sono normalmente usati per permettere al sito di funzionare correttamente (cookie tecnici), per generare statistiche di uso/navigazione (cookie statistici). Abilitando questi cookie, ci aiuti ad offrirti una esperienza migliore con noi.

Privacy & Cookie Policy