Ako ste od mene primili e-poruku koja vas upućuje na ovu stranicu, to je zato što vaše web-mjesto naizgled koristi verziju dodatka Ultimate Member (WordPress dodatka za članstvo i korisničke profile, tvrtke Ultimate Member, koji se u vašim datotekama nalazi u /wp-content/plugins/ultimate-member/) koja spada u raspon zahvaćen poznatim sigurnosnim problemom. Ova stranica objašnjava o kojem je problemu riječ, kako utvrditi odnosi li se na vaše web-mjesto, kako očitati svoju verziju bez da vas se zavede i na koju verziju nadograditi.

Problem je CVE-2026-19423, neautenticirana slabost eskalacije ovlasti u obrascima za registraciju i profil dodatka. Zahvaća verzije Ultimate Membera od 2.6.7 do 2.12.1, a ispravljena je u verziji 2.13.0, objavljenoj 24. kolovoza 2026. Ako koristite verziju u tom rasponu, nadogradite Ultimate Member na 2.13.0 ili noviju. Za ovaj problem nije objavljena CVSS ocjena (dodijelio ga je WPScan bez vektora ozbiljnosti), pa vam neću citirati nikakvu, i nije mi poznat nikakav javni kod za iskorištavanje.

Verzije starije od 2.6.7 nisu zahvaćene ovim problemom, i želim u tome biti precizan, umjesto da obavijest zvuči šire nego što jest. Nije riječ o nedostatku prisutnom od početaka dodatka: putanja koda o kojoj ovisi uvedena je u 2.6.7. Instalacija starija od 2.6.7 ovdje dakle nije meta, i web-mjestima s takvom verzijom nisam pisao. Ako se pokaže da je vaša verzija niža od 2.6.7, možete zanemariti ovu obavijest za ovaj problem (premda se održavanje toliko zaostalog dodatka ažurnim isplati iz drugih razloga).

Prije svega, uvjet koji odlučuje koliko je ovo važno za vaše web-mjesto, jer ga radije kažem izravno nego da obavijest zvuči veće nego što jest: ovaj problem doseže samo web-mjesto na kojem neki od vaših Ultimate Member obrazaca za registraciju ili profil osobi koja ga ispunjava nudi izbor uloge, i na kojem je registracija otvorena javnosti. Standardna postava Ultimate Membera ne stavlja odabir uloge na obrazac za registraciju (administrator ga mora namjerno dodati), pa mnoga web-mjesta koja koriste zahvaćenu verziju uopće nisu izložena. Verziju vašeg dodatka mogu očitati iz javne datoteke, ali ne vidim kako su vaši obrasci izgrađeni ni je li registracija otvorena, pa je ova obavijest preventivno upozorenje, a ne potvrđen nalaz o vašem web-mjestu.

Riječ o hitnosti, jer je ovo uvjetna obavijest. Ako nijedan od vaših Ultimate Member obrazaca ne dopušta posjetitelju odabir uloge, nadogradnja je uobičajeno održavanje dodataka. Ako neki dopušta, a registracija je otvorena, molim vas da nadogradnju tretirate kao prioritet: u toj konfiguraciji posjetitelj koji registrira račun za sebe mogao bi tom računu dodijeliti povišene ovlasti, potencijalno do razine ekvivalentne administratoru, bez ikakvog prethodnog pristupa vašem web-mjestu. Tamo gdje se primjenjuje, to je ozbiljna posljedica, i zato pišem umjesto da to odložim kao nisku prioritetu; no primjenjuje se samo pod gornjim uvjetima, a nadogradnja je uklanja neovisno o njima.

Ovo je nedostatak dodatka, a ne jezgre WordPressa. Potpuno ažuran WordPress vas ne štiti ako je sam dodatak Ultimate Member na zahvaćenoj verziji.

Je li ova poruka vjerodostojna?

Da. Ovo je dobronamjerna obavijest u okviru odgovornog otkrivanja od neovisnog sigurnosnog istraživača. Ne tražim od vas novac, lozinke ni pristup vašem web-mjestu, i nisam pokušao provaliti u njega, registrirati se na njemu niti bilo što iskoristiti.

Sve što sam učinio bilo je pogledati stranice i datoteke koje vaše web-mjesto poslužuje svakom posjetitelju (jednako javno kao i vaša početna stranica) i zabilježiti broj verzije koji dodatak objavljuje. Izričito nisam stvorio račun, poslao nijedan obrazac za registraciju ili profil, prijavio se niti poslao bilo što zahvaćenoj funkcionalnosti. Ništa u ovoj provjeri ne dodiruje vaše podatke, vaše administratorsko sučelje niti bilo koji privatni dio vašeg web-mjesta (više u odjeljku Što sam učinio, a što nisam niže).

Ako želite provjeriti tko sam, pogledajte kontaktne podatke na dnu ove stranice i stranicu O meni.

Zašto je to važno

Ultimate Member gradi stranice registracije, prijave i profila članova na vrlo mnogo WordPress web-mjesta. Kad se netko registrira, dodatak odlučuje koju bi ulogu njegov novi račun trebao imati. Na obrascu koji nudi odabir uloge trebao bi prihvaćati samo one uloge koje je taj obrazac konfiguriran dopustiti.

U zahvaćenim verzijama, kada popis dopuštenih uloga takvog obrasca završi prazan, dodatak više ne odbacuje ulogu koju je poslao posjetitelj. Umjesto toga zadržava tu vrijednost i provjerava je samo prema ulogama koje vaše web-mjesto uopće ima, a ne prema ulogama koje je obrazac trebao nuditi. Posljedica je da je posjetitelj koji registrira račun za sebe mogao taj račun usmjeriti prema ulozi koju nikad nije smio dobiti, sve do razine ekvivalentne administratoru.

Preduvjet, ponovljen jer je to dio koji se najlakše pogrešno shvati u oba smjera: potrebni su odabir uloge na javnom obrascu i otvorena registracija. Nijedno od toga nije zadana postavka. Standardni obrazac za registraciju Ultimate Membera ne nosi polje uloge, pa na tipičnoj instalaciji ovdje nema ničega što bi se moglo doseći. Tamo gdje je administrator dodao polje uloge i ostavio registraciju otvorenom, prepreka je visoka samo onoliko koliko i pitanje tko može poslati taj obrazac, a to je, uz otvorenu registraciju, bilo tko.

Opisujem ovo na razini koja je operateru web-mjesta potrebna da djeluje, i ne dalje. Ne objavljujem pojedinosti koje bi nekome omogućile da to reproducira, i molio bih vas da to ne pokušavate ni na vlastitom web-mjestu ni na tuđem. Očitavanje broja verzije i provjera vlastitih obrazaca, kako je opisano niže, govori vam sve što trebate da odlučite što učiniti.

Ako je moja e-poruka navela ovaj problem, to znači da je verzija koju vaše web-mjesto prijavljuje u rasponu od 2.6.7 do 2.12.1. Nisam testirao je li baš vaše web-mjesto iskoristivo, i ne vidim kako su vaši obrasci izgrađeni. Sve što sam promatrao jest verzija.

Jesam li zahvaćen?

O tome odlučuju dva pitanja, ovim redoslijedom.

Prvo: nudi li neki od vaših obrazaca odabir uloge, uz otvorenu registraciju?

To je odlučujuće pitanje i samo vi možete na njega odgovoriti, jer ovisi o tome kako su vaši obrasci izgrađeni, što izvana nije vidljivo. Provjera je posve sigurna i sav je smisao ove stranice.

  1. U nadzornoj ploči WordPressa idite na Ultimate Member pa Obrasci (Forms) i otvorite redom svaki svoj obrazac za registraciju i profil.
  2. Pregledajte polja svakog obrasca tražeći polje za odabir uloge (padajući izbornik ili skup opcija koji osobi koja se registrira omogućuje odabir uloge, ponekad označen “Uloga”). Na većini web-mjesta takvog polja nema, jer ga standardni obrazac za registraciju ne uključuje.
  3. Provjerite je li registracija otvorena javnosti: Postavke, zatim Općenito, zatim Članstvo, potvrdni okvir “Bilo tko se može registrirati” (jezgra WordPressa), te je li vaš Ultimate Member obrazac za registraciju dostupan posjetiteljima.
  4. Ako nijedan obrazac ne nudi odabir uloge, ovaj problem ne doseže vaše web-mjesto, čak ni na zahvaćenoj verziji, premda se nadogradnja i dalje isplati kao uobičajeno održavanje.
  5. Ako bilo koji obrazac nudi odabir uloge i registracija je otvorena, tretirajte nadogradnju kao prioritet (vidi Kako se nadograditi). Ako ne možete nadograditi odmah, privremeni je korak ukloniti polje uloge iz svih javno dostupnih obrazaca za registraciju ili profil, ili zatvoriti javnu registraciju, dok ne nadogradite. Prava ispravka je nadogradnja.

Molim vas, ne pokušavajte reproducirati problem ni na vlastitom web-mjestu ni na tuđem; za odgovor na gornje pitanje to vam nije potrebno.

Drugo: koju verziju koristite?

Ne morate mi vjerovati na riječ. Postoje dva javna načina za očitavanje verzije i jedan unutar nadzorne ploče, i trebali bi se podudarati.

Iz administratorskog sučelja WordPressa (mjerodavno):

  1. Prijavite se u nadzornu ploču WordPressa (obično na yourdomain.com/wp-admin).
  2. Idite na Dodaci pa Instalirani dodaci.
  3. Pronađite Ultimate Member, stavku čija je mapa ultimate-member, i zabilježite verziju prikazanu ispod njezina naziva.

Iz javnog manifesta (bez prijave): otvorite

yourdomain.com/wp-content/plugins/ultimate-member/readme.txt

u pregledniku i pročitajte redak Stable tag: blizu vrha. To je javni izvor koji sam ja čitao. Ako ta adresa vrati “nije pronađeno”, pokušajte README.txt velikim slovima; neki poslužitelji razlikuju velika i mala slova, a poneki paketi isporučuju datoteku s velikim slovima.

Iz izvornog koda stranice (bez prijave): pogledajte izvorni kod svoje početne stranice i potražite vlastite stilske tablice dodatka točno na ovim putanjama:

/wp-content/plugins/ultimate-member/assets/css/um-styles.min.css?ver=...
/wp-content/plugins/ultimate-member/assets/css/um-profile.min.css?ver=...

Broj ?ver= pridodan tim datotekama vlastita je verzija dodatka. Ultimate Member ove stilske tablice prema zadanim postavkama učitava na svakoj javnoj stranici, prikazivala ona članski dio ili ne, pa je vaša početna stranica obično dovoljna.

Zamka koju ovdje valja izbjeći, a lako je u nju upasti. Ultimate Member isporučuje priložene kopije nekoliko biblioteka trećih strana unutar vlastite mape dodatka, a svaka od njih nosi svoj vlastiti, posve nepovezani broj verzije. Izvorni kod vaše stranice može prikazivati biblioteku za izrezivanje slika na ?ver=1.6.1, Font Awesome na ?ver=6.5.2 ili Select2 na ?ver=3.6.2, sve na putanjama koje počinju mapom dodatka Ultimate Member. Operater koji u izvornom kodu potraži mapu dodatka i pročita prvu vrijednost ?ver= na koju naiđe lako može otići s jednim od tih brojeva, koji s verzijom dodatka nema nikakve veze. Verziju čitajte samo s vlastitih um- stilskih tablica dodatka (um-styles, um-profile, um-account i sličnih), a svaki drugi ?ver= na stranici zanemarite. Ako iz izvornog koda uopće ne možete dobiti čitljiv broj, to je uobičajeno i nije znak ničega: dodaci za predmemoriju i optimizaciju rutinski uklanjaju vrijednost ?ver=; upotrijebite tada readme.txt ili administratorski zaslon.

Zatim primijenite ovo pravilo, imajući na umu da se verzije uspoređuju numerički, a ne abecedno, pa je 2.12.1 novija od 2.6.7 iako “12” kao tekst izgleda manje od “6”:

  • od 2.6.7 do 2.12.1: zahvaćena, uz gore navedeno pitanje o obrascima. Nadogradite na 2.13.0 ili noviju.
  • 2.13.0 ili novija: što se ovog problema tiče, već ispravljena. Uzimanje najnovije dostupne verzije najbolji je potez.
  • Bilo što starije od 2.6.7: nije zahvaćeno ovim problemom. Nadogradnja se ipak isplati kao uobičajeno održavanje.

Kako se nadograditi

Dodatak je besplatan, i dalje se objavljuje i aktivno održava, pa je ispravak obična nadogradnja. Najsigurniji je put nadogradnja kroz sam WordPress, uz prethodnu sigurnosnu kopiju:

  1. Napravite sigurnosnu kopiju web-mjesta (datoteke i bazu podataka) prije izmjena. Većina pružatelja usluga smještaja nudi kopije jednim klikom, ili upotrijebite WordPress dodatak za sigurnosne kopije.
  2. U administraciji WordPressa idite na Nadzorna ploča pa Ažuriranja, ili Dodaci pa Instalirani dodaci. Ako je nadogradnja Ultimate Membera na popisu, instalirajte je odavde.
  3. Ako više volite naredbeni redak, WP-CLI čini isto: wp plugin update ultimate-member (naredba koristi naziv mape, a ne prikazani naziv).
  4. Ako se nadogradnja ne pojavi, najnovije izdanje možete preuzeti izravno sa stranice dodatka u direktoriju WordPress.org, Ultimate Member, i nadograditi putem Dodaci pa Dodaj novi dodatak pa Prenesi dodatak.
  5. Nakon nadogradnje potvrdite novi broj verzije (2.13.0 ili noviju) gornjim koracima i registrirajte probni račun (ili provjerite postojeće članske i registracijske tokove) kako biste bili sigurni da i dalje rade kako se očekuje.

Kad ste već tu, vrijedi potvrditi da su jezgra WordPressa i vaši ostali dodaci ažurni, jer isto načelo vrijedi za sve.

Nakon ažuriranja: je li ovo već iskorišteno protiv vas?

Nadogradnja na 2.13.0 ili noviju zatvara problem i za mnoga 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.

Jednu naknadnu provjeru vrijedi obaviti, i uvjetovana je istim pitanjem o obrascima. Budući da je ishod ovog problema, tamo gdje se primjenjuje, račun s povišenim ovlastima, onda, ako je vaše web-mjesto imalo obrazac za registraciju ili profil s odabirom uloge dok je registracija bila otvorena i koristili ste zahvaćenu verziju, vrijedi potvrditi da ga nitko nije iskoristio za stvaranje računa kojeg ne bi smjelo biti:

  • Pregledajte svoje korisničke račune, osobito administratore. U Korisnici pa Svi korisnici filtrirajte po ulozi Administrator (i drugim ulogama s visokim ovlastima) i potražite račune koje ne prepoznajete, ili račune stvorene oko razdoblja u kojem ste bili na zahvaćenoj verziji ili nakon njega. Obratite pozornost na nedavno registrirane korisnike čija je uloga viša od obične članske.
  • Ako pronađete račun koji ne možete objasniti, postupite s njim kao s bilo kojim drugim sumnjivim neovlaštenim pristupom: uklonite ga ili mu snizite ulogu, prisilno resetirajte lozinke svojih administratora, a ako vaša organizacija ima tim za IT sigurnost, uključite ga.
  • Ako sve izgleda kako treba, a osobito ako nijedan obrazac uopće nije nudio odabir uloge, sama nadogradnja je dovoljna.

Da okvir bude jasan: ovo je samoprovjera, a ne izjava da je vaše web-mjesto napadnuto. Ova se obavijest temelji na broju verzije, a ne na bilo kakvom dokazu incidenta.

Što sam učinio, a što nisam

Da budem posve transparentan o provjeri iza moje e-poruke: čitao sam samo datoteke koje vaše web-mjesto ionako poslužuje svakom posjetitelju, konkretno vašu početnu stranicu i adrese Ultimate Member stilskih tablica upisane u nju, te javni readme.txt dodatka unutar wp-content/plugins/ultimate-member/. Nisam pristupio vašem administratorskom sučelju WordPressa, vašoj bazi podataka, konfiguraciji vaših obrazaca niti bilo kojem privatnom dijelu web-mjesta.

Posebice, nikad nisam stvorio račun, nikad poslao vaš obrazac za registraciju ili profil, nikad se prijavio niti išta poslao zahvaćenoj funkcionalnosti. Ništa nije poslano, testirano ni iskorišteno. To je ovdje važno, jer je slanje registracije blizu upravo one radnje na koju se ovaj problem odnosi, pa je “nisam to dirao” sva razlika između otkrivanja i upada.

Namjerno također ne objavljujem pojedinosti koje bi nekome pomogle da djeluje po ovom problemu. Gornji opis staje na razini koja je operateru web-mjesta potrebna, i ne povezujem nikakav proof-of-concept kod.

Ovo je opažanje temeljeno na verziji: vaše web-mjesto prijavljuje verziju u rasponu od 2.6.7 do 2.12.1. To nije tvrdnja da je vaše web-mjesto bilo iskoristivo u trenutku moje provjere. Budući da ovaj problem ovisi o tome kako su vaši obrasci izgrađeni i je li registracija otvorena (što ne mogu vidjeti), web-mjesto u zahvaćenom rasponu možda uopće nije izloženo, a web-mjesto u tom rasponu može biti zasebno zaštićeno drugim sredstvima, poput vatrozida za web-aplikacije ili unatrag prenesene ispravke. Ako ste već nadogradili, ili ovo na drugi način otklonili, nikakva radnja nije potrebna, i ispričavam se na smetnji.

Nemam webmastera / zapeo sam

Ako niste osoba koja održava web-mjesto, molim vas proslijedite ovu stranicu onome tko to čini (vašem web-programeru, agenciji ili pružatelju usluga smještaja). Brzo će prepoznati gornje korake.

Ako web-mjesto održavate sami i zapnete, rado ću vas besplatno uputiti u pravom smjeru. Javite mi se putem podataka za kontakt u nastavku.

Kontakt

Evan Harris, sigurnosni istraživač

Obraćam se zbog problema poput ovog isključivo kako bih pomogao operaterima da osiguraju svoja web-mjesta. Ako ne želite da vas ponovno kontaktiram, samo mi javite i to ću poštovati.

Izvori

Službene obavijesti i praćenje

Proizvođač / dodatak