
Se sul tuo WordPress è installato il plugin Import and export users and customers (cartella import-users-from-csv-with-meta) e assegni ruoli personalizzati a collaboratori o fornitori, la vulnerabilità CVE-2026-120554 ti riguarda. Un utente già autenticato con un ruolo delegato limitato può diventare amministratore. Non risulta sfruttamento attivo, ma il punteggio è 8.8 e la condizione di partenza è comune nei siti gestiti da più persone. Qui spiego cosa fare.
Cosa è successo: la vulnerabilità CVE-2026-120554 in Import and export users and customers
La descrizione ufficiale parla di una privilege escalation causata da una sequenza di scrittura non atomica nella funzione ACUI_Cron::save_settings(). Quando un utente salva le impostazioni dell'importazione pianificata via cron, il plugin scrive prima quattro opzioni (acui_cron_activated, acui_cron_configured_by, acui_cron_user_id, acui_cron_path_to_file) e solo dopo controlla se chi invia il modulo ha il diritto di assegnare un ruolo. Se il controllo fallisce, la funzione chiama wp_die(), ma le opzioni sono già state salvate. Il percorso del file CSV può quindi essere ripuntato da un utente che non dovrebbe poterlo fare.
Chi è colpito: versioni vulnerabili di Import and export users and customers
- Plugin: Import and export users and customers per WordPress.
- Versioni vulnerabili: tutte fino alla 2.5.11 inclusa.
- Prerequisiti dell'attacco: l'attaccante deve avere un account con un ruolo personalizzato che includa la capability create_users ma non promote_users né edit_users; deve esistere un salvataggio precedente del cron fatto da un amministratore; nessun salvataggio corretto deve intervenire prima del successivo tick del cron, che elabora il file CSV indicato dall'attaccante.
Chi usa il plugin solo con account amministratore e senza ruoli delegati ha una superficie di attacco più ridotta, ma deve comunque aggiornare.
Quanto è grave: punteggio CVSS e sfruttamento attivo
Il punteggio CVSS 3.1 è 8.8 (HIGH), vettore AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H. In pratica: attacco via rete, bassa complessità, servono privilegi bassi (un account autenticato), nessuna interazione da parte di altri utenti, impatto alto su riservatezza, integrità e disponibilità. L'attaccante ottiene un'escalation a Amministratore, cioè il controllo completo del sito: installazione di plugin, modifica di file tramite l'editor, accesso ai dati degli utenti. Al momento la vulnerabilità non risulta nel catalogo CISA KEV e non è noto uno sfruttamento attivo. Questo non è un motivo per rinviare: i plugin WordPress sono tra i bersagli più scansionati e la finestra tra pubblicazione ed exploit è spesso breve.
Come capire se sei esposto: verifica versione, esposizione e log
Versione del plugin
- Da bacheca: Plugin > Plugin installati, cerca Import and export users and customers e leggi la versione.
- Da WP-CLI: wp plugin get import-users-from-csv-with-meta --field=version.
- Da filesystem: apri wp-content/plugins/import-users-from-csv-with-meta/import-users-from-csv-with-meta.php e leggi l'intestazione Version.
Ruoli delegati a rischio
Con WP-CLI: wp role list e poi wp cap list NOME_RUOLO per ogni ruolo personalizzato. Cerca ruoli che hanno create_users ma non promote_users o edit_users. Se usi un plugin di gestione ruoli, controlla lì le stesse capability. Elenca poi chi li possiede: wp user list --role=NOME_RUOLO.
Stato del cron del plugin
Leggi le opzioni coinvolte: wp option get acui_cron_activated, wp option get acui_cron_path_to_file, wp option get acui_cron_user_id, wp option get acui_cron_configured_by. Un percorso del CSV che non riconosci, o un acui_cron_configured_by diverso dall'amministratore che ha impostato l'importazione, è un indicatore da approfondire.
Log e indicatori di compromissione
- wp user list --role=administrator --fields=ID,user_login,user_registered: cerca amministratori nuovi o non riconosciuti.
- Log del web server: richieste POST verso le pagine di amministrazione del plugin da account con ruoli limitati, e chiamate a wp-cron.php in orari anomali.
- File CSV presenti nella cartella uploads o altrove che contengano la colonna del ruolo impostata su administrator.
- Plugin, temi o file PHP comparsi di recente senza una modifica autorizzata.
Come risolvere la vulnerabilità CVE-2026-120554: patch, aggiornamento e rimedio
Il rimedio è aggiornare il plugin a una versione successiva alla 2.5.11. Il numero esatto della versione corretta va verificato sul changelog del plugin nel repository WordPress.org e nel changeset 3775652 linkato nelle fonti, che contiene la modifica al codice. L'aggiornamento si applica da Plugin > Plugin installati > Aggiorna oppure con wp plugin update import-users-from-csv-with-meta. Prima di procedere, fai un backup di file e database. Se la versione aggiornata non fosse ancora disponibile per la tua installazione, applica i workaround della sezione successiva e considera la disattivazione temporanea del plugin.
Cosa fare subito: mitigazioni e hardening
- Aggiorna il plugin appena la versione corretta è verificata. È l'unica misura che chiude davvero il problema.
- Disattiva l'importazione pianificata (cron) del plugin finché non hai aggiornato, se non ti serve. Senza tick del cron l'attacco non si completa.
- Rivedi i ruoli personalizzati: togli create_users a chi non ne ha bisogno reale. Un ruolo che può creare utenti ma non promuoverli è esattamente il profilo sfruttabile.
- Riduci gli account: elimina utenti inattivi e collaboratori che non lavorano più sul sito.
- Ruota le credenziali degli amministratori e attiva l'autenticazione a due fattori, così un eventuale account amministratore creato in modo illecito non resta nascosto a lungo.
- Limita l'accesso a wp-admin per IP o tramite VPN, dove l'organizzazione lo consente.
Questi passaggi rientrano nei controlli periodici che descrivo in sito WordPress sicuro: 10 controlli di sicurezza. Un caso simile di escalation ad amministratore in un plugin l'ho trattato per CVE-2026-120318 in Product Gallery Slider.
Se sospetti una compromissione: incident response e analisi forense
Se trovi un amministratore sconosciuto o un CSV sospetto, non limitarti a cancellare l'utente e ad aggiornare. Un attaccante con privilegi di amministratore ha avuto il tempo di lasciare backdoor nei file o nel database. La sequenza corretta è questa:
- Non sovrascrivere nulla: niente ripristini di backup e niente pulizie frettolose prima di aver conservato le prove.
- Preserva i log del web server, del database e di WordPress, e fai una copia forense dei file e del database prima di qualsiasi intervento.
- Isola il sito: modalità manutenzione o blocco a livello di firewall, mantenendo il server acceso per non perdere dati volatili.
- Cambia tutte le password (WordPress, database, FTP/SFTP, pannello hosting) e invalida le sessioni attive.
- Valuta la notifica al Garante entro 72 ore ai sensi del GDPR se il sito contiene dati personali di clienti o utenti.
Per queste situazioni offro un servizio di incident response con preventivo a prezzo fisso, indicativamente da 1.500 a 6.000 € a seconda dell'estensione, e audit di sicurezza del sito. Chi preferisce prevenire può affidarmi la manutenzione del sito WordPress, che include il monitoraggio degli aggiornamenti dei plugin.
Fonti ufficiali
- Changeset 3775652 del plugin su WordPress.org
- cron.php, riga 49 (versione 2.5.7)
- cron.php, riga 101 (versione 2.5.7)
- cron.php, riga 166 (versione 2.5.7)
- import.php, riga 909 (versione 2.5.7)
- import.php, riga 1104 (versione 2.5.7)
Hai bisogno di una verifica sul tuo sito?
Se non sai quali ruoli sono attivi sul tuo WordPress, se il cron del plugin è configurato o se qualcuno ha già sfruttato questa falla, posso fare la verifica e, se serve, l'analisi forense. Scrivimi dalla pagina preventivo gratuito: rispondo entro 24 ore, anche su WhatsApp.


