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 Forminator Forms (WordPress dodatak autora WPMU DEV, koji se u vašim datotekama nalazi na putanji /wp-content/plugins/forminator/) koja spada u zahvaćeni raspon poznatog sigurnosnog propusta. Ova stranica objašnjava u čemu je propust, kako uopće utvrditi odnosi li se na vaše web-mjesto, kako pravilno očitati svoju verziju bez zabune te kako se ažurirati.

Prije svega, najvažnija činjenica o ovoj obavijesti: sama činjenica da je vaša verzija u zahvaćenom rasponu ne znači da je vaše web-mjesto izloženo. Propust opisan u nastavku dolazi do izražaja samo na web-mjestima čiji obrasci uključuju polje za prijenos datoteka, a ja izvana ne mogu vidjeti kako su vaši obrasci izrađeni:

  • Propust doseže samo obrazac izrađen u Forminatoru koji sadrži polje za prijenos datoteka. Ako nijedan vaš obrazac ne dopušta posjetiteljima prijenos datoteka, ovo se na vas ne odnosi, čak ni na zahvaćenoj verziji.
  • Imajte na umu da je važna prisutnost polja za prijenos, a ne njegova konfiguracija. Ograničavanje polja na određene vrste (na primjer slike ili PDF-ove) ne uklanja ovaj propust, jer ta ograničenja propust zaobilazi. Iz zahvaćenog raspona izlazite jedino ako nemate nijedan obrazac s poljem za prijenos datoteka.

Verziju vašeg dodatka mogu očitati iz javne datoteke, ali ne mogu vidjeti vaše obrasce, pa je ova obavijest preventivno upozorenje, a ne potvrđen nalaz o vašem web-mjestu.

Riječ je o propustu CVE-2026-15748, ranjivosti u prijenosu datoteka bez potrebe za autentikacijom, dosežnoj kroz obradu obrazaca u dodatku. Zahvaća verzije 1.18.1 do 1.56.1, a ispravljena je u verziji 1.56.2, objavljenoj 30. srpnja 2026. Ako koristite zahvaćenu verziju, ažurirajte Forminator Forms na 1.56.2 ili noviju verziju (trenutačno izdanje u vrijeme pisanja pripada liniji 1.57.x).

Nekoliko riječi o hitnosti, jer je ova obavijest uvjetna. Ako nijedan vaš obrazac nema polje za prijenos datoteka, ažuriranje je uobičajeno održavanje dodatka. Ako barem jedan takav obrazac postoji, ažuriranje shvatite kao prioritet: u toj konfiguraciji propust bi mogao posjetitelju bez ikakvog računa omogućiti da na vaš poslužitelj spremi datoteku po vlastitom izboru, takve vrste da bi je poslužitelj mogao izvršiti, što može dovesti do potpune kontrole nad web-mjestom.

Riječ je o propustu dodatka, a ne jezgre WordPressa. Potpuno ažuriran WordPress ne štiti vas ako je sam dodatak Forminator 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 bilo koji od vaših obrazaca niti na njega bilo što prenijeti.

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. Izričito nisam poslao nijedan obrazac, nisam prenio datoteku i nisam se približio funkciji dodatka za obradu prijenosa datoteka. Ništa u ovoj provjeri ne dira vaše podatke, vašu administraciju ni bilo koji privatni dio web-mjesta (više u odjeljku Što sam učinio, a što nisam u nastavku).

Ako želite provjeriti tko sam, kontakt podaci nalaze se na dnu ove stranice i na stranici O meni.

Zašto je to važno

Forminator vam omogućuje izradu kontaktnih obrazaca, kvizova, anketa i obrazaca za plaćanje, a neki od tih obrazaca posjetiteljima mogu ponuditi polje za prijenos datoteka kako bi priložili dokument ili sliku. Da bi to bilo sigurno, dodatak bi trebao nadzirati koje datoteke prihvaća i gdje ih pohranjuje.

U zahvaćenim verzijama te se kontrole mogle zaobići. Krivotvorena prijava obrasca mogla je prokrijumčariti lažiranu vrijednost polja kroz dio dodatka koji sprema unos, a odatle u rutinu za spremanje datoteka, čiji se popis zabranjenih vrsta datoteka mogao zaobići posebno oblikovanim zahtjevom. Rezultat je da je datoteka koju bi dodatak trebao odbiti mogla biti zapisana u vašu mapu za prijenose. Ondje gdje poslužitelj takvu datoteku potom tretira kao nešto što može izvršiti, posljedica je da se na vašem web-mjestu izvršava tuđa datoteka.

Iz toga proizlaze dvije stvari, koje vuku u suprotnim smjerovima. Prva je da je ovo važno samo ondje gdje obrazac doista ima polje za prijenos datoteka; web-mjesto čiji obrasci ne prikupljaju prijenose nije dosežno kroz ovaj propust. Druga je da ondje gdje takvo polje zaista postoji, nije potreban nikakav račun, nikakva lozinka niti bilo čija suradnja: obrazac je po svojoj namjeni javno dostupan. A evo dijela koji se najlakše pogrešno shvati: ograničavanje tog polja na „samo slike” ili „samo PDF-ove” vas ne spašava, jer propust zaobilazi vlastitu provjeru vrste polja. Pitanje je jednostavno postoji li polje za prijenos datoteka na ijednom vašem obrascu.

Ovo opisujem na razini koja je vlasniku web-mjesta potrebna da bi postupio, i ništa dalje. Ne objavljujem pojedinosti koje bi nekome omogućile da to reproducira i molim vas da to ne pokušavate ni na vlastitom ni na tuđem web-mjestu. Provjera vaših obrazaca i broja vaše verzije, kako je opisano u nastavku, govori vam sve što trebate da biste odlučili što učiniti.

Ako je moja e-poruka navela ovaj propust, to znači da verzija koju vaše web-mjesto prijavljuje spada u zahvaćeni raspon. Nisam provjeravao je li baš vaše web-mjesto iskoristivo i ne mogu vidjeti kako su vaši obrasci konfigurirani. Sve što sam opazio jest verzija.

Jesam li zahvaćen?

O tome odlučuju dva pitanja, ovim redoslijedom.

Prvo: ima li ijedan obrazac polje za prijenos datoteka?

Ovo je ključno pitanje, a odgovoriti na njega možete samo vi. Provjera vlastitih obrazaca posve je sigurna i upravo je to smisao ove stranice.

  1. Prijavite se u nadzornu ploču WordPressa i u bočnoj traci otvorite Forminator, zatim Forms.
  2. Otvorite svaki obrazac i potražite polje Upload (Forminatorova vrsta polja za prijenos datoteka).
  3. Ako nijedan vaš obrazac nema polje za prijenos, ovaj propust ne doseže vaše web-mjesto, čak ni na zahvaćenoj verziji, iako je ažuriranje ipak vrijedno provesti kao uobičajeno održavanje.
  4. Ako ijedan obrazac ima polje za prijenos, propust se odnosi na vas i trebali biste žurno ažurirati. Ograničavanje polja na vrste datoteka koje doista trebate dobra je praksa, ali nije ispravak za ovaj propust: ispravak je ažuriranje.

Molimo vas da ne pokušavate reproducirati problem ni na vlastitom ni na tuđem web-mjestu; to vam nije potrebno da biste odgovorili na pitanje iznad.

Drugo: koju verziju koristite?

Ne morate mi vjerovati na riječ. Kod ovog dodatka postoji nekoliko načina provjere koji će vas zavarati, pa ovaj dio vrijedi pažljivo pročitati.

Iz administracije WordPressa (mjerodavan izvor):

  1. U nadzornoj ploči WordPressa idite na Dodaci, zatim Instalirani dodaci.
  2. Pronađite Forminator Forms, stavku čija je mapa forminator, i pogledajte verziju prikazanu ispod njezina naziva.

Iz izvornog koda vaše stranice (bez prijave): pogledajte izvorni kod stranice na svom web-mjestu na kojoj se prikazuje Forminatorov obrazac i potražite jednu od datoteka dodatka namijenjenih klijentskoj strani, točno na ovim putanjama:

/wp-content/plugins/forminator/build/front/front.multi.min.js?ver=...
/wp-content/plugins/forminator/assets/forminator-ui/js/forminator-form.min.js?ver=...
/wp-content/plugins/forminator/assets/forminator-ui/css/forminator-icons.min.css?ver=...

Broj uz ?ver= pridodan tim datotekama unutar mape forminator jest vlastita verzija dodatka. Kod ovog dodatka taj broj točno prati izdanje, zbog čega ga smatram pouzdanim izvorom. Imajte na umu da se te datoteke pojavljuju samo na stranici koja doista prikazuje Forminatorov obrazac, stoga provjerite stranicu koja ga ima (gola naslovnica bez obrasca na njoj često ne prikazuje ništa).

Dvije zamke koje ovdje treba izbjeći. Obje uzrokuju da naivno očitavanje prijavi verziju koja nema nikakve veze s Forminatorom:

  • Paketirana knjižnica za telefonske brojeve. Forminator uz sebe isporučuje primjerak knjižnice treće strane pod nazivom intlTelInput, koja nosi vlastiti broj verzije, 4.0.3. Ovisno o vašoj verziji, taj se broj nalazi uz datoteku assets/css/intlTelInput.min.css ili assets/js/library/intlTelInput.min.js, obje unutar mape Forminatora. Ako s jedne od njih očitate ?ver=4.0.3, to je verzija knjižnice, a ne Forminatora. Forminator nikada nije imao izdanje serije 4.x. Čitajte isključivo datoteke navedene iznad i svaku verziju koja ne počinje s 1. smatrajte „verzijom koja nije verzija Forminatora”.
  • Stilska datoteka po obrascu u vašoj mapi za prijenose. Forminator za svaki objavljeni obrazac zapisuje malu stilsku datoteku na putanji poput /wp-content/uploads/forminator/<nešto>/style-<broj>.css?ver=<dugi 10-znamenkasti broj>. Taj je dugi broj vremenska oznaka, a ne verzija. Nalazi se pod wp-content/uploads/, a ne pod mapom dodatka, pa ga potpuno zanemarite.

Još jedna napomena specifična za ovaj dodatak: redak „Stable tag” u paketiranom readme.txt nije pouzdan ovdje, jer može kasniti za stvarnim izdanjem (i verzija 1.56.1 i verzija 1.56.2 u svom izdanju prijavljuju 1.56.0), pa vam, za razliku od nekih drugih dodataka, ta datoteka neće reći koju od te dvije verzije imate. Zaslon u administraciji i ?ver= vrijednost resursa iznad izvori su kojima treba vjerovati.

Zatim primijenite ovo pravilo, imajući na umu da se verzije uspoređuju brojčano, a ne abecedno:

  • 1.18.1 do 1.56.1: potencijalno zahvaćeno, ovisno o pitanju o polju za prijenos iznad. Ažurirajte odmah.
  • 1.56.2 ili novije: već ispravljeno u pogledu ovog propusta. Najbolji je potez preuzeti najnoviju dostupnu verziju (u vrijeme pisanja to je linija 1.57.x).
  • Starije od 1.18.1: nije zahvaćeno ovim propustom. Konkretna slabost opisana iznad uvedena je u verziji 1.18.1. Ipak, tako staro izdanje uvelike zaostaje u svemu ostalom, pa je ažuriranje vrijedno provesti iz općih razloga.

Ako iz gornjih provjera ne možete dobiti čitljivu verziju, to nije neobično: dodaci za predmemoriranje ili optimizaciju rutinski uklanjaju vrijednost ?ver=, a resursi se pojavljuju samo ondje gdje se prikazuje obrazac. Zaslon u administraciji iz prvog koraka uvijek daje odgovor.

Kako se nadograditi

Dodatak je besplatan, i dalje se objavljuje i aktivno se održava, pa je ispravak uobičajeno ažuriranje. Najsigurniji je put ažurirati se kroz sam WordPress, uz prethodnu sigurnosnu kopiju:

  1. Napravite sigurnosnu kopiju web-mjesta (datoteke i baza podataka) prije bilo kakvih promjena. Većina pružatelja hostinga nudi sigurnosne kopije u jednom kliku, ili upotrijebite dodatak za sigurnosne kopije WordPressa.
  2. U administraciji WordPressa idite na Nadzorna ploča, zatim Ažuriranja, ili na Dodaci, zatim Instalirani dodaci. Ako je navedeno ažuriranje za Forminator, instalirajte ga odavde.
  3. Ako vam je draža naredbena linija, WP-CLI radi isto: wp plugin update forminator (naredba koristi naziv mape).
  4. Ako se ažuriranje ne pojavi, najnovije izdanje možete preuzeti izravno sa stranice dodatka u katalogu WordPress.org, Forminator Forms, i ažurirati preko Dodaci, zatim Dodaj novi dodatak, zatim Prenesi dodatak.
  5. Nakon ažuriranja potvrdite novi broj verzije (1.56.2 ili noviji) prema gornjim koracima i provjerite rade li vaši obrasci i eventualni prijenosi datoteka na njima i dalje ispravno.

Kad ste već tu, vrijedi provjeriti jesu li jezgra WordPressa i vaši ostali dodaci ažurni, jer isto načelo vrijedi za sve njih.

Nakon ažuriranja

Ažuriranje na verziju 1.56.2 ili noviju zatvara propust, i za većinu je web-mjesta to cijeli zadatak. Ova je stranica preventivna obavijest, a ne izvještaj o incidentu: nemam uvid u to je li se na vašem web-mjestu išta dogodilo i nisam gledao.

Jedan je slijedeći korak vrijedan razmatranja, i uvjetovan je istim pitanjem o polju za prijenos. Ako je vaše web-mjesto imalo obrazac s poljem za prijenos datoteka dok je koristilo zahvaćenu verziju, tada je barem teoretski bilo moguće da je datoteka spremljena na vaš poslužitelj. Ažuriranje zatvara propust, ali ne uklanja ništa što je možda već spremljeno, pa je u tom slučaju razumno poduzeti nekoliko uobičajenih mjera opreza:

  • Pregledajte mapu s prenesenim datotekama (obično pod wp-content/uploads/, uključujući podstablo wp-content/uploads/forminator/) tražeći datoteke koje ne prepoznajete, osobito one koje nisu vrsta dokumenata ili slika koje bi vaši obrasci trebali primati.
  • Pregledajte administratorske račune, nedavne prijave i sve aktivne sesije tražeći bilo što što ne možete objasniti.
  • Poništite lozinke na svojim administratorskim računima. Razuman je popratni korak i ponovno generiranje tajnih ključeva i „salts” vrijednosti WordPressa u datoteci wp-config.php (nove su vrijednosti udaljene jedan klik u službenom generatoru ključeva, a njihova zamjena jednokratno odjavljuje sve korisnike).

Ako pronađete nešto što vas zabrinjava, ispravan je odgovor postupiti kao kod svake druge sumnje na neovlašten pristup. Ako nijedan vaš obrazac nije imao polje za prijenos datoteka, samo je ažuriranje dovoljno.

Što sam učinio, a što nisam

Radi potpune transparentnosti o provjeri iza moje e-poruke: pročitao sam samo datoteke koje vaše web-mjesto ionako poslužuje svakom posjetitelju, konkretno javnu datoteku readme.txt dodatka, vašu naslovnicu i adrese resursa upisane na toj stranici. Nisam pristupio vašoj WordPress administraciji, bazi podataka ni bilo kojem privatnom dijelu web-mjesta.

Konkretno, nikada nisam poslao nijedan od vaših obrazaca, nikada nisam prenio datoteku i nikada nisam dirao funkciju dodatka za obradu prijenosa. Ništa nije poslano, testirano ni iskorišteno. To je ovdje važnije nego na većini ovih stranica, jer je prijenos datoteke upravo ona radnja koje se ovaj propust tiče, pa je „nisam je dirao” cijela razlika između objave i upada.

Također namjerno ne objavljujem pojedinosti koje bi nekome pomogle iskoristiti ovaj propust. Gornji opis staje na razini koja je vlasniku web-mjesta potrebna, i ne povezujem nikakav kôd za dokaz koncepta.

Ovo je opažanje utemeljeno na verziji: vaše web-mjesto prijavljuje verziju u zahvaćenom rasponu. To nije tvrdnja da je vaše web-mjesto u trenutku moje provjere bilo iskoristivo. Budući da propust ovisi o tome ima li ijedan vaš obrazac polje za prijenos datoteka, što ne mogu vidjeti, web-mjesto u tom rasponu vrlo dobro može uopće ne biti izloženo, a web-mjesto u tom rasponu može zasebno biti zaštićeno i drugim sredstvima, primjerice vatrozidom za web-aplikacije.

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 brzo prepoznati.

Ako web-mjesto održavate sami i zapnete, rado ću vas besplatno usmjeriti u pravom smjeru. 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