Notificare de securitate Bookly
Dacă ați primit de la mine un e-mail care trimite către această pagină, este pentru că site-ul
dumneavoastră pare să folosească o versiune de Bookly (pluginul WordPress de programări
bookly-responsive-appointment-booking-tool) care se încadrează în intervalul afectat de o
problemă de securitate cunoscută. Această pagină explică despre ce este vorba, cum vă verificați
versiunea, cum actualizați și care este singurul pas ulterior care merită făcut.
Este vorba despre CVE-2026-13395, o injecție SQL fără autentificare în fluxul public de programare al pluginului. Sunt afectate versiunile 11.3 până la 27.7 și este remediată în 27.8, lansată pe 10 iulie 2026. Dacă folosiți o versiune afectată, actualizați Bookly la 27.8 sau mai nouă (27.9 este versiunea curentă și conține de asemenea remedierea). Nu există niciun indiciu că această problemă ar fi exploatată împotriva vreunui site și nici vreun raport public de exploatare undeva: această pagină este o informare preventivă, nu un raport de incident.
Spre deosebire de alte notificări trimise de mine, aceasta nu depinde de configurația site-ului. Nu trebuie activată nicio setare pentru ca defectul să fie accesibil: calea de cerere afectată este deschisă vizitatorilor neautentificați, pe o instalare obișnuită. Dacă versiunea dumneavoastră de Bookly se află în intervalul afectat, actualizarea merită făcută în curând.
Este un defect al pluginului, nu al nucleului WordPress. Un WordPress complet actualizat nu vă protejează dacă pluginul Bookly în sine se află pe o versiune afectată.
Este legitim acest mesaj?
Da. Este o notificare de bună-credință, în spiritul dezvăluirii responsabile, din partea unui cercetător independent în securitate. Nu vă cer bani, parole sau acces la site și nu am încercat să pătrund în el, să îi trimit ceva sau să exploatez ceva.
Am consultat doar fișiere publice pe care site-ul dumneavoastră le servește oricărui vizitator (la fel cum pagina de start este publică) și am notat numărul de versiune pe care îl publică pluginul Bookly. În mod specific, nu am trimis nimic către formularul dumneavoastră de programare și nici către calea de cerere vizată de problemă, iar această verificare nu atinge datele dumneavoastră, zona de administrare sau vreo parte privată a site-ului (mai multe la Ce am făcut și ce nu am făcut).
Dacă doriți să verificați cine sunt, găsiți datele de contact la finalul acestei pagini și pe pagina Despre.
De ce contează
Bookly este unul dintre cele mai răspândite pluginuri de programări pentru WordPress: se află în directorul oficial din 2014 și funcționează pe zeci de mii de site-uri. Publică pe partea publică a site-ului un formular de programare, prin care vizitatorii aleg un serviciu, un membru al personalului și un interval orar, fără a avea nevoie de cont.
În versiunile afectate, una dintre valorile pe care acel formular le trimite înapoi, identificatorul membrului de personal ales de vizitator, este stocată exact așa cum sosește, fără verificare, iar ulterior este introdusă direct într-o interogare a bazei de date în loc să fie transmisă ca parametru. Cine trimite o valoare special construită în locul unui identificator obișnuit poate astfel schimba sensul acelei interogări. Efectul practic: cineva fără cont și fără autentificare ar putea citi din baza de date a site-ului dumneavoastră date pe care interogarea nu ar fi trebuit niciodată să le returneze, inclusiv amprentele criptografice (hash-urile) parolelor conturilor dumneavoastră WordPress.
Două lucruri merită spuse clar, în ambele direcții.
Întâi, pentru păstrarea proporțiilor: este o problemă de citire a datelor, nu o preluare a serverului sau a contului de administrator. Prin ea însăși nu permite rularea de cod pe serverul dumneavoastră și nici autentificarea în zona de administrare. Un hash nu este o parolă; mai trebuie spart pentru a deveni acces. Și nu există dovezi de exploatare: autoritatea care a alocat CVE-ul nu a publicat un scor de gravitate, problema nu figurează în catalogul KEV al agenției americane CISA, scorul său de probabilitate a exploatării (EPSS) nu este atribuit, iar eu nu cunosc niciun raport de exploatare.
Apoi, fără a o minimaliza: nici autentificarea, nici un token nonce, nici vreo setare a pluginului nu stau între un vizitator anonim și acea cale. Este accesibilă pe o instalare implicită a pluginului gratuit. De aceea recomandarea este să actualizați în curând, nu să amânați până la următoarea fereastră de mentenanță.
Dacă e-mailul meu a citat această problemă, înseamnă că versiunea raportată de site-ul dumneavoastră se încadrează în intervalul afectat. Nu am testat dacă site-ul dumneavoastră anume este exploatabil; am observat doar versiunea.
Sunt afectat?
Totul se rezumă la o întrebare: ce versiune de Bookly folosiți? Nu trebuie să mă credeți pe cuvânt; există două moduri de verificare.
Din zona de administrare WordPress (sursa de referință):
- Autentificați-vă în panoul WordPress (de obicei
domeniuldvs.ro/wp-admin). - Mergeți la Pluginuri, apoi Pluginuri instalate.
- Găsiți Bookly, intrarea al cărei folder este
bookly-responsive-appointment-booking-tool, și notați versiunea afișată sub numele său.
Din manifestul public (fără autentificare): deschideți în browser
domeniuldvs.ro/wp-content/plugins/bookly-responsive-appointment-booking-tool/readme.txt. Linia
Stable tag: din apropierea începutului este versiunea pe care o raportează instalarea
dumneavoastră, și este același fișier public pe care l-am citit eu.
Aplicați apoi această regulă, ținând cont că versiunile se compară numeric, nu alfabetic:
- 11.3 până la 27.7: afectată. Actualizați acum.
- 27.8 sau mai nouă: deja remediată. Aici intră și 27.9, care păstrează remedierea.
- Mai veche decât 11.3: neafectată de această problemă. Construcția nesigură a interogării nu exista în acele versiuni: identificatorii de personal treceau prin constructorul de interogări parametrizate al pluginului. O versiune atât de veche are multe alte motive să fie actualizată, dar această notificare nu este unul dintre ele.
- Nu citiți numerele de versiune ca text. Bookly are un număr major din două cifre, așa că
ordonarea textuală greșește de două ori:
3.3pare mai mare decât27.8, deși este mult mai vechi, iar27.10pare mai mic decât27.7, deși este mai nou. Comparați număr cu număr.
O notă despre extensiile Bookly. Extensiile plătite Bookly (Pro și diversele pachete
bookly-addon-*) se instalează ca pluginuri separate, cu propriile numere de versiune, iar
adresele fișierelor lor pot purta versiunea pluginului principal în locul celei proprii.
Versiunea care contează pentru această notificare este cea a pluginului principal Bookly,
obținută prin oricare dintre cele două verificări de mai sus, nu un număr citit de pe fișierele
unei extensii.
Dacă din exterior nu vedeți niciun fișier Bookly. Bookly are o setare care stabilește dacă scripturile și stilurile sale se încarcă pe fiecare pagină sau doar pe cele care conțin un formular de programare. Dacă a dumneavoastră este pe a doua opțiune, din exterior se vede mult mai puțin din plugin. Acea setare influențează doar ce poate vedea un vizitator; nu are legătură cu faptul că defectul este prezent și accesibil. Verificați-vă versiunea în zona de administrare.
Cum actualizați
Cea mai sigură cale trece prin WordPress însuși, cu o copie de siguranță făcută în prealabil:
- Faceți o copie de siguranță a site-ului (fișiere și bază de date) înainte de orice modificare. Majoritatea furnizorilor de găzduire oferă copii cu un clic, sau folosiți un plugin de backup.
- În administrarea WordPress, mergeți la Panou apoi Actualizări, sau la Pluginuri apoi Pluginuri instalate. Dacă apare o actualizare pentru Bookly, instalați-o de acolo.
- Dacă preferați linia de comandă, WP-CLI face același lucru:
wp plugin update bookly-responsive-appointment-booking-tool. - Dacă nu apare nicio actualizare, puteți obține cea mai recentă versiune direct de pe pagina pluginului din directorul WordPress.org, Bookly, și să actualizați prin Pluginuri, Adaugă plugin nou, Încarcă plugin.
- După actualizare, confirmați noul număr de versiune (27.8 sau mai nou) cu pașii de mai sus și verificați că formularul de programare și programările existente funcționează normal.
Dacă folosiți extensiile plătite Bookly, actualizați-le împreună cu pluginul principal; lansările lor merg de obicei în pereche.
Cât sunteți acolo, merită să confirmați că nucleul WordPress și celelalte pluginuri sunt la zi, întrucât același principiu se aplică tuturor.
După actualizare
Trecerea la 27.8 sau mai nouă închide problema și nu există niciun indiciu că defectul ar fi fost exploatat undeva, așadar nu se subînțelege niciun răspuns de urgență: nu trebuie să vă considerați site-ul compromis și nici să îl scoateți din funcțiune.
Un pas ulterior merită totuși făcut cu adevărat și decurge direct din ceea ce putea atinge acest defect. Deoarece hash-urile parolelor WordPress s-au numărat printre datele pe care interogarea le putea returna, iar un hash obținut mai devreme rămâne util unui atacator și după actualizarea dumneavoastră, precauția rezonabilă este ca, odată aplicată actualizarea, să resetați parolele conturilor de administrator. Doi pași mai mici se potrivesc firesc alături:
- Treceți în revistă conturile de administrator și de editor pentru a vedea dacă există vreunul pe care nu îl recunoașteți, așa cum ați verifica în mod obișnuit accesul la site.
- Regenerați cheile secrete și „salts”-urile WordPress din
wp-config.php(valorile noi sunt la un clic distanță în generatorul oficial; înlocuirea lor deconectează o dată toți utilizatorii).
Tratați acest lucru ca pe o întreținere obișnuită de securitate, nu ca pe un răspuns la incident.
Ce am făcut și ce nu am făcut
Pentru deplină transparență privind verificarea din spatele e-mailului meu: am citit doar fișiere
publice pe care site-ul dumneavoastră le servește oricum fiecărui vizitator, mai exact fișierul
public readme.txt al pluginului Bookly și pagina dumneavoastră de start. Nu am accesat zona
de administrare WordPress, baza de date sau vreo parte privată a site-ului.
În special, nu am trimis niciodată nimic către formularul dumneavoastră de programare sau către calea de cerere vizată de problemă; nimic nu a fost transmis, testat sau exploatat. Aici acest lucru cântărește mai mult decât pe majoritatea acestor pagini: defectul este o cerere fără autentificare către acea cale, așa că „nu am atins-o” reprezintă întreaga diferență dintre o dezvăluire și o intruziune.
Aceasta este o observație bazată pe versiune: site-ul dumneavoastră raportează o versiune din intervalul afectat. Un site din acel interval poate fi deja protejat prin alte mijloace, cum ar fi un firewall pentru aplicații web sau o remediere adusă retroactiv. Această notificare nu afirmă că site-ul dumneavoastră era exploatabil în momentul verificării.
Nu am webmaster / m-am blocat
Dacă nu dumneavoastră întrețineți site-ul, vă rog să transmiteți această pagină persoanei care o face (dezvoltatorul, agenția sau furnizorul de găzduire). Va recunoaște imediat pașii de mai sus.
Dacă întrețineți singur site-ul și vă blocați, vă îndrum cu plăcere, gratuit. Scrieți-mi folosind datele de contact de mai jos.
Contact
Evan Harris, cercetător în securitate
- E-mail: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
Iau legătura pe astfel de subiecte exclusiv pentru a ajuta operatorii să își securizeze site-urile. Dacă preferați să nu mai fiți contactat, spuneți-mi și voi respecta acest lucru.
Referințe
Anunțuri oficiale și urmărire
Producător / plugin