Il plugin Advanced Custom Fields di WordPress presenta una vulnerabilità rilevante che potrebbe esporre i siti Web in cui è attivo ad attacchi basati sulla tecnica XSS (Cross-Site Scripting). Gli utenti che utilizzano questa estensione dovrebbero quindi procedere quanto prima ad un aggiornamento alla versione più recente.
Cos'è Advanced Custom Fields
Advanced Custom Fields è un field builder diffusamente utilizzato che permette di aggiungere facilmente campi ad un modulo. Il tutto tramite un'interfaccia visuale. Di esso esistono due versioni, una gratuita e una premium, a pagamento, chiamata Advanced Custom Fields Pro. Il problema di sicurezza citato in precedenza riguarda entrambe le release ed è stato individuato il 2 maggio da Rafie Muhammad, ricercatore di Patchstack.
Delicious Brains, software house che si occupa dello sviluppo di Advanced Custom Fields dopo averlo acquisito dal suo creatore Elliot Condon, aveva rilasciato una versione patchata dell'estensione ad inizio aprile. La vulnerabilità invece è stata resa pubblica il 5 maggio. Informando gli utenti dell'urgenza di un passaggio tempestivo alla release 6.1.6.
Attualmente le installazione attive sarebbero circa 2 milioni.
Quali sono i rischi?
Per quanto riguarda il livello di allarme, il CVE-2023-30777 nel quale sono descritti i dettagli del problema certifica uno score pari a 6.1 su 10 in termini di gravità. Un attacco XSS consiste appunto nell'iniezione di codice malevolo nelle pagine di un sito Web. Tale codice viene poi eseguito involontariamente dall'utente nel momento in cui apre il sito con il proprio browser Internet.
Nel caso della vulnerabilità di Advanced Custom Fields parliamo di un attacco perpetrato tramite codice JavaScript. Un utente malintenzionato potrebbe sottrarre informazioni sensibili o prendere il posto della vittima sostituendola in alcune azioni.
Tra i maggiori vi è per esempio quello di privilege escalation. Se un utente dovesse essere loggato come amministratore di WordPress l'attaccante ne potrebbe infatti acquisire i privilegi. A livello di codice l'intero problema sarebbe causato da una una mancata sanitizzazione dei parametri a livello del function handler admin_body_class
.