Sigurnosna obavijest za Bookly
Ako ste od mene primili e-poruku koja upućuje na ovu stranicu, to je zato što se čini da vaše
web-mjesto koristi verziju dodatka Bookly (WordPress dodatak za naručivanje termina
bookly-responsive-appointment-booking-tool) koja ulazi u raspon zahvaćen poznatim sigurnosnim
propustom. Ova stranica objašnjava o čemu je riječ, kako provjeriti svoju verziju, kako se
nadograditi i koji jedan naknadni korak vrijedi napraviti.
Riječ je o CVE-2026-13395, SQL injekciji bez autentikacije u javnom tijeku naručivanja dodatka. Zahvaćene su verzije 11.3 do 27.7, a ispravljeno je u 27.8, objavljenoj 10. srpnja 2026. Ako koristite zahvaćenu verziju, nadogradite Bookly na 27.8 ili noviju (27.9 je trenutačno izdanje i također sadrži ispravak). Nema naznaka da se ovaj propust iskorištava ni protiv jednog web-mjesta, niti postoji javna prijava iskorištavanja bilo gdje; ova je stranica preventivna obavijest, a ne prijava incidenta.
Za razliku od nekih drugih mojih obavijesti, ova ne ovisi o tome kako je vaše web-mjesto konfigurirano. Nije potrebno da neka postavka bude uključena da bi propust bio dohvatljiv: zahvaćena putanja zahtjeva otvorena je posjetiteljima koji nisu prijavljeni, na uobičajenoj instalaciji. Ako je vaša verzija Bookly u zahvaćenom rasponu, nadogradnju je vrijedno napraviti uskoro.
Riječ je o propustu dodatka, a ne jezgre WordPressa. Potpuno ažuran WordPress vas ne štiti ako je sam dodatak Bookly na zahvaćenoj verziji.
Je li ova poruka vjerodostojna?
Jest. Riječ je o dobronamjernoj obavijesti u duhu odgovornog objavljivanja, od nezavisnog sigurnosnog istraživača. Ne tražim od vas novac, lozinke ni pristup web-mjestu i nisam pokušao u njega provaliti, poslati mu bilo što niti bilo što iskoristiti.
Pogledao sam samo javno dostupne datoteke koje vaše web-mjesto poslužuje svakom posjetitelju (jednako kao što je vaša naslovnica javna) i zabilježio broj verzije koji objavljuje dodatak Bookly. Konkretno, nisam ništa poslao vašem obrascu za naručivanje ni putanji zahtjeva na koju se propust odnosi, a ova provjera ne dira vaše podatke, administracijsko sučelje ni bilo koji privatni dio web-mjesta (više u odjeljku Što sam učinio, a što nisam).
Ako želite provjeriti tko sam, kontakt podaci nalaze se na dnu ove stranice i na stranici O meni.
Zašto je to važno
Bookly je jedan od najraširenijih dodataka za naručivanje termina za WordPress: u službenom je katalogu od 2014. i radi na desecima tisuća web-mjesta. Na javnom dijelu vašeg web-mjesta objavljuje obrazac za naručivanje kako bi posjetitelji odabrali uslugu, djelatnika i termin bez potrebe za korisničkim računom.
U zahvaćenim verzijama jedna od vrijednosti koje taj obrazac vraća, identifikator djelatnika kojeg je posjetitelj odabrao, pohranjuje se točno onako kako je stigla, bez provjere, a poslije se izravno umeće u upit nad bazom podataka umjesto da se preda kao parametar. Onaj tko pošalje posebno oblikovanu vrijednost umjesto uobičajenog identifikatora može tako promijeniti značenje tog upita. Praktična posljedica: netko bez računa i bez prijave mogao bi iz baze podataka vašeg web-mjesta pročitati podatke koje upit nikada nije trebao vratiti, uključujući kriptografske sažetke (hasheve) lozinki vaših WordPress korisničkih računa.
Dvije stvari valja jasno reći, u oba smjera.
Prvo, radi mjere: ovo je propust čitanja podataka, a ne preuzimanje poslužitelja ni administratorskog računa. Sam po sebi ne omogućuje izvođenje koda na vašem poslužitelju ni prijavu u administraciju. Sažetak lozinke nije lozinka; mora se najprije razbiti da bi postao pristup. I nema dokaza o iskorištavanju: tijelo koje je dodijelilo CVE nije objavilo ocjenu ozbiljnosti, propust nije u katalogu KEV američke CISA-e, njegova ocjena vjerojatnosti iskorištavanja (EPSS) nije dodijeljena, a meni nisu poznate nikakve prijave iskorištavanja.
Drugo, bez umanjivanja: između anonimnog posjetitelja i te putanje ne stoji ni prijava, ni nonce, ni ijedna postavka dodatka. Dohvatljiva je na zadanoj instalaciji besplatnog dodatka. Zato preporuka glasi: nadogradite se uskoro, a ne u sljedećem terminu održavanja.
Ako je moja e-poruka navela ovaj propust, to znači da verzija koju vaše web-mjesto prijavljuje ulazi u zahvaćeni raspon. Nisam provjeravao je li baš vaše web-mjesto iskoristivo; promatrao sam isključivo verziju.
Jesam li zahvaćen?
Sve se svodi na jedno pitanje: koju verziju Bookly koristite? Ne morate mi vjerovati na riječ; postoje dva načina provjere.
U administraciji WordPressa (mjerodavan izvor):
- Prijavite se u nadzornu ploču WordPressa (obično
vasadomena.hr/wp-admin). - Idite na Dodaci, zatim Instalirani dodaci.
- Pronađite Bookly, stavku čija je mapa
bookly-responsive-appointment-booking-tool, i pogledajte verziju ispod njezina naziva.
Iz javne datoteke opisa (bez prijave): otvorite u pregledniku
vasadomena.hr/wp-content/plugins/bookly-responsive-appointment-booking-tool/readme.txt. Redak
Stable tag: blizu vrha jest verzija koju vaša instalacija prijavljuje, a to je ista javna
datoteka koju sam pročitao.
Zatim primijenite ovo pravilo, imajući na umu da se verzije uspoređuju brojčano, a ne abecedno:
- 11.3 do 27.7: zahvaćena. Nadogradite odmah.
- 27.8 ili novija: već ispravljena. To uključuje i 27.9, koja zadržava ispravak.
- Starija od 11.3: ovim propustom nije zahvaćena. Nesigurna konstrukcija upita u tim izdanjima nije postojala: identifikatori djelatnika prolazili su kroz parametrizirani graditelj upita dodatka. Tako staro izdanje ima mnogo drugih razloga za ažuriranje, ali ova obavijest nije jedan od njih.
- Nemojte brojeve verzija čitati kao tekst. Bookly ima dvoznamenkastu glavnu verziju, pa
tekstualni poredak griješi dvaput:
3.3izgleda veće od27.8, a mnogo je starije, dok27.10izgleda manje od27.7, a novije je. Uspoređujte broj po broj.
Napomena o Bookly dodacima (add-onima). Bookly-jeva plaćena proširenja (Pro i razni paketi
bookly-addon-*) instaliraju se kao zasebni dodaci s vlastitim brojevima verzija, a adrese
njihovih datoteka mogu nositi verziju glavnog dodatka umjesto vlastite. Za ovu je obavijest
mjerodavna verzija glavnog dodatka Bookly, dobivena jednom od dviju gornjih provjera, a ne
broj pročitan s datoteka nekog proširenja.
Ako izvana ne vidite nijednu Bookly datoteku. Bookly ima postavku koja određuje učitavaju li se njegove skripte i stilovi na svakoj stranici ili samo na onima s obrascem za naručivanje. Ako je vaša na drugoj opciji, izvana je vidljivo znatno manje dodatka. Ta postavka utječe samo na to što posjetitelj može vidjeti; nema veze s tim je li propust prisutan i dohvatljiv. Provjerite verziju u administraciji.
Kako se nadograditi
Najsigurniji je put kroz sam WordPress, uz prethodnu sigurnosnu kopiju:
- Napravite sigurnosnu kopiju (datoteke i baza podataka) prije bilo kakvih izmjena. Većina pružatelja usluga hostinga nudi kopije jednim klikom, ili upotrijebite dodatak za sigurnosne kopije.
- U administraciji WordPressa idite na Nadzorna ploča pa Ažuriranja, ili na Dodaci pa Instalirani dodaci. Ako je ažuriranje za Bookly navedeno, instalirajte ga odatle.
- Ako vam je draža naredbena linija, WP-CLI radi isto:
wp plugin update bookly-responsive-appointment-booking-tool. - Ako se ažuriranje ne pojavi, najnovije izdanje možete preuzeti izravno sa stranice dodatka u katalogu WordPress.org, Bookly, i ažurirati preko Dodaci, Dodaj novi dodatak, Prenesi dodatak.
- Nakon ažuriranja gornjim koracima potvrdite novi broj verzije (27.8 ili noviju) i provjerite rade li obrazac za naručivanje i postojeći termini normalno.
Ako koristite Bookly-jeva plaćena proširenja, ažurirajte ih zajedno s glavnim dodatkom; njihova su izdanja obično usklađena.
Kad ste već tu, vrijedi provjeriti jesu li jezgra WordPressa i ostali dodaci ažurni, jer isto načelo vrijedi za sve.
Nakon ažuriranja
Prelazak na 27.8 ili noviju zatvara propust, a nema naznaka da je igdje iskorišten, pa nikakav hitni odgovor nije podrazumijevan: ne morate svoje web-mjesto smatrati kompromitiranim niti ga isključivati.
Jedan naknadni korak ipak vrijedi stvarno napraviti i proizlazi izravno iz onoga do čega je ovaj propust mogao doprijeti. Budući da su sažeci lozinki WordPressa bili među podacima koje je upit mogao vratiti, a ranije preuzet sažetak napadaču ostaje koristan i nakon vaše nadogradnje, razumna je mjera opreza poništiti lozinke administratorskih računa nakon što ažuriranje bude na mjestu. Uz to prirodno idu dva manja koraka:
- Pregledajte administratorske i uredničke račune ima li među njima onih koje ne prepoznajete, na način na koji biste ionako povremeno pregledali pristup.
- Ponovno generirajte tajne ključeve i „salts” WordPressa u datoteci
wp-config.php(nove vrijednosti udaljene su jedan klik u službenom generatoru; njihova zamjena jednokratno odjavljuje sve korisnike).
Shvatite to kao uobičajeno sigurnosno održavanje, a ne kao postupanje s incidentom.
Što sam učinio, a što nisam
Radi potpune transparentnosti o provjeri iza moje e-poruke: pročitao sam samo javne datoteke koje
vaše web-mjesto ionako poslužuje svakom posjetitelju, konkretno javnu datoteku readme.txt
dodatka Bookly i vašu naslovnicu. Nisam pristupio vašoj WordPress administraciji, bazi
podataka ni bilo kojem privatnom dijelu web-mjesta.
Posebno, nikada ništa nisam poslao vašem obrascu za naručivanje ni putanji zahtjeva na koju se propust odnosi; ništa nije predano, testirano ni iskorišteno. Ovdje to teži više nego na većini ovih stranica: propust jest zahtjev bez autentikacije prema toj putanji, pa je „nisam je dirao” cijela razlika između objave i provale.
Ovo je opažanje utemeljeno na verziji: vaše web-mjesto prijavljuje verziju iz zahvaćenog raspona. Web-mjesto u tom rasponu možda je već zaštićeno na drugi način, primjerice vatrozidom za web-aplikacije ili unatrag prenesenim ispravkom. Ova obavijest ne tvrdi da je vaše web-mjesto bilo iskoristivo u trenutku provjere.
Nemam webmastera / zapeo sam
Ako web-mjesto ne održavate vi, proslijedite ovu stranicu osobi koja to čini (vašem programeru, agenciji ili pružatelju hostinga). Gornje će korake odmah prepoznati.
Ako web-mjesto održavate sami i zapnete, rado ću vas besplatno usmjeriti. Javite se putem kontakata u nastavku.
Kontakt
Evan Harris, sigurnosni istraživač
- E-pošta: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
Javljam se povodom ovakvih pitanja isključivo kako bih pomogao operaterima da osiguraju svoja web-mjesta. Ako ne želite da vas ponovno kontaktiram, samo mi recite i poštovat ću to.
Izvori
Službene objave i praćenje
Proizvođač / dodatak