WordPress Plugin Visual CSS Style Editor: importante bug di sicurezza scoperto e risolto?

WordPress Plugin Visual CSS Style Editor: importante bug di sicurezza scoperto e risolto?

WordPress Plugin Visual CSS Style Editor: importante bug di sicurezza scoperto e risolto?

In WordPress è molto comodo aggiungere delle nuove funzioni grazie all’utilizzo dei plugin, questi però devono essere scelti con cognizione di causa e con un po’ di esperienza per non incappare in siti bucati che ormai sono totalmente irrecuperabili (se non abbiamo un backup).

È stato scoperto in questo mese un bug che ha afflitto il plugin Visual CSS Style Editor e che per questo è stato rimosso dal repository ufficiale di WordPress per poi essere “riattivato” solo qualche giorno fa. Il plugin presenta circa 30 mila installazioni.

A seguire il dettaglio della problematica riscontrata sul Visual CSS Style Editor, anche chiamato yellow-pencil-visual-theme-customizer.

Il bug di Visual CSS Style Editor

La vulnerabilità riscontrata è presente nel file yellow-pencil.php all’interno del plugin. La funzione yp_remote_get_first() viene richiamata ad ogni caricamento di pagina e controlla se è stato impostato un parametro di richiesta specifico yp_remote_get. In caso affermativo, il plugin aumenta i privilegi dell’utente a quello di amministratore.

  function yp_remote_get_first ( ) {
     if ( isset ( $ _GET [ "yp_remote_get" ] ) ) {
         wp_set_current_user ( 1 ) ;
         show_admin_bar ( false ) ;
     }
 } 

In questo modo gli utenti non autenticati possono eseguire azioni, ad esempio modificare opzioni, che erano destinate esclusivamente agli amministratori del sito.

Un controllo per la falsificazione di richieste manca nella funzione seguente che avrebbe reso molto più difficile sfruttare questa vulnerabilità:

function yp_option_update(){
    // Can?
    if(current_user_can("edit_theme_options") == true){
          // Import the data
         if(isset($_POST['yp_json_import_data'])){
             $data = trim( strip_tags ( $_POST['yp_json_import_data'] ) );
             if(empty($data) == false){
                yp_import_data($data);

Il plugin utilizza la funzione yp_option_update () da eseguire durante admin_init, il che significa che può essere eseguito anche se non è stato effettuato l’accesso a WordPress:

add_action ( "admin_init" , "yp_option_update" ) ;

Questa funzione sembra sicura poiché limita l’accesso al suo codice agli utenti con la funzionalità “edit_theme_options”, che normalmente solo gli amministratori hanno:

function yp_option_update ( ) {
	// Can?
	 if ( current_user_can ( "edit_theme_options" ) == true

Ma quando si sfrutta la suddetta vulnerabilità di escalation dei privilegi, la richiesta viene vista come proveniente da qualcuno con tale capacità. Il prossimo codice che viene eseguito prende l’input dell’utente nel formato dell’input POST “yp_json_import_data” e lo passa alla funzione yp_import_data ():

if ( isset ( $ _POST [ 'yp_json_import_data' ] ) ) {
	 $ data = trim ( strip_tags ( $ _POST [ 'yp_json_import_data' ] ) ) ;
		 if ( vuoto ( $ data ) == falso ) {
			 yp_import_data ( $ data ) ;

Questa funzione viene utilizzata dall’utente per specificare le opzioni di WordPress da modificare:

  function yp_import_data ( $ json ) {
     $ json = yp_stripslashes ( $ json ) ;
     if ( empty ( $ json ) ) {
     return false;
     }
     $ array = json_decode ( $ json , true ) ;
     foreach ( $ array come $ nodi ) {
         foreach ( $ nodi come $ chiave = & gt ; valore $ ) {
             $ valore = yp_decode ( valore $ ) ;
             // Se post meta
             if ( strstr ( $ key , '._' ) ) {
                 $ keyArray = explode ( "." , $ key ) ;
                 $ postID = $ keyArray [ 0 ] ;
                 $ metaKey = $ keyArray [ 1 ] ;
                 if ( ! add_post_meta ( $ postID , $ metaKey , $ value , true ) ) {
                     update_post_meta ( $ postID , $ metaKey , $ valore ) ;
                 }
            } else { // else option
                 if ( ! update_option ( $ key , $ value ) ) { 

Conclusione

Al momento il plugin Visual CSS Style Editor è stato aggiornato ma non sappiamo se la problematica sia stata risolta in quanto l’aggiornamento è stato da poco rilasciato.

WordPress Plugin Visual CSS Style Editor aggiornato

WordPress Plugin Visual CSS Style Editor aggiornato

Purtroppo non si hanno molte altre notizie in merito alla problematica che ha afflitto il plugin Visual CSS Style Editor quindi fino a quando la situazione non sarà chiarita del tutto, raccomandiamo di non utilizzare più questo plugin e se lo state ancora utilizzando, disattivatelo.

Fonte 1, Fonte 2

One Response

  1. robertoLeva 01/09/2019

Rispondi all'articolo

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *


The reCAPTCHA verification period has expired. Please reload the page.