Avviso di sicurezza Events Manager
Se avete ricevuto un’email da parte mia che vi indirizza a questa pagina, è perché il vostro
sito sembra utilizzare una versione di Events Manager (il plugin WordPress
events-manager, di Marcus Sykes / wp-events-plugin.com) 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, 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 Events Manager è configurato per accettare prenotazioni da visitatori che non hanno effettuato l’accesso (la “No-User-Account Booking Mode” del plugin, ovvero la modalità di prenotazione senza account utente). Se il vostro sito richiede un account per prenotare, o non accetta affatto prenotazioni, è 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 la configurazione delle vostre prenotazioni, quindi questo avviso è una segnalazione precauzionale, non un riscontro confermato riguardo al vostro sito.
Il problema è CVE-2026-12987, una PHP object injection non autenticata che porta a una SQL injection nel sistema di prenotazione del plugin. L’autorità che ha assegnato il CVE non ha pubblicato un punteggio di gravità; Patchstack valuta lo stesso riscontro 8,8 su 10 (elevato). Interessa le versioni dalla 4.0.0 alla 7.3.6 ed è corretto nella 7.3.7. Se utilizzate una versione interessata, aggiornate Events Manager alla 7.3.7 o successiva (è consigliata l’attuale release 7.4.x). Non vi è alcuna indicazione che questo problema venga sfruttato in alcun luogo.
Una precisazione sull’urgenza, perché questo è l’avviso più condizionale che abbia inviato: quanto conti per voi dipende quasi interamente da quell’impostazione delle prenotazioni. Se le prenotazioni sul vostro sito richiedono un accesso, l’aggiornamento è ordinaria manutenzione del plugin. Se il vostro sito accetta prenotazioni pubbliche da visitatori senza un account, vi invito a trattare l’aggiornamento come una priorità: in quella configurazione, la falla potrebbe permettere a un aggressore di leggere dati dal database del vostro sito (come gli hash delle password e le chiavi segrete) senza effettuare l’accesso. 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 Events Manager 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 Events Manager pubblica nel suo file pubblico readme.txt.
In particolare non ho toccato il sistema di prenotazione, 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
Events Manager è uno dei più longevi plugin di eventi e prenotazioni per WordPress (nella directory ufficiale dal 2008, con circa 6,3 milioni di download nel corso della sua esistenza). Permette a un sito di pubblicare eventi e di raccogliere prenotazioni per essi, comprese, se l’operatore lo sceglie, le prenotazioni da visitatori che non hanno un account utente sul sito.
Nelle versioni interessate, quando un visitatore invia una prenotazione, i campi di registrazione personalizzati che compila vengono memorizzati come dati della prenotazione, e quando il plugin in seguito carica quella prenotazione scompatta (“deserializza”) i dati memorizzati senza limitare ciò che possono contenere. Un input appositamente creato può quindi essere trasformato in oggetti di programma a scelta dell’aggressore (PHP object injection), e una catena di tali oggetti raggiunge una query al database non correttamente parametrizzata (SQL injection). L’effetto pratico su un sito nella configurazione vulnerabile: un aggressore senza account e senza alcun accesso potrebbe leggere dati arbitrari dal database del sito, come gli hash delle password e le chiavi segrete utilizzate da WordPress.
Due elementi aiutano a mantenere la giusta prospettiva. Primo, il punto di ingresso è il modulo di prenotazione pubblico, quindi l’attacco funziona solo dove un visitatore che non ha effettuato l’accesso può inviare una prenotazione. È esattamente la precondizione della “No-User-Account Booking Mode”: se la prenotazione sul vostro sito richiede un account, il percorso vulnerabile non è raggiungibile da visitatori anonimi, e il vostro sito è molto probabilmente non esposto nemmeno con una versione interessata. Secondo, si tratta di un problema di lettura di dati, non di una presa di controllo del server o di un amministratore: non permette di per sé a un aggressore di eseguire codice sul vostro server o di accedere alla vostra area di amministrazione. E, per ripeterlo chiaramente, non vi è alcuna indicazione di sfruttamento attivo: non figura nel catalogo delle Known Exploited Vulnerabilities di CISA, il suo punteggio di probabilità di sfruttamento (EPSS) è prossimo allo zero, 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 è configurato il vostro sistema di prenotazione; 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: accettate prenotazioni da visitatori che non hanno effettuato l’accesso? Questa è la domanda decisiva, e solo voi potete rispondere.
- Se le prenotazioni sul vostro sito richiedono un account o un accesso, o il vostro sito non accetta affatto prenotazioni, è molto probabile che non siate esposti, anche con una versione interessata. L’aggiornamento è comunque consigliato, come ordinaria manutenzione.
- Se il vostro sito accetta prenotazioni da visitatori senza un account (Events Manager la chiama “No-User-Account Booking Mode”), il problema vi riguarda e dovreste aggiornare tempestivamente.
- Per verificare: nell’amministrazione di WordPress, cercate nelle impostazioni delle prenotazioni di Events Manager l’opzione che consente prenotazioni senza un account utente. Oppure provate semplicemente dall’esterno: aprite una delle vostre pagine evento in una finestra di navigazione privata e verificate se potete compilare e inviare una prenotazione senza che vi venga chiesto di effettuare l’accesso.
Secondo: quale versione state utilizzando? Non dovete credermi sulla parola.
Dal manifesto pubblico (nessun accesso necessario): aprite
yourdomain.com/wp-content/plugins/events-manager/readme.txt in un browser. Notate che questo
plugin distribuisce il suo readme come readme.txt (in minuscolo). La riga Stable
tag: vicino all’inizio è la versione segnalata dalla vostra installazione, ed è lo stesso
file pubblico che ho letto.
Dall’area di amministrazione di WordPress (se avete accesso):
- Accedete alla vostra bacheca di WordPress (di solito all’indirizzo
yourdomain.com/wp-admin). - Andate su Plugin poi Plugin installati.
- Cercate Events Manager e annotate la versione indicata sotto il suo nome.
Applicate poi questa regola, tenendo presente che le versioni si confrontano numericamente, non alfabeticamente:
- Dalla 4.0.0 alla 7.3.6: potenzialmente interessata (soggetta alla domanda sulla modalità di prenotazione di cui sopra), aggiornate subito.
- 7.3.7 o successiva: già corretta. Questo include la 7.3.7.1, che è stata una correzione successiva per una regressione di visualizzazione non legata alla sicurezza, non una seconda release di sicurezza: sia la 7.3.7 sia la 7.3.7.1 contengono la correzione di sicurezza. Include inoltre tutte le attuali release 7.4.x.
- Precedente alla 4.0: non interessata da questo problema. La gestione vulnerabile dei dati delle prenotazioni è comparsa per la prima volta nella riscrittura 4.0 del plugin, quindi le release precedenti non la contengono (una release così vecchia ha molte altre ragioni per essere aggiornata, ma questo avviso non è una di esse).
- Non lasciatevi ingannare dall’ordinamento testuale: Events Manager utilizzava stringhe di
versione come
5.99912prima della 6.0 (il fornitore è rimasto bloccato su uno schema di numerazione5.999.xfino alla 6.0), e una versione simile è una vecchia release inferiore alla 6.0, all’interno dell’intervallo interessato, non qualcosa di più recente della 7. Confrontate ogni numero uno alla volta invece di leggere la versione come testo.
Come aggiornare
Il percorso più sicuro è aggiornare tramite WordPress stesso, effettuando prima un backup:
- 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.
- Nell’amministrazione di WordPress, andate su Bacheca poi Aggiornamenti, oppure Plugin poi Plugin installati. Se un aggiornamento di Events Manager è elencato, installatelo da qui.
- Se preferite la riga di comando, WP-CLI fa la stessa cosa:
wp plugin update events-manager. - Se nessun aggiornamento compare, potete scaricare l’ultima versione direttamente dalla pagina del plugin nella directory WordPress.org, Events Manager, e aggiornare tramite Plugin poi Aggiungi nuovo plugin poi Carica plugin.
- Dopo l’aggiornamento, confermate il nuovo numero di versione (7.3.7 o successiva; è consigliata l’attuale release 7.4.x) seguendo i passaggi sopra, e verificate che le vostre pagine di eventi e prenotazioni 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 7.3.7 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 sulle prenotazioni. Se il vostro sito accettava prenotazioni pubbliche da visitatori senza un account mentre utilizzava una versione interessata, allora i dati che la falla poteva raggiungere (i contenuti del database, compresi gli hash delle password e le chiavi segrete) erano almeno teoricamente leggibili, anche se non vi è alcuna prova che qualcuno lo abbia fatto. In tal caso, due precauzioni di routine sono sensate:
- Date un’occhiata alle prenotazioni recenti e all’attività degli utenti alla ricerca di qualcosa che sembri anomalo, nel modo consueto in cui esaminereste l’attività del sito.
- Ruotate i segreti che risiedono nel vostro database e nella vostra configurazione: rigenerate
le chiavi segrete e i salt di WordPress in
wp-config.php(i nuovi valori sono a un clic di distanza dal generatore di chiavi segrete ufficiale; sostituirli disconnette tutti gli utenti una volta), e cambiate la password del vostro database tramite il pannello di hosting. Poiché gli hash delle password erano tra i dati teoricamente leggibili, far aggiornare la password agli account amministratore è un ulteriore passaggio ragionevole.
Trattatelo come ordinaria manutenzione di sicurezza, non come risposta a un incidente. Se le prenotazioni sul vostro sito hanno sempre richiesto un accesso (o non accettate prenotazioni), 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 prenotazione 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 le prenotazioni richiedono un accesso, o se non vengono accettate prenotazioni), 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
- Email: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
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