Sigurnosna obavijest za Profile Builder
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 Profile Builder (WordPress dodatka navedenog na
WordPress.org kao „Profile Builder” / „User Profile Builder”, autora Cozmoslabs, koji se u
vašim datotekama nalazi na putanji /wp-content/plugins/profile-builder/) 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.
Napomena: ovo nije ProfilePress. Postoji drugi WordPress dodatak sličnog naziva (ProfilePress,
mapa wp-user-avatar), o kojem pišem zasebno. Ako je mapa vašeg dodatka wp-user-avatar, a ne
profile-builder, ovo nije stranica koju tražite; pogledajte umjesto toga
obavijest za ProfilePress. Sve što slijedi odnosi se isključivo na
Profile Builder autora Cozmoslabs.
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 koja su uključila jednu određenu postavku, a ja izvana ne mogu vidjeti vaše postavke:
- Postavka „Automatically Log In” dodatka Profile Builder, koja novog korisnika odmah nakon dovršetka registracije automatski prijavljuje, mora biti uključena.
- Ta je postavka isključena prema zadanim postavkama. Web-mjesto koje je nikada nije uključilo nije izloženo ovom propustu, čak ni na zahvaćenoj verziji.
Verziju vašeg dodatka mogu očitati iz javne datoteke, ali ne mogu vidjeti vašu konfiguraciju, pa je ova obavijest preventivno upozorenje, a ne potvrđen nalaz o vašem web-mjestu.
Riječ je o propustu CVE-2026-15368, neautenticiranom preuzimanju računa u koraku automatske prijave dodatka. Zahvaća verzije 2.1.4 do 3.16.3, a ispravljena je u verziji 3.16.4. Ako koristite zahvaćenu verziju, ažurirajte Profile Builder na 3.16.4 ili noviju verziju. CVSS ocjena iznosi 8.1. Nisam upoznat s postojanjem javno dostupnog koda za iskorištavanje ovog propusta.
Nekoliko riječi o hitnosti, jer je ova obavijest uvjetna. Ako ne koristite automatsku prijavu nakon registracije, ažuriranje je uobičajeno održavanje dodatka. Ako je koristite, ažuriranje shvatite kao prioritet: u toj konfiguraciji propust bi mogao posjetitelju bez ikakvog računa omogućiti da dobije prijavljenu sesiju koja pripada postojećem korisniku čiju e-adresu poznaje, uključujući administratora, čime bi mu bila predana kontrola nad web-mjestom.
Riječ je o propustu dodatka, a ne jezgre WordPressa. Potpuno ažuriran WordPress ne štiti vas ako je sam dodatak Profile Builder 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, registrirati se na njemu 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. Izričito nisam poslao vaš obrazac za registraciju, nisam otvorio račun i nisam se približio koraku automatske prijave. 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
Profile Builder dodaje WordPress web-mjestu obrasce za registraciju, prijavu i uređivanje profila na prednjoj strani, tako da posjetitelji mogu otvoriti račun i upravljati vlastitim računima bez ikakvog pristupa administraciji. Jedna od njegovih pogodnosti jest mogućnost da novog korisnika automatski prijavi u trenutku dovršetka registracije, čime mu štedi ponovno utipkavanje lozinke na zasebnom obrascu za prijavu.
U zahvaćenim verzijama ta je pogodnost pogrešno odlučivala koji će račun prijaviti. Umjesto da upotrijebi račun koji je upravo stvorio, dodatak je tražio račun prema e-adresi upisanoj u obrazac za registraciju i prijavljivao upravo taj. Ako je upisana adresa pripadala nekome tko je na web-mjestu već imao račun, osoba koja je ispunjavala obrazac dobila je prijavljenu sesiju za taj postojeći račun.
Iz toga proizlaze dvije stvari, koje vuku u suprotnim smjerovima. Prva je da se ovo događa samo ondje gdje je automatska prijava uključena. S isključenom postavkom dodatak nikada ne pokreće korak automatske prijave, pa web-mjesto u tom stanju nije dosežno kroz ovaj propust. Druga je da ondje gdje je postavka uključena, ništa ne ograničava posljedicu na obične članove: predani račun jest onaj koji odgovara upisanoj adresi, a administratorova adresa obično nije tajna. Nije potreban nikakav račun, nikakva lozinka niti bilo kakva suradnja žrtve.
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še postavke 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še postavke konfigurirane. Sve što sam opazio jest verzija.
Jesam li zahvaćen?
O tome odlučuju dva pitanja, ovim redoslijedom.
Prvo: je li uključena postavka „Automatically Log In”?
Ovo je ključno pitanje, a odgovoriti na njega možete samo vi. Provjera vlastitih postavki posve je sigurna i upravo je to smisao ove stranice.
- Prijavite se u nadzornu ploču WordPressa (obično na
yourdomain.com/wp-admin). - U bočnoj traci otvorite izbornik Profile Builder, zatim Settings.
- Potražite preklopnik s oznakom Automatically Log In, opisan kao „Enable to automatically log in new users after successful registration”.
- Ako je taj preklopnik isključen, ovaj propust ne doseže vaše web-mjesto, čak ni na zahvaćenoj verziji. Ažuriranje je ipak vrijedno provesti kao uobičajeno održavanje.
- Ako je uključen, propust se odnosi na vas i trebali biste žurno ažurirati.
Još jedno mjesto vrijedno provjere, ako imate više od jedne stranice za registraciju: pojedinačna stranica koja sadrži Profile Builder obrazac za registraciju može imati vlastitu kopiju te postavke, koja nadjačava globalnu. Ako održavate više stranica za registraciju, vrijedi provjeriti svaku od njih umjesto da se oslanjate samo na globalni preklopnik.
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 jedan poseban način provjere koji će vas zavarati, pa ovaj dio vrijedi pažljivo pročitati.
Iz administracije WordPressa (mjerodavan izvor):
- U nadzornoj ploči WordPressa idite na Dodaci, zatim Instalirani dodaci.
- Pronađite Profile Builder, stavku čija je mapa
profile-builder, i pogledajte verziju prikazanu ispod njezina naziva.
Iz javnog manifesta (bez potrebe za prijavom): otvorite
yourdomain.com/wp-content/plugins/profile-builder/readme.txt u pregledniku. Redak
Stable tag: blizu vrha jest verzija koju vaša instalacija prijavljuje, i to je jedan od dva
javna izvora koje čitam.
Iz izvornog koda vaše stranice (bez potrebe za prijavom): pogledajte izvorni kod stranice na svom web-mjestu koja prikazuje Profile Builder obrazac i potražite dodatkovu stilsku datoteku za prednju stranu, točno na ovoj putanji:
/wp-content/plugins/profile-builder/assets/css/style-front-end.css?ver=...
Broj uz ?ver= pridodan toj jednoj datoteci vlastita je verzija dodatka. Kod ovog dodatka ona
točno prati izdanje, zbog čega je smatram pouzdanim drugim očitanjem.
Zamka koju ovdje treba izbjeći, a lako je u nju upasti. Profile Builder unutar vlastite mape
dodatka isporučuje i druge komponente, koje nose vlastite, nepovezane brojeve verzija.
Paketirani add-on user-profile-picture pod add-ons-free/user-profile-picture/ ostao je na 2.6.0
kroz nekoliko izdanja Profile Buildera ne pomaknuvši se, a postoji i paketirana Divi integracija
pod assets/misc/divi/ označena brojem 1.0.0. Oba ta broja izgledaju zabrinjavajuće staro u
usporedbi s 3.16.4, a nijedan od njih ne govori ništa o ovom propustu. Ako verziju čitate iz
izvornog koda stranice, provjerite da je putanja datoteke s koje je čitate točno
assets/css/style-front-end.css, i ništa drugo.
Zatim primijenite ovo pravilo, imajući na umu da se verzije uspoređuju brojčano, a ne
abecedno, pa je 3.10.0 novija od 3.9.9 iako kao tekst izgleda manje. Ovaj dodatak doista prolazi
kroz svaku liniju izdanja od .0 do .9 prije prelaska na sljedeću, pa ta razlika ovdje ima
značaj:
- 2.1.4 do 3.16.3: potencijalno zahvaćeno, ovisno o pitanju o postavci iznad. Ažurirajte odmah.
- 3.16.4 ili novije: već ispravljeno u pogledu ovog propusta. Trenutačno izdanje u vrijeme pisanja jest 3.16.6, a najbolji je potez preuzeti najnoviju dostupnu verziju.
- Starije od 2.1.4: nije zahvaćeno ovim propustom. Konkretna pogreška opisana iznad uvedena je u verziji 2.1.4, pa su uistinu starije instalacije izvan tog raspona. Ipak, tako staro izdanje uvelike zaostaje u svemu ostalom, pa je ažuriranje vrijedno provesti iz općih razloga.
Ako iz nijedne od gornje tri provjere ne možete dobiti čitljivu verziju, to je kod ovog dodatka
uobičajeno i nije znak ničega: stilska se datoteka učitava samo na stranicama koje doista
prikazuju jedan od njegovih obrazaca, a dodaci za predmemoriranje ili optimizaciju rutinski
uklanjaju vrijednost ?ver=. Zaslon u administraciji iz prvog koraka uvijek daje odgovor.
Kako se nadograditi
Najsigurniji je put ažurirati se kroz sam WordPress, uz prethodnu sigurnosnu kopiju:
- 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.
- U administraciji WordPressa idite na Nadzorna ploča, zatim Ažuriranja, ili na Dodaci, zatim Instalirani dodaci. Ako je navedeno ažuriranje za Profile Builder, instalirajte ga odavde.
- Ako vam je draža naredbena linija, WP-CLI radi isto:
wp plugin update profile-builder(naredba koristi naziv mape). - Ako se ažuriranje ne pojavi, najnovije izdanje možete preuzeti izravno sa stranice dodatka u katalogu WordPress.org, Profile Builder, i ažurirati preko Dodaci, zatim Dodaj novi dodatak, zatim Prenesi dodatak.
- Nakon ažuriranja potvrdite novi broj verzije (3.16.4 ili noviji) prema gornjim koracima i provjerite rade li vaši obrasci za registraciju, prijavu i uređivanje profila i dalje ispravno.
Ako koristite bilo koji od Cozmoslabsovih plaćenih Profile Builder dodataka, ažurirajte ih zajedno s osnovnim dodatkom, jer su njihova izdanja obično usklađena.
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 3.16.4 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 postavci. Ako je vaše web-mjesto imalo uključenu postavku Automatically Log In dok je koristilo zahvaćenu verziju, tada je barem teoretski bilo moguće da je nekome predana sesija na postojećem računu. Ažuriranje zatvara propust, ali ne poništava pristup koji je već ostvaren, pa je u tom slučaju razumno poduzeti nekoliko uobičajenih mjera opreza:
- Pregledajte svoje administratorske račune i sve druge važne račune, tražeći unose koje ne prepoznajete, e-adrese koje više nisu prave osobe, ili promjene uloga koje niste vi napravili.
- Pregledajte nedavne prijave i sve trenutačno 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 vaše web-mjesto nikada nije imalo uključenu automatsku prijavu, 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 vaš obrazac za registraciju, nikada nisam otvorio račun i nikada nisam dirao korak automatske prijave. Ništa nije poslano, testirano ni iskorišteno. To je ovdje važnije nego na većini ovih stranica, jer je registracija 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 postavci koju 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 ili naknadno primijenjenim ispravkom.
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č
- 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