Un grave difetto di sicurezza è stato rivelato nel plugin WPML per WordPress, utilizzato per la gestione di siti multilingua, che potrebbe permettere a utenti autenticati di eseguire codice malevolo da remoto in determinate circostanze.
Va notato che meno di un mese fa c’è stato un altro problema su un altro plugin di WordPress, vedasi il caso LiteSpeed.
La vulnerabilità del plugin WPML
La vulnerabilità, identificata come CVE-2024-6386 (punteggio CVSS: 9.9), riguarda tutte le versioni del plugin precedenti alla 4.6.13, rilasciata il 20 agosto 2024.
Il 19 giugno 2024 è stata ricevuta una segnalazione per una vulnerabilità Remote Code Execution tramite Twig Server-Side Template Injection in WPML, un plugin WordPress con oltre 1.000.000 di installazioni attive e questa vulnerabilità può essere sfruttata per eseguire codice in remoto da utenti autenticati con accesso all’editor di post.
Questo problema, dovuto alla mancanza di convalida e sanitizzazione degli input, consente a un attaccante autenticato, con accesso a livello di Collaboratore o superiore, di eseguire codice sul server.
Qual è lo scopo del plugin WPLM
WPML è un plugin popolare utilizzato per creare siti WordPress multilingue, con oltre un milione di installazioni attive, come appena accennato.
Il ricercatore di sicurezza stealthcopter, che ha scoperto e segnalato la vulnerabilità CVE-2024-6386, ha dichiarato che il problema risiede nella gestione dei shortcode del plugin, utilizzati per inserire contenuti nei post, come audio, immagini e video.
“Nello specifico, il plugin utilizza modelli Twig per il rendering dei contenuti negli shortcode, ma non riesce a sanitizzare correttamente l’input, portando a un’iniezione di template lato server (SSTI)“, ha spiegato il ricercatore.
L’SSTI, come suggerisce il nome, si verifica quando un attaccante riesce a utilizzare la sintassi nativa del template per iniettare un payload malevolo in un template web, che viene poi eseguito sul server. Un attaccante potrebbe quindi sfruttare questa vulnerabilità per eseguire comandi arbitrari, permettendo loro di prendere il controllo del sito.
“Questo aggiornamento di WPML risolve una vulnerabilità di sicurezza che potrebbe consentire agli utenti con determinati permessi di eseguire azioni non autorizzate“, hanno affermato i manutentori del plugin, OnTheGoSystems. “È improbabile che questo problema si verifichi in scenari reali. Richiede che gli utenti abbiano permessi di modifica su WordPress e che il sito utilizzi una configurazione molto specifica.”
Fortunatamente il plugin è stato patchato il 20 agosto 2024, pertanto si raccomanda agli utenti del plugin di applicare le ultime patch per mitigare le potenziali minacce.
Analisi tecnica della falla su WPML
Il plugin fornisce uno shortcode ([wpml_language_switcher]) che può essere utilizzato per aggiungere un selettore di lingua personalizzato con un template Twig; il codice richiama la funzione callback() nella classe WPML_LS_Shortcodes, che a sua volta richiama la funzione render() nella classe WPML_LS_Public_API.
Di seguito il codice di questo plugin:
Questa funzione esegue il rendering del template Twig fornito nel contenuto dello shortcode ma non riesce a sanificarlo, rendendo possibile l’iniezione di codice dannoso in un template eseguito sul server.
Twig ha funzioni e filtri predefiniti che in ultima analisi eseguono funzioni PHP specifiche. Ad esempio, il filtro filter usa la funzione PHP array_filter(), che può essere usata per chiamate di funzioni discutibili:
Come tutte le vulnerabilità legate all’esecuzione di codice in modalità remota, questa può portare alla compromissione completa del sito tramite l’uso di webshell e altre tecniche.
Ora, sono stato molto sintetico nello spiegare questo problema (sapendo che non tutti si intendono di codici JavaScript, Python, C++ e linguaggi di programmazione in generale; ma per farla breve, ti basta sapere che pochissime righe di codice sbagliate possono mandare in malora veramente tutto e permettere a criminali informatici di sfruttare tali errori di codice.