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.
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.
Questo plugin è veramente scritto con i piedi se pensi che è stato bucato per la seconda volta in un anno!
https://www.zdnet.com/article/wordpress-sites-under-attack-as-hacker-group-tries-to-create-rogue-admin-accounts/
Oramai la qualità dei prodotti di codecanyon.net è veramente scaduta, sia con i temi che con i plugin. Io ho avuto un problema gravissimo con un sito woocommerce per colpa del tema Jupiter che nel marzo 2018 non aveva rilasciato un aggiornamento importantissimo per WooCommerce e che rallentava tutto il sito, rendendolo innavigabile. Ci sono voluti 3 mesi e mail da tutti gli utenti incavolati.
Envato deve necessariamente rivedere il team di controllo dei suoi prodotti se vuole stare al passo con i nuovi builder altrimenti imploderà offrendo prodotti non revisionati. Se uno vuole usare i suoi prodotti per fare businness (es ecommerce) secondo me è inaccettabile non avere un team di revisione interno del codice. Capisco che sono incentrati più sul marketing, lasciando il compito agli sviluppatori di controllare da soli il loro software.
Fortunatamente esistono alternative fuori dal loro store e anche migliori, come ad esempio CSS Hero https://csshero.org che sia come codice che come performance non ha paragoni come editor CSS per WordPress.
Poi certo gli attacchi sono sempre esistiti per carità, ma cavolo 2 in meno di 4 mesi è assurdo.