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):

  1. Prijavite se u nadzornu ploču WordPressa (obično vasadomena.hr/wp-admin).
  2. Idite na Dodaci, zatim Instalirani dodaci.
  3. 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.3 izgleda veće od 27.8, a mnogo je starije, dok 27.10 izgleda manje od 27.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:

  1. 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.
  2. 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.
  3. Ako vam je draža naredbena linija, WP-CLI radi isto: wp plugin update bookly-responsive-appointment-booking-tool.
  4. 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.
  5. 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č

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