
CVE-2026-120518 è una vulnerabilità critica (CVSS 9.1) nel plugin BuddyPress XProfile Image Field per WordPress. Tutte le versioni fino alla 3.1.0 inclusa permettono a un visitatore non autenticato di cancellare file arbitrari sul server, incluso wp-config.php. Serve solo che il sito abbia la registrazione aperta e un campo immagine nel modulo di iscrizione. Se usi questo plugin, qui trovi come verificare l'esposizione e cosa fare adesso.
Cosa è successo: la vulnerabilità CVE-2026-120518 in BuddyPress XProfile Image Field
Il plugin aggiunge a BuddyPress un campo profilo di tipo immagine. Durante la registrazione, il valore del parametro field_N_hidden viene salvato così com'è nei metadati dell'iscrizione in attesa. Quando l'iscrizione viene attivata, la funzione bpxp_image_field_update_on_user_activation() costruisce un percorso a partire da quel valore e chiama unlink(), cioè cancella il file. Non c'è risoluzione con realpath(), nessun controllo che il percorso resti dentro la cartella delle immagini profilo e nessuna lista di estensioni ammesse. Inviando un file da zero byte e un percorso costruito ad arte, il valore viene risolto rispetto alla document root del sito. Si tratta di una cancellazione di file arbitrari (path traversal su unlink) raggiungibile senza credenziali.
Chi è colpito: versioni vulnerabili di BuddyPress XProfile Image Field
- Plugin: BuddyPress XProfile Image Field per WordPress.
- Versioni vulnerabili: tutte fino alla 3.1.0 inclusa.
- Condizioni necessarie: registrazione utenti aperta e un campo profilo di tipo immagine presente nel modulo di iscrizione.
Se la registrazione è chiusa o il campo immagine non è nel gruppo di campi mostrato in fase di signup, il percorso di attacco descritto non è utilizzabile. Il plugin resta comunque vulnerabile e va aggiornato appena disponibile una versione corretta.
Quanto è grave: punteggio CVSS e sfruttamento attivo
Il punteggio è 9.1 CRITICAL, vettore CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H. In pratica: attacco via rete, bassa complessità, nessun privilegio richiesto, nessuna interazione dell'utente. L'impatto diretto è su integrità e disponibilità (cancellazione di file). La riservatezza non è colpita direttamente, ma cancellando wp-config.php WordPress rientra nella procedura di installazione: un attaccante può ricollegare il sito a un proprio database e arrivare a esecuzione di codice remoto (RCE). Da lì il server è di fatto suo.
Al momento la vulnerabilità non risulta nel catalogo CISA KEV, quindi non è documentato uno sfruttamento attivo. Per un plugin WordPress con exploit senza autenticazione questa condizione può cambiare in fretta.
Come capire se sei esposto: verifica versione, esposizione e log
Versione del plugin
- Bacheca WordPress: Plugin > Plugin installati, cerca BuddyPress XProfile Image Field e leggi la versione.
- Con WP-CLI: wp plugin list oppure wp plugin get buddypress-xprofile-image-field.
- Da file: nel file wp-content/plugins/buddypress-xprofile-image-field/bp-xprofile-image-field.php l'intestazione riporta la versione.
Condizioni di attacco
- Impostazioni > Generali: controlla se Chiunque può registrarsi è attivo. In BuddyPress la registrazione aperta rende raggiungibile la pagina /register/ da chiunque.
- Utenti > Campi profilo: verifica se nel gruppo di campi usato in fase di registrazione esiste un campo di tipo immagine.
- Prova ad aprire la pagina di registrazione da un browser esterno, senza login: se il modulo appare, sei esposto.
Log e indicatori di compromissione
- Nei log del web server cerca richieste POST a /register/ con il parametro field_N_hidden contenente sequenze come ../ o percorsi assoluti.
- Nella tabella wp_signups controlla le iscrizioni in attesa: il campo meta non deve contenere percorsi di file ma solo nomi di immagine.
- Verifica che esistano ancora wp-config.php, .htaccess e i file di core; confronta l'integrità con wp core verify-checksums e wp plugin verify-checksums --all.
- Se il sito mostra all'improvviso la schermata di installazione di WordPress, trattalo come compromesso.
Come risolvere la vulnerabilità: patch, aggiornamento e rimedio
La descrizione ufficiale indica come vulnerabili tutte le versioni fino alla 3.1.0 inclusa. La disponibilità e il numero di una versione corretta vanno verificati sulla pagina del plugin nel repository WordPress.org e sull'advisory del produttore. Se è pubblicata una release successiva alla 3.1.0 che risolve il problema, aggiornala da Plugin > Plugin installati o con wp plugin update buddypress-xprofile-image-field. Se non è disponibile una versione corretta, non lasciare il plugin attivo: applica i workaround della sezione seguente. Dopo l'aggiornamento ripeti i controlli sui log, perché la patch non annulla eventuali danni già fatti.
Cosa fare subito: mitigazioni e hardening
- Disattiva il plugin finché non è disponibile una versione corretta. È la misura più efficace e immediata.
- Se non puoi disattivarlo, rimuovi il campo immagine dal modulo di registrazione (spostalo fuori dal gruppo di campi del signup).
- Chiudi la registrazione aperta se non ti serve davvero, da Impostazioni > Generali.
- Svuota o controlla le iscrizioni in attesa in wp_signups: un'iscrizione malevola già salvata si attiva al momento della conferma.
- Verifica i permessi dei file: il processo PHP non dovrebbe poter cancellare wp-config.php o i file di core. Dove possibile, wp-config.php in sola lettura per l'utente del web server.
- Fai un backup completo (file e database) prima di qualsiasi intervento e conservane una copia fuori dal server.
- Se usi un WAF, aggiungi una regola che blocchi richieste a /register/ con ../ o percorsi assoluti nei parametri.
Per i controlli di base su un'installazione WordPress rimando alla mia guida sul sito WordPress sicuro in 10 controlli. Un caso con meccanica simile l'ho descritto per la cancellazione di file in Ultra Addons for Contact Form 7.
Se sospetti una compromissione: incident response e analisi forense
Se trovi file mancanti, richieste anomale nei log o la schermata di installazione, non rimettere semplicemente online un backup e non ripulire a mano. Prima:
- Non spegnere il server e non cancellare nulla: i log e lo stato attuale sono le prove.
- Metti il sito in manutenzione o isolalo a livello di rete, così l'attaccante non prosegue.
- Esporta e conserva i log del web server, di PHP e del database, con data e hash.
- Fai una copia forense dei file e del database prima del ripristino: serve per capire cosa è stato fatto e per eventuali denunce o richieste assicurative. Il metodo è lo stesso che descrivo nell'articolo sulla copia forense del computer.
- Ruota tutte le credenziali: amministratori WordPress, database, FTP/SSH, chiavi API e salt in wp-config.php.
- Se sono coinvolti dati personali, valuta la notifica al Garante entro 72 ore come previsto dal GDPR.
Nel mio studio un intervento di incident response parte da 1.500 € e arriva a 6.000 € a seconda dell'estensione, sempre con preventivo a prezzo fisso.
Fonti ufficiali
- Scheda NVD di riferimento
- Codice del plugin 3.1.0, riga 488
- Codice del plugin 3.1.0, riga 494
- Codice del plugin 3.1.0, riga 507
- Codice del plugin 3.1.0, riga 526
- Codice del plugin 3.1.0, riga 587
Hai BuddyPress con registrazione aperta? Facciamo il controllo
Se gestisci una community su WordPress e non sai se il campo immagine è esposto, posso verificare versione, configurazione e log e, se serve, intervenire sul sito o eseguire l'analisi forense. Lavoro con clienti in tutta Italia, di persona a Varese, Como e Milano e da remoto altrove. Richiedi un preventivo gratuito con risposta entro 24 ore o scrivimi dalla pagina contatti, anche su WhatsApp.


