Avviso di sicurezza Bookly
Se hai ricevuto una mia email che rimanda a questa pagina, è perché il tuo sito sembra
utilizzare una versione di Bookly (il plugin WordPress per la prenotazione di appuntamenti
bookly-responsive-appointment-booking-tool) che rientra nell’intervallo interessato da un
problema di sicurezza noto. Questa pagina spiega di cosa si tratta, come verificare la tua
versione, come aggiornare e l’unico passo successivo che vale la pena compiere.
Il problema è CVE-2026-13395, una SQL injection senza autenticazione nel flusso di prenotazione pubblico del plugin. Riguarda le versioni dalla 11.3 alla 27.7 ed è corretto nella 27.8, pubblicata il 10 luglio 2026. Se usi una versione interessata, aggiorna Bookly alla 27.8 o successiva (la 27.9 è la versione attuale e contiene anch’essa la correzione). Non c’è alcuna indicazione che questo problema venga sfruttato contro alcun sito, né esistono segnalazioni pubbliche di sfruttamento: questa pagina è un avviso precauzionale, non un rapporto di incidente.
A differenza di altri avvisi che ho inviato, questo non dipende da come è configurato il tuo sito. Non c’è alcuna impostazione che debba essere attiva perché la falla sia raggiungibile: il percorso di richiesta interessato è aperto ai visitatori non autenticati, su un’installazione ordinaria. Se la tua versione di Bookly rientra nell’intervallo interessato, conviene aggiornare presto.
È un difetto del plugin, non del nucleo di WordPress. Un WordPress perfettamente aggiornato non ti protegge se il plugin Bookly è a sua volta su una versione interessata.
Questo messaggio è legittimo?
Sì. È un avviso di divulgazione responsabile, in buona fede, da parte di un ricercatore di sicurezza indipendente. Non ti chiedo denaro, password o accesso al sito, e non ho tentato di entrarci, di inviargli qualcosa né di sfruttare alcunché.
Mi sono limitato a guardare file pubblici che il tuo sito serve a qualsiasi visitatore (allo stesso modo in cui la tua home page è pubblica) e ad annotare il numero di versione che il plugin Bookly pubblica. In particolare non ho inviato nulla al tuo modulo di prenotazione né al percorso di richiesta interessato, e questa verifica non tocca i tuoi dati, la tua area di amministrazione o qualsiasi altra parte privata del sito (maggiori dettagli in Cosa ho fatto e cosa non ho fatto).
Se vuoi verificare chi sono, trovi i contatti in fondo a questa pagina e nella pagina Chi sono.
Perché è importante
Bookly è uno dei plugin di prenotazione appuntamenti più diffusi per WordPress: è nella directory ufficiale dal 2014 e funziona su decine di migliaia di siti. Pubblica un modulo di prenotazione sulla parte pubblica del sito, così che i visitatori possano scegliere un servizio, un operatore e una fascia oraria senza bisogno di un account.
Nelle versioni interessate, uno dei valori che quel modulo rimanda indietro, l’identificativo dell’operatore scelto dal visitatore, viene memorizzato esattamente come arriva, senza controlli, e successivamente inserito direttamente in una query al database invece di essere passato come parametro. Chi invia un valore costruito ad arte al posto di un identificativo normale può quindi cambiare il significato di quella query. L’effetto pratico: qualcuno senza account e senza login potrebbe leggere dal database del sito dati che la query non avrebbe mai dovuto restituire, comprese le impronte (hash) delle password degli account WordPress.
Due cose vanno dette con chiarezza, in entrambe le direzioni.
Primo, per tenere le proporzioni: si tratta di un problema di lettura di dati, non di una presa di controllo del server o dell’amministratore. Di per sé non consente di eseguire codice sul server né di accedere all’area di amministrazione. Un hash non è una password: deve ancora essere decifrato prima di diventare un accesso. E non ci sono prove di sfruttamento: l’autorità che ha assegnato il CVE non ha pubblicato alcun punteggio di gravità, il problema non è nel catalogo KEV della CISA statunitense, il suo punteggio di probabilità di sfruttamento (EPSS) non è assegnato e non sono a conoscenza di alcuna segnalazione di sfruttamento.
Secondo, senza minimizzare: né un login, né un nonce, né alcuna impostazione del plugin si frappongono tra un visitatore anonimo e quel percorso. È raggiungibile su un’installazione predefinita del plugin gratuito. Per questo la raccomandazione è aggiornare presto anziché rimandare alla prossima finestra di manutenzione.
Se la mia email citava questo problema, significa che la versione dichiarata dal tuo sito rientra nell’intervallo interessato. Non ho verificato se il tuo sito specifico sia sfruttabile; ho osservato soltanto la versione.
Sono interessato?
Tutto si riduce a una domanda: quale versione di Bookly stai usando? Non devi credermi sulla parola: ci sono due modi per controllare.
Dall’area di amministrazione di WordPress (fonte autorevole):
- Accedi alla bacheca di WordPress (di solito su
tuodominio.it/wp-admin). - Vai su Plugin e poi Plugin installati.
- Individua Bookly, la voce la cui cartella è
bookly-responsive-appointment-booking-tool, e leggi la versione indicata sotto il nome.
Dal manifesto pubblico (senza login): apri nel browser
tuodominio.it/wp-content/plugins/bookly-responsive-appointment-booking-tool/readme.txt. La
riga Stable tag: vicino all’inizio è la versione che la tua installazione dichiara, ed è
lo stesso file pubblico che ho letto io.
Applica poi questa regola, tenendo presente che le versioni si confrontano numericamente, non alfabeticamente:
- Dalla 11.3 alla 27.7: interessata. Aggiorna adesso.
- 27.8 o successiva: già corretta. Include la 27.9, che mantiene la correzione.
- Precedente alla 11.3: non interessata da questo problema. La costruzione insicura della query non esisteva in quelle versioni: gli identificativi degli operatori passavano dal costruttore di query parametrizzate del plugin. Una versione così datata ha molti altri motivi per essere aggiornata, ma questo avviso non è uno di essi.
- Non leggere i numeri di versione come testo. Bookly ha una versione maggiore a due cifre,
quindi l’ordinamento testuale sbaglia due volte:
3.3sembra maggiore di27.8ma è molto più vecchia, e27.10sembra minore di27.7ma è più recente. Confronta numero per numero.
Una nota sui componenti aggiuntivi di Bookly. Le estensioni a pagamento di Bookly (Pro e i
vari pacchetti bookly-addon-*) si installano come plugin separati con numeri di versione
propri, e gli URL dei loro file possono riportare la versione del plugin principale anziché
la propria. La versione che conta per questo avviso è quella del plugin Bookly principale,
ottenuta con uno dei due controlli sopra, non un numero letto dai file di un componente
aggiuntivo.
Se dall’esterno non vedi alcun file di Bookly. Bookly ha un’impostazione che decide se i suoi script e fogli di stile vengano caricati su tutte le pagine o solo su quelle che ospitano un modulo di prenotazione. Se la tua è sulla seconda opzione, dall’esterno si vede molto meno del plugin. Quell’impostazione riguarda soltanto ciò che un visitatore può vedere: non incide sulla presenza né sulla raggiungibilità della falla. Controlla la versione nell’area di amministrazione.
Come aggiornare
La strada più sicura passa da WordPress stesso, previo backup:
- Fai un backup del sito (file e database) prima di modificare qualcosa. La maggior parte degli hosting offre backup con un clic, oppure usa un plugin di backup.
- Nell’amministrazione di WordPress vai su Bacheca e poi Aggiornamenti, oppure su Plugin e poi Plugin installati. Se compare un aggiornamento di Bookly, installalo da lì.
- Se preferisci la riga di comando, WP-CLI fa la stessa cosa:
wp plugin update bookly-responsive-appointment-booking-tool. - Se non compare alcun aggiornamento, puoi scaricare l’ultima versione direttamente dalla pagina del plugin nella directory WordPress.org, Bookly, e aggiornare da Plugin, Aggiungi nuovo plugin, Carica plugin.
- Dopo l’aggiornamento verifica il nuovo numero di versione (27.8 o successiva) con i passaggi sopra e controlla che il modulo di prenotazione e gli appuntamenti esistenti funzionino normalmente.
Se usi i componenti aggiuntivi a pagamento di Bookly, aggiornali insieme al plugin principale: le loro release sono di norma abbinate.
Già che ci sei, vale la pena confermare che il nucleo di WordPress e gli altri plugin siano aggiornati: lo stesso principio vale per tutti.
Dopo l’aggiornamento
Passare alla 27.8 o successiva chiude il problema, e non c’è alcuna indicazione che questa falla sia stata sfruttata da qualche parte, quindi non è implicata alcuna risposta d’emergenza: non devi considerare il sito compromesso né metterlo offline.
Un’azione successiva merita però di essere davvero eseguita, e discende direttamente da ciò che questa falla poteva raggiungere. Poiché gli hash delle password di WordPress erano tra i dati che la query poteva restituire, e poiché un hash catturato prima resta utile a un aggressore anche dopo il tuo aggiornamento, la precauzione sensata è reimpostare le password degli account amministratore una volta applicato l’aggiornamento. Due passi minori l’accompagnano bene:
- Dai un’occhiata agli account amministratore ed editore per verificare che non ce ne siano di sconosciuti, nel modo in cui normalmente riesamineresti gli accessi.
- Rigenera le chiavi segrete e i «salt» di WordPress in
wp-config.php(i nuovi valori sono a un clic dal generatore ufficiale; sostituirli disconnette tutti gli utenti una volta).
Consideralo ordinaria manutenzione di sicurezza, non gestione 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 pubblici
che il tuo sito serve già a ogni visitatore, in particolare il readme.txt pubblico del plugin
Bookly e la tua home page. Non ho avuto accesso alla tua area di amministrazione WordPress,
al database o ad alcuna parte privata del sito.
In particolare, non ho mai inviato nulla al tuo modulo di prenotazione né al percorso di richiesta interessato: nulla è stato inviato, testato o sfruttato. Qui questo pesa più che sulla maggior parte di queste pagine: la falla è una richiesta senza autenticazione verso quel percorso, quindi «non l’ho toccata» è tutta la differenza tra una divulgazione e un’intrusione.
Questa è un’osservazione basata sulla versione: il tuo sito dichiara una versione nell’intervallo interessato. Un sito in quell’intervallo potrebbe essere già protetto per altre vie, ad esempio da un web application firewall o da una correzione retroportata. Questo avviso non afferma che il tuo sito fosse sfruttabile al momento del controllo.
Non ho un webmaster / sono bloccato
Se non sei tu a occuparti del sito, inoltra questa pagina a chi lo fa (il tuo sviluppatore, la tua agenzia o il tuo hosting provider). Riconosceranno subito i passaggi qui sopra.
Se gestisci il sito da solo e ti blocchi, sono felice di indicarti la direzione giusta senza alcun costo. Scrivimi usando i contatti qui sotto.
Contatti
Evan Harris, ricercatore di sicurezza
- Email: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
Mi metto in contatto su questioni come questa solo per aiutare gli operatori a mettere in sicurezza i loro siti. Se preferisci non essere più contattato, basta dirmelo e lo rispetterò.
Riferimenti
Avvisi ufficiali e tracciamento
Fornitore / plugin