Avviso di sicurezza Ultimate Member
Se hai ricevuto un’email da parte mia che ti rimanda a questa pagina, è perché il tuo sito sembra
eseguire una versione di Ultimate Member (il plugin WordPress per membership e profili utente,
di Ultimate Member, che si trova nei tuoi file in /wp-content/plugins/ultimate-member/) che
rientra nell’intervallo interessato da un noto problema di sicurezza. Questa pagina spiega di cosa
si tratta, come stabilire se riguarda il tuo sito, come leggere la tua versione senza essere
fuorviato e a quale versione aggiornare.
Il problema è CVE-2026-19423, una debolezza di escalation di privilegi non autenticata nei moduli di registrazione e di profilo del plugin. Interessa le versioni di Ultimate Member dalla 2.6.7 alla 2.12.1 ed è corretta nella 2.13.0, pubblicata il 24 agosto 2026. Se stai eseguendo una versione in quell’intervallo, aggiorna Ultimate Member alla 2.13.0 o successiva. Non è stato pubblicato alcun punteggio CVSS per questo problema (è stato assegnato da WPScan senza vettore di gravità), quindi non te ne citerò uno, e non sono a conoscenza di codice di exploit pubblico al riguardo.
Le versioni precedenti alla 2.6.7 non sono interessate da questo problema, e voglio essere preciso su questo punto invece di lasciare che l’avviso suoni più ampio di quanto sia. Non si tratta di una falla presente fin dagli inizi del plugin: il percorso di codice su cui si basa è stato introdotto nella 2.6.7. Un’installazione più vecchia della 2.6.7 non è quindi un bersaglio, e non ho scritto ai siti che ne eseguivano una. Se la tua versione risulta inferiore alla 2.6.7, puoi ignorare questo avviso per questo problema (anche se tenere aggiornato un plugin così indietro vale comunque la pena per altre ragioni).
Prima di tutto, la condizione che decide quanto questo conta per il tuo sito, perché preferisco dirla chiaramente piuttosto che lasciare che l’avviso sembri più grande di quanto sia: questo problema raggiunge solo un sito in cui uno dei tuoi moduli di registrazione o di profilo di Ultimate Member offre alla persona che lo compila una scelta di ruolo, e in cui la registrazione è aperta al pubblico. Una configurazione standard di Ultimate Member non mette un selettore di ruolo sul modulo di registrazione (un amministratore deve aggiungerlo deliberatamente), quindi molti siti che eseguono una versione interessata non sono affatto esposti. Posso leggere la versione del tuo plugin da un file pubblico, ma non posso vedere come sono costruiti i tuoi moduli né se la registrazione è aperta, quindi questo avviso è una segnalazione precauzionale e non un riscontro confermato sul tuo sito.
Una parola sull’urgenza, perché questo è un avviso condizionale. Se nessuno dei tuoi moduli di Ultimate Member permette a un visitatore di scegliere un ruolo, aggiornare è ordinaria manutenzione dei plugin. Se uno lo permette, e la registrazione è aperta, tratta l’aggiornamento come una priorità: in quella configurazione un visitatore che registra un account per sé potrebbe assegnare a quell’account privilegi elevati, potenzialmente fino a un livello equivalente a quello di amministratore, senza alcun accesso preventivo al tuo sito. È un esito serio dove si applica, ed è per questo che scrivo invece di archiviarlo come bassa priorità; ma si applica solo alle condizioni sopra descritte, e l’aggiornamento lo elimina indipendentemente da esse.
Questa è una falla del plugin, non del core di WordPress. Un WordPress completamente aggiornato non ti protegge se il plugin Ultimate Member stesso è su una versione interessata.
Questo messaggio è legittimo?
Sì. Questo è un avviso in buona fede, di divulgazione responsabile, da parte di un ricercatore di sicurezza indipendente. Non ti chiedo denaro, password o accesso al tuo sito, e non ho tentato di violarlo, di registrarmi su di esso o di sfruttare alcunché.
Tutto ciò che ho fatto è stato guardare pagine e file che il tuo sito serve a ogni visitatore (nello stesso modo in cui la tua home page è pubblica) e annotare il numero di versione che il plugin pubblica. In particolare non ho creato un account, non ho inviato alcun modulo di registrazione o di profilo, non ho effettuato l’accesso né inviato nulla alla funzionalità interessata. Nulla di questo controllo tocca i tuoi dati, la tua area di amministrazione o qualsiasi parte privata del tuo sito (maggiori dettagli in Cosa ho fatto e cosa non ho fatto più sotto).
Se vuoi verificare chi sono, consulta i contatti in fondo a questa pagina e la pagina Chi sono.
Perché è importante
Ultimate Member costruisce le pagine di registrazione, accesso e profilo dei membri su moltissimi siti WordPress. Quando qualcuno si registra, il plugin decide quale ruolo debba avere il nuovo account. Su un modulo che offre un selettore di ruolo, dovrebbe accettare solo i ruoli che quel modulo è stato configurato a consentire.
Nelle versioni interessate, quando l’elenco dei ruoli consentiti di un modulo del genere risulta vuoto, il plugin non scarta più il ruolo inviato dal visitatore. Conserva invece quel valore e lo verifica solo rispetto ai ruoli che il tuo sito possiede, non rispetto ai ruoli che il modulo doveva offrire. La conseguenza è che un visitatore che registra un account per sé poteva indirizzarlo verso un ruolo che non avrebbe mai dovuto ricevere, fino a un livello equivalente a quello di amministratore.
Il presupposto, ripetuto perché è la parte più facilmente fraintendibile in entrambe le direzioni: serve un selettore di ruolo su un modulo pubblico, e la registrazione aperta. Nessuna delle due cose è l’impostazione predefinita. Il modulo di registrazione di serie di Ultimate Member non contiene un campo ruolo, quindi su un’installazione tipica non c’è nulla da raggiungere. Dove un amministratore ha aggiunto un campo ruolo e ha lasciato la registrazione aperta, la barriera è alta solo quanto la domanda su chi può inviare quel modulo, che, con la registrazione aperta, è chiunque.
Sto descrivendo tutto al livello di cui un operatore di sito ha bisogno per agire, e non oltre. Non pubblico i dettagli che permetterebbero a qualcuno di riprodurlo, e ti chiederei di non provarci contro il tuo sito né contro quello di qualcun altro. Leggere il tuo numero di versione e controllare i tuoi moduli, come descritto sotto, ti dice tutto ciò che serve per decidere cosa fare.
Se la mia email ha citato questo problema, significa che la versione riportata dal tuo sito rientra nell’intervallo da 2.6.7 a 2.12.1. Non ho testato se il tuo sito in particolare sia sfruttabile, e non posso vedere come sono costruiti i tuoi moduli. Tutto ciò che ho osservato è la versione.
Sono interessato?
Due domande lo decidono, in questo ordine.
Primo: qualche tuo modulo offre un selettore di ruolo, con la registrazione aperta?
Questa è la domanda decisiva, e solo tu puoi rispondere, perché dipende da come sono costruiti i tuoi moduli, cosa che non è visibile dall’esterno. Controllare è del tutto sicuro ed è lo scopo di questa pagina.
- Nella bacheca di WordPress vai su Ultimate Member poi Moduli (Forms), e apri uno alla volta ciascuno dei tuoi moduli di registrazione e di profilo.
- Esamina i campi di ogni modulo alla ricerca di un campo di selezione del ruolo (un menu a tendina o un insieme di opzioni che permette a chi si registra di scegliere un ruolo, a volte etichettato “Ruolo”). Sulla maggior parte dei siti non ce n’è nessuno, perché il modulo di registrazione standard non lo include.
- Verifica se la registrazione è aperta al pubblico: Impostazioni poi Generali poi Iscrizione, la casella “Chiunque può registrarsi” (core di WordPress), e se il tuo modulo di registrazione di Ultimate Member è raggiungibile dai visitatori.
- Se nessun modulo offre un selettore di ruolo, questo problema non raggiunge il tuo sito, nemmeno con una versione interessata; aggiornare resta comunque utile come ordinaria manutenzione.
- Se qualche modulo offre un selettore di ruolo e la registrazione è aperta, tratta l’aggiornamento come una priorità (vedi Come aggiornare). Se non puoi aggiornare subito, il passo provvisorio è rimuovere il campo ruolo da qualsiasi modulo pubblico di registrazione o di profilo, o chiudere la registrazione pubblica, finché non hai aggiornato. La correzione vera è l’aggiornamento.
Per favore non tentare di riprodurre il problema contro il tuo sito né contro quello di altri; non ne hai bisogno per rispondere alla domanda qui sopra.
Secondo: quale versione stai eseguendo?
Non devi credermi sulla parola. Ci sono due modi pubblici per leggere la tua versione e uno all’interno della bacheca, e dovrebbero coincidere.
Dall’area di amministrazione di WordPress (autorevole):
- Accedi alla tua bacheca di WordPress (di solito su
yourdomain.com/wp-admin). - Vai su Plugin poi Plugin installati.
- Trova Ultimate Member, la voce la cui cartella è
ultimate-member, e annota la versione mostrata sotto il suo nome.
Dal manifesto pubblico (senza accesso): apri
yourdomain.com/wp-content/plugins/ultimate-member/readme.txt
in un browser e leggi la riga Stable tag: vicino all’inizio. Questa è la fonte pubblica che
ho letto io. Se quell’indirizzo restituisce un “not found”, prova README.txt in maiuscolo: alcuni
host distinguono tra maiuscole e minuscole e alcuni pacchetti distribuiscono il file con il nome in
maiuscolo.
Dal sorgente della pagina (senza accesso): visualizza il sorgente della tua home page e cerca i fogli di stile propri del plugin esattamente a questi percorsi:
/wp-content/plugins/ultimate-member/assets/css/um-styles.min.css?ver=...
/wp-content/plugins/ultimate-member/assets/css/um-profile.min.css?ver=...
Il numero ?ver= allegato a quei file è la versione propria del plugin. Ultimate Member carica
questi fogli di stile su ogni pagina front-end per impostazione predefinita, che la pagina mostri o
meno un’area membri, quindi la tua home page di solito basta.
La trappola da evitare qui, ed è facile caderci. Ultimate Member distribuisce copie incluse di
diverse librerie di terze parti dentro la propria cartella del plugin, e ciascuna porta un
proprio numero di versione, del tutto estraneo. Il sorgente della tua pagina può mostrare una
libreria di ritaglio immagini a ?ver=1.6.1, Font Awesome a ?ver=6.5.2 o Select2 a ?ver=3.6.2,
tutte su percorsi che iniziano con la cartella del plugin Ultimate Member. Un operatore che cerca
nel sorgente la cartella del plugin e legge il primo valore ?ver= che compare può facilmente
ritrovarsi con uno di quei numeri, che non ha nulla a che fare con la versione del plugin. Leggi la
versione solo dai fogli di stile um- propri del plugin (um-styles, um-profile, um-account e
simili), e ignora ogni altro ?ver= nella pagina. Se dal sorgente non riesci a ottenere alcun
numero leggibile, è una cosa comune e non è segno di nulla: i plugin di caching e ottimizzazione
rimuovono di routine il valore ?ver=; usa allora la readme.txt o la schermata di
amministrazione.
Applica poi questa regola, tenendo presente che le versioni si confrontano numericamente, non alfabeticamente, quindi la 2.12.1 è più recente della 2.6.7 anche se “12” come testo sembra più piccolo di “6”:
- da 2.6.7 a 2.12.1: interessata, fatta salva la domanda sui moduli qui sopra. Aggiorna alla 2.13.0 o successiva.
- 2.13.0 o più recente: già corretta per quanto riguarda questo problema. Prendere l’ultima versione disponibile è la mossa migliore.
- Qualsiasi versione precedente alla 2.6.7: non interessata da questo problema. Aggiornare vale comunque la pena come ordinaria manutenzione.
Come aggiornare
Il plugin è gratuito, ancora pubblicato e mantenuto attivamente, quindi la correzione è un normale aggiornamento. La via più sicura è aggiornare tramite WordPress stesso, dopo aver fatto un backup:
- Esegui il backup del tuo sito (file e database) prima di apportare modifiche. La maggior parte dei provider di hosting offre backup con un clic, oppure usa un plugin di backup per WordPress.
- Nell’amministrazione di WordPress vai su Bacheca poi Aggiornamenti, oppure Plugin poi Plugin installati. Se è elencato un aggiornamento di Ultimate Member, installalo da qui.
- Se preferisci la riga di comando, WP-CLI fa la stessa cosa:
wp plugin update ultimate-member(il comando usa il nome della cartella, non il nome visualizzato). - Se non compare alcun aggiornamento, puoi ottenere l’ultima versione direttamente dalla pagina del plugin nella directory di WordPress.org, Ultimate Member, e aggiornare tramite Plugin poi Aggiungi nuovo plugin poi Carica plugin.
- Dopo l’aggiornamento, conferma il nuovo numero di versione (2.13.0 o successiva) con i passaggi sopra, e registra un account di prova (o controlla i tuoi flussi esistenti di membership e registrazione) per assicurarti che funzionino ancora come previsto.
Già che ci sei, vale la pena confermare che il core di WordPress e gli altri tuoi plugin siano aggiornati, perché lo stesso principio vale per tutti.
Dopo l’aggiornamento: è già stato usato contro di te?
Aggiornare alla 2.13.0 o successiva chiude il problema, e per molti siti quello è l’intero compito. Questa pagina è un avviso precauzionale, non un rapporto di incidente: non ho alcuna visibilità su ciò che è accaduto sul tuo sito, e non ho guardato.
Una verifica successiva vale la pena, ed è condizionata alla stessa domanda sui moduli. Poiché l’esito di questo problema, dove si applica, è un account con privilegi elevati, se il tuo sito aveva un modulo di registrazione o di profilo con un selettore di ruolo mentre la registrazione era aperta e stavi eseguendo una versione interessata, vale la pena confermare che nessuno l’abbia usato per creare un account che non avrebbe dovuto esserci:
- Rivedi i tuoi account utente, specialmente gli amministratori. In Utenti poi Tutti gli utenti, filtra per Amministratore (e per qualsiasi altro ruolo ad alti privilegi) e cerca account che non riconosci, o account creati intorno o dopo il periodo in cui eri su una versione interessata. Presta attenzione agli utenti registrati di recente il cui ruolo è più alto di quello di un membro normale.
- Se trovi un account che non riesci a spiegare, trattalo come tratteresti qualsiasi sospetto accesso non autorizzato: rimuovilo o declassalo, forza una reimpostazione della password per i tuoi amministratori e, se la tua organizzazione ha un team di sicurezza informatica, coinvolgilo.
- Se tutto appare come dovrebbe, e specialmente se nessun modulo offriva un selettore di ruolo in primo luogo, aggiornare da solo è sufficiente.
Per chiarezza sull’inquadramento: questa è un’autoverifica, non una dichiarazione che il tuo sito sia stato attaccato. Questo avviso si basa su un numero di versione, non su alcuna prova di un incidente.
Cosa ho fatto e cosa non ho fatto
Per essere del tutto trasparente sul controllo dietro la mia email: ho letto solo file che il tuo
sito serve già a ogni visitatore, nello specifico la tua home page e gli indirizzi dei fogli di
stile di Ultimate Member scritti al suo interno, e la readme.txt pubblica del plugin dentro
wp-content/plugins/ultimate-member/. Non ho avuto accesso alla tua area di amministrazione di
WordPress, al tuo database, alla configurazione dei tuoi moduli né ad alcuna parte privata del
sito.
In particolare, non ho mai creato un account, mai inviato il tuo modulo di registrazione o di profilo, mai effettuato l’accesso, né mai inviato nulla alla funzionalità interessata. Nulla è stato inviato, testato o sfruttato. Qui questo conta, perché l’invio di una registrazione è vicino all’azione esatta cui questo problema si riferisce, quindi “non l’ho toccato” è l’intera differenza tra una divulgazione e un’intrusione.
Sto inoltre deliberatamente evitando di pubblicare i dettagli che aiuterebbero qualcuno ad agire su questo problema. La descrizione sopra si ferma al livello di cui un operatore di sito ha bisogno, e non collego alcun codice proof-of-concept.
Questa è un’osservazione basata sulla versione: il tuo sito riporta una versione nell’intervallo da 2.6.7 a 2.12.1. Non è un’affermazione che il tuo sito fosse sfruttabile nel momento in cui ho controllato. Poiché questo problema dipende da come sono costruiti i tuoi moduli e dal fatto che la registrazione sia aperta (cose che non posso vedere), un sito nell’intervallo interessato può benissimo non essere affatto esposto, e un sito in quell’intervallo può essere protetto separatamente con altri mezzi, come un web application firewall o una correzione retroportata. Se hai già aggiornato, o hai già rimediato in altro modo, non serve alcuna azione, e mi scuso per il disturbo.
Non ho un webmaster / Sono bloccato
Se non sei tu la persona che mantiene il sito, inoltra questa pagina a chi lo fa (il tuo sviluppatore web, l’agenzia o il provider di hosting). Riconosceranno rapidamente i passaggi sopra.
Se mantieni il sito da solo e ti blocchi, sarò felice di aiutarti a orientarti senza alcun costo. Contattami usando i recapiti qui sotto.
Contatti
Evan Harris, ricercatore di sicurezza
- Email: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
Contatto gli operatori riguardo a problemi come questo esclusivamente per aiutarli a mettere in sicurezza i loro siti. Se preferisci non essere ricontattato, fammelo sapere e lo rispetterò.
Riferimenti
Avvisi ufficiali e tracciamento
Produttore / plugin