Se avete ricevuto un’email da parte mia che vi indirizza a questa pagina, è perché il vostro sito sembra utilizzare una versione di ProfilePress (il plugin WordPress che viene ancora distribuito con il nome di cartella wp-user-avatar, di ProperFraction) che rientra nell’intervallo interessato da un problema di sicurezza noto. Questa pagina spiega qual è il problema, come stabilire se riguarda il vostro sito e come aggiornare.

Prima di ogni altra cosa, una nota sul nome, perché genera confusione: questo plugin è nato come WP User Avatar e ha mantenuto quello slug attraverso il suo cambio di marchio, quindi nei vostri file risiede in /wp-content/plugins/wp-user-avatar/, mentre l’amministrazione di WordPress lo elenca con il suo nome attuale completo, “Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress”. WP User Avatar e ProfilePress sono lo stesso plugin. Si tratta di un plugin WordPress dall’inizio alla fine.

Prima di ogni altra cosa, il fatto più importante riguardo a questo avviso: una versione nell’intervallo interessato non significa di per sé che il vostro sito sia esposto. Il problema descritto di seguito è sfruttabile solo quando ProfilePress pubblica un modulo di registrazione front-end che include un campo di selezione del ruolo (lo shortcode [reg-select-role], o il campo “reg-select-role” nel costruttore di moduli drag-and-drop), configurato in un modo particolare. Se il vostro sito non offre l’auto-registrazione pubblica, o i vostri moduli di registrazione non consentono al visitatore di scegliere un ruolo, è molto probabile che non sia esposto nemmeno con una versione interessata. Posso leggere la versione del vostro plugin da file pubblici, ma non posso vedere i vostri moduli di registrazione, quindi questo avviso è una segnalazione precauzionale, non un riscontro confermato riguardo al vostro sito.

Il problema è CVE-2026-12497, un’escalation di privilegi non autenticata nel gestore della registrazione front-end del plugin (CWE-269, gestione impropria dei privilegi). L’autorità che ha assegnato il CVE non ha pubblicato un punteggio di gravità, e non ne invento uno; ciò che conta per valutarlo è che è non autenticata ma limitata a un ruolo diverso da quello di amministratore, e subordinata alla configurazione di registrazione descritta sopra. Interessa le versioni dalla 3.0.0 alla 4.16.17 ed è corretto nella 4.16.18. Se utilizzate una versione interessata, aggiornate ProfilePress alla 4.16.18 o successiva (l’attuale release è la 4.16.19). Non vi è alcuna indicazione che questo problema venga sfruttato in alcun luogo.

Una precisazione sull’urgenza, perché questo è un avviso condizionale: quanto conti per voi dipende quasi interamente dal fatto che pubblichiate o meno quel tipo di modulo di registrazione. Se non offrite l’auto-registrazione pubblica con un campo di selezione del ruolo, l’aggiornamento è ordinaria manutenzione del plugin. Se lo fate, vi invito a trattare l’aggiornamento come una priorità: in quella configurazione, la falla potrebbe permettere a un visitatore non autenticato di registrarsi con un ruolo superiore a quello offerto dal vostro modulo (per esempio Editore o Autore). Anche in tal caso, questa pagina è una segnalazione precauzionale, non un rapporto di incidente, e non è implicata alcuna risposta di emergenza.

Questa è una falla di un plugin, non del nucleo di WordPress. Un WordPress pienamente aggiornato non vi protegge se il plugin ProfilePress stesso utilizza una versione interessata.

Questo messaggio è legittimo?

Sì. Si tratta di un avviso in buona fede, secondo il principio della divulgazione responsabile, da parte di un ricercatore di sicurezza indipendente. Non vi chiedo denaro, password o accesso al vostro sito, e non ho tentato di introdurmi in esso, di caricare alcunché o di sfruttare alcunché.

Tutto ciò che ho fatto è stato esaminare file pubblicamente visibili che il vostro sito fornisce a ogni visitatore (allo stesso modo in cui la vostra homepage è pubblica) e annotare il numero di versione che il plugin pubblica nel suo file pubblico readme.txt. In particolare non ho toccato il sistema di registrazione, e nulla di questo controllo tocca i vostri dati, la vostra area di amministrazione o alcuna parte privata del vostro sito (maggiori dettagli sotto Cosa ho fatto e cosa non ho fatto più avanti).

Se desiderate verificare chi sono, consultate i recapiti in fondo a questa pagina e la pagina Informazioni.

Perché è importante

ProfilePress è un plugin di abbonamento, registrazione utenti e accesso molto diffuso per WordPress (circa 100.000 installazioni attive). Tra le altre cose, permette a un sito di pubblicare moduli di registrazione front-end affinché i visitatori possano creare i propri account, e tali moduli possono facoltativamente includere un campo che consente al visitatore di scegliere quale ruolo debba avere il suo nuovo account.

Nelle versioni interessate, il gestore della registrazione determina i ruoli che un modulo offre e i ruoli che accetterà utilizzando due diversi frammenti di codice. Per alcune configurazioni valide del campo del ruolo, il codice che calcola i ruoli accettati non riesce a leggere l’elenco dei ruoli del modulo e ripiega silenziosamente sull’accettare qualsiasi ruolo modificabile (ossia qualsiasi ruolo tranne amministratore). Poiché inoltre non vi è alcun nonce a proteggere il gestore della registrazione pubblico, un visitatore non autenticato può inviare un ruolo di propria scelta ed essere registrato con un ruolo superiore a quello offerto dal modulo, per esempio Editore o Autore anziché il previsto Sottoscrittore.

Due elementi aiutano a mantenere la giusta prospettiva. Primo, l’impatto ha un tetto ben preciso: il plugin esclude esplicitamente il ruolo di amministratore da ciò che la registrazione può assegnare, quindi si tratta di un problema di escalation di privilegi limitato a un ruolo diverso da quello di amministratore, non di una presa di controllo del server, di un amministratore o di un’esecuzione di codice remoto. Secondo, il punto di ingresso è un modulo di registrazione pubblicato con un campo di selezione del ruolo, quindi il problema raggiunge solo i siti configurati in quel modo; un sito senza auto-registrazione pubblica, o i cui moduli non consentono a un visitatore di scegliere un ruolo, è molto probabilmente non esposto nemmeno con una versione interessata. E, per ripeterlo chiaramente, non vi è alcuna indicazione di sfruttamento attivo: non figura nel catalogo delle Known Exploited Vulnerabilities di CISA, e non sono a conoscenza di alcuna segnalazione di sfruttamento.

Se la mia email ha citato questo problema, significa che la versione segnalata dal vostro sito rientra nell’intervallo interessato. Non ho verificato se il vostro sito in particolare sia sfruttabile, e non posso vedere come sono configurati i vostri moduli di registrazione; tutto ciò che ho osservato è che il sito segnala una versione interessata.

Il mio sito è interessato?

A deciderlo sono due domande, in quest’ordine.

Primo: pubblicate un modulo di registrazione di ProfilePress che consente a un visitatore di scegliere un ruolo? Questa è la domanda decisiva, e solo voi potete rispondere.

  • Se il vostro sito non offre l’auto-registrazione pubblica, o i suoi moduli di registrazione non includono un campo di selezione del ruolo (lo shortcode [reg-select-role] o il campo “reg-select-role” nel costruttore di moduli), è molto probabile che non siate esposti, anche con una versione interessata. L’aggiornamento è comunque consigliato, come ordinaria manutenzione.
  • Se il vostro sito effettivamente pubblica un modulo di registrazione front-end con un campo di selezione del ruolo, il problema vi riguarda e dovreste aggiornare tempestivamente.
  • Per verificare: nell’amministrazione di WordPress, controllate i vostri moduli di registrazione di ProfilePress alla ricerca di un campo del ruolo, oppure aprite una delle vostre pagine di registrazione in una finestra di navigazione privata e verificate se a un visitatore che non ha effettuato l’accesso viene offerta una scelta del ruolo dell’account.

Secondo: quale versione state utilizzando? Non dovete credermi sulla parola, e per questo plugin la versione viene segnalata in modo affidabile.

Dall’area di amministrazione di WordPress (fonte autorevole):

  1. Accedete alla vostra bacheca di WordPress (di solito all’indirizzo yourdomain.com/wp-admin).
  2. Andate su Plugin poi Plugin installati.
  3. Individuate la voce elencata come “Paid Membership Plugin … ProfilePress” (la sua cartella è wp-user-avatar) e annotate la versione mostrata sotto il suo nome. Questa è la versione realmente installata.

Dal manifesto pubblico (nessun accesso necessario): aprite yourdomain.com/wp-content/plugins/wp-user-avatar/readme.txt in un browser. La riga Stable tag: vicino all’inizio è la versione segnalata dalla vostra installazione, ed è lo stesso file pubblico che ho letto.

Un piccolo avviso se siete il tipo di persona che legge i numeri di versione dagli URL degli asset: giudicate la versione dal valore ?ver= del frontend.min.js o frontend.min.css proprio del plugin, che è la versione di ProfilePress. Non leggetela dal select2/select2.min.css incluso, il cui ?ver= (per esempio 7.0.2) è la versione propria della libreria select2 e non ha nulla a che vedere con la versione del plugin.

Applicate poi questa regola, tenendo presente che le versioni si confrontano numericamente, non alfabeticamente:

  • Dalla 3.0.0 alla 4.16.17: potenzialmente interessata (soggetta alla domanda sul modulo di registrazione di cui sopra), aggiornate subito.
  • 4.16.18 o successiva: già corretta. Questo include l’attuale release 4.16.19.
  • Precedente alla 3.0: non interessata da questo problema. Il gestore della registrazione vulnerabile è comparso per la prima volta con il cambio di marchio a ProfilePress 3.0; la precedente linea “WP User Avatar” 1.x e 2.x, dedicata ai soli avatar, non aveva la funzione di registrazione e non la contiene. (In pratica, essenzialmente ogni installazione attuale è una release 4.16.x.)

Come aggiornare

Il percorso più sicuro è aggiornare tramite WordPress stesso, effettuando prima un backup:

  1. Eseguite il backup del vostro sito (file e database) prima di apportare modifiche. La maggior parte dei provider di hosting offre backup con un clic, oppure usate un plugin di backup per WordPress.
  2. Nell’amministrazione di WordPress, andate su Bacheca poi Aggiornamenti, oppure Plugin poi Plugin installati. Se un aggiornamento di ProfilePress è elencato, installatelo da qui.
  3. Se preferite la riga di comando, WP-CLI fa la stessa cosa: wp plugin update wp-user-avatar (il comando usa il nome della cartella, wp-user-avatar).
  4. Se nessun aggiornamento compare, potete scaricare l’ultima versione direttamente dalla pagina del plugin nella directory WordPress.org, ProfilePress, e aggiornare tramite Plugin poi Aggiungi nuovo plugin poi Carica plugin.
  5. Dopo l’aggiornamento, confermate il nuovo numero di versione (4.16.18 o successiva; l’attuale release è la 4.16.19) seguendo i passaggi sopra, e verificate che le vostre pagine di registrazione e accesso funzionino normalmente.

Già che ci siete, vale la pena confermare che il nucleo di WordPress e i vostri altri plugin siano aggiornati, poiché lo stesso principio vale per tutti.

Dopo l’aggiornamento

L’aggiornamento alla 4.16.18 o successiva chiude il problema, e per la maggior parte dei siti questo è l’intero compito. Non vi è alcuna indicazione che questa falla sia stata sfruttata in alcun luogo, quindi non è implicata alcuna risposta di emergenza: non dovete trattare il vostro sito come compromesso né metterlo offline.

Vale la pena considerare un ulteriore passaggio, condizionato dalla stessa domanda sulla registrazione. Se il vostro sito pubblicava un modulo di registrazione di ProfilePress con un campo di selezione del ruolo mentre utilizzava una versione interessata, allora era almeno teoricamente possibile che un visitatore si fosse registrato con un ruolo superiore a quello previsto, anche se non vi è alcuna prova che qualcuno lo abbia fatto. In tal caso, una singola precauzione di routine è sensata:

  • Date un’occhiata alle vostre registrazioni utenti recenti alla ricerca di qualsiasi account creato con un ruolo insolitamente elevato (per esempio un Editore o Autore che non riconoscete), nel modo consueto in cui esaminereste l’attività del sito, e correggete o rimuovete qualsiasi cosa che sembri fuori posto.

Trattatelo come ordinaria manutenzione di sicurezza, non come risposta a un incidente. Se non offrite l’auto-registrazione pubblica con un campo di selezione del ruolo, il solo aggiornamento è sufficiente.

Cosa ho fatto e cosa non ho fatto

Per essere pienamente trasparente riguardo al controllo dietro la mia email: ho letto soltanto file pubblici che il vostro sito fornisce già a ogni visitatore, nello specifico il file pubblico readme.txt del plugin e la vostra homepage. Non ho avuto accesso alla vostra area di amministrazione di WordPress, al vostro database o ad alcuna parte privata del sito. In particolare, non ho toccato il percorso di registrazione vulnerabile, e non ho testato né sfruttato alcunché.

Si tratta di un’osservazione basata sulla versione: il vostro sito segnala una versione nell’intervallo interessato. Poiché questo problema dipende dalla configurazione, un sito in quell’intervallo potrebbe non essere affatto esposto (se non offre l’auto-registrazione pubblica, o se i suoi moduli non hanno un campo di selezione del ruolo), e potrebbe anche essere già mitigato con altri mezzi, per esempio un web application firewall. Questo avviso non è un’affermazione che il vostro sito fosse sfruttabile nel momento in cui ho effettuato il controllo.

Non ho un webmaster / sono bloccato

Se non siete la persona che gestisce il sito, inoltrate questa pagina a chi lo fa (il vostro sviluppatore web, la vostra agenzia o il vostro provider di hosting). Riconosceranno rapidamente i passaggi sopra.

Se gestite il sito da soli e vi bloccate, sarò lieto di aiutarvi a orientarvi nella direzione giusta senza alcun costo. Contattatemi usando i recapiti sottostanti.

Contatti

Evan Harris, Ricercatore di sicurezza

Contatto gli operatori riguardo a problemi come questo unicamente per aiutarli a mettere in sicurezza i loro siti. Se preferite non essere contattati di nuovo, ditemelo e rispetterò la vostra richiesta.

Riferimenti

Avvisi ufficiali e tracciamento

Fornitore / plugin