Ako ste od mene primili e-poštu koja vas upućuje na ovu stranicu, to je zato što vaše web-mjesto, čini se, koristi verziju dodatka ProfilePress (WordPress dodatka koji se i dalje isporučuje pod nazivom mape wp-user-avatar, autora ProperFraction) koja spada u zahvaćeni raspon poznatog sigurnosnog problema. Ova stranica objašnjava u čemu je problem, kako utvrditi odnosi li se on uopće na vaše web-mjesto i kako se ažurirati.

Napomena o nazivu prije svega ostalog, jer zna zbuniti ljude: ovaj je dodatak započeo kao WP User Avatar i zadržao taj slug tijekom promjene naziva, pa se u vašim datotekama nalazi na /wp-content/plugins/wp-user-avatar/, dok ga administracija WordPressa navodi pod njegovim punim trenutačnim nazivom, “Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress”. WP User Avatar i ProfilePress isti su dodatak. Riječ je o WordPress dodatku od početka do kraja.

Prije svega, najvažnija činjenica o ovoj obavijesti: verzija u zahvaćenom rasponu sama po sebi ne znači da je vaše web-mjesto izloženo. Problem opisan u nastavku iskoristiv je samo kada ProfilePress objavljuje registracijski obrazac na sučelju koji uključuje polje za odabir uloge (kratki kod [reg-select-role] ili polje “reg-select-role” u graditelju obrazaca metodom povuci-i-ispusti), konfiguriran na određeni način. Ako vaše web-mjesto ne nudi javnu samostalnu registraciju ili vaši registracijski obrasci ne dopuštaju posjetitelju odabir uloge, vrlo vjerojatno nije izloženo čak ni na zahvaćenoj verziji. Vašu verziju dodatka mogu pročitati iz javnih datoteka, ali ne mogu vidjeti vaše registracijske obrasce, pa je ova obavijest upozorenje iz predostrožnosti, a ne potvrđeni nalaz o vašem web-mjestu.

Riječ je o CVE-2026-12497, neovlaštenoj eskalaciji ovlasti u dodatkovom rukovatelju registracijom na sučelju (CWE-269, neispravno upravljanje ovlastima). Tijelo koje je dodijelilo CVE nije objavilo ocjenu ozbiljnosti, a ja je ne izmišljam; za prosudbu je važno to da je neovlaštena, ali ograničena na neadministratorsku ulogu i uvjetovana konfiguracijom registracije opisanom gore. Zahvaća verzije 3.0.0 do 4.16.17, a ispravljena je u verziji 4.16.18. Ako koristite zahvaćenu verziju, ažurirajte ProfilePress na 4.16.18 ili noviji (trenutačno izdanje je 4.16.19). Nema naznaka da se ovaj problem igdje iskorištava.

Nekoliko riječi o hitnosti, jer je ovo uvjetovana obavijest: koliko vam je važna ovisi gotovo u potpunosti o tome objavljujete li takvu vrstu registracijskog obrasca. Ako ne nudite javnu samostalnu registraciju s poljem za odabir uloge, ažuriranje je rutinsko održavanje dodatka. Ako je nudite, molim vas tretirajte ažuriranje kao prioritet: u toj konfiguraciji ranjivost bi neovlaštenom posjetitelju mogla omogućiti da se registrira s višom ulogom nego što je vaš obrazac nudio (na primjer Editor ili Author). Čak i tada, ova je stranica upozorenje iz predostrožnosti, a ne izvještaj o incidentu, i ne podrazumijeva se nikakav hitni odgovor.

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

Je li ova poruka vjerodostojna?

Da. Ovo je dobronamjerna obavijest po načelu odgovorne objave od neovisnog istraživača sigurnosti. Ne tražim od vas novac, lozinke ni pristup vašem web-mjestu i nisam pokušavao provaliti u njega, bilo što učitati niti bilo što iskoristiti.

Sve što sam učinio jest da sam pogledao javno vidljive datoteke koje vaše web-mjesto poslužuje svakom posjetitelju (na isti način na koji je vaša naslovnica javna) i zabilježio broj verzije koji dodatak objavljuje u svojoj javnoj datoteci readme.txt. Sustava registracije izričito se nisam dotaknuo, a ništa u ovoj provjeri ne dira vaše podatke, vašu administratorsku zonu ni bilo koji privatni dio vašeg web-mjesta (više pojedinosti u odjeljku Što sam učinio, a što nisam u nastavku).

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

Zašto je ovo važno

ProfilePress je široko korišten dodatak za članstvo, registraciju korisnika i prijavu za WordPress (oko 100.000 aktivnih instalacija). Među ostalim, omogućuje web-mjestu da objavljuje registracijske obrasce na sučelju kako bi posjetitelji mogli stvarati vlastite račune, a ti obrasci mogu opcionalno uključivati polje koje posjetitelju dopušta da odabere koju će ulogu imati njegov novi račun.

U zahvaćenim verzijama rukovatelj registracijom određuje uloge koje obrazac nudi i uloge koje će prihvatiti koristeći dva različita dijela koda. Za neke valjane konfiguracije polja uloge, kod koji izračunava prihvaćene uloge ne uspije pročitati popis uloga obrasca i tiho se vraća na prihvaćanje bilo koje uredive uloge (to jest, bilo koje uloge osim administratora). Budući da usto nema noncea koji bi štitio javni rukovatelj registracijom, neovlašteni posjetitelj može poslati ulogu po vlastitom izboru i biti registriran s višom ulogom nego što je obrazac nudio, na primjer Editor ili Author umjesto namijenjenog Subscribera.

Dvije stvari drže ovo u perspektivi. Prvo, učinak ima čvrstu gornju granicu: dodatak izričito isključuje administratorsku ulogu iz onoga što registracija može dodijeliti, pa je ovo problem eskalacije ovlasti ograničen na neadministratorsku ulogu, a ne preuzimanje poslužitelja, preuzimanje administratora ili udaljeno izvršavanje koda. Drugo, ulazna točka objavljeni je registracijski obrazac s poljem za odabir uloge, pa problem doseže samo web-mjesta konfigurirana na taj način; web-mjesto bez javne samostalne registracije, ili čiji obrasci ne dopuštaju posjetitelju odabir uloge, vrlo vjerojatno nije izloženo čak ni na zahvaćenoj verziji. I da to ponovim jasno, nema naznaka aktivnog iskorištavanja: nije u CISA-inu katalogu poznatih iskorištavanih ranjivosti, a nisam upoznat ni s jednim izvještajem o iskorištavanju.

Ako je moja e-pošta navela ovaj problem, to znači da verzija koju vaše web-mjesto prijavljuje spada u zahvaćeni raspon. Nisam testirao je li vaše konkretno web-mjesto iskoristivo i ne mogu vidjeti kako su vaši registracijski obrasci konfigurirani; sve što sam opazio jest da web-mjesto prijavljuje zahvaćenu verziju.

Jesam li zahvaćen?

Dva pitanja o tome odlučuju, ovim redom.

Prvo: objavljujete li ProfilePress registracijski obrazac koji posjetitelju dopušta odabir uloge? Ovo je odlučujuće pitanje i samo vi na njega možete odgovoriti.

  • Ako vaše web-mjesto ne nudi javnu samostalnu registraciju, ili njegovi registracijski obrasci ne uključuju polje za odabir uloge (kratki kod [reg-select-role] ili polje “reg-select-role” u graditelju obrazaca), vrlo vjerojatno niste izloženi, čak ni na zahvaćenoj verziji. Ažuriranje se i dalje preporučuje, kao uobičajeno održavanje.
  • Ako vaše web-mjesto doista objavljuje registracijski obrazac na sučelju s poljem za odabir uloge, problem se odnosi na vas i trebali biste ažurirati bez odgode.
  • Za provjeru: u administraciji WordPressa pregledajte svoje ProfilePress registracijske obrasce ima li polja uloge, ili otvorite jednu od svojih registracijskih stranica u prozoru za privatno pregledavanje i pogledajte nudi li se posjetitelju koji nije prijavljen izbor uloge računa.

Drugo: koju verziju koristite? Ne morate mi vjerovati na riječ, a kod ovog dodatka verzija se prijavljuje pouzdano.

Iz administratorske zone WordPressa (mjerodavno):

  1. Prijavite se na svoju WordPress nadzornu ploču (obično na yourdomain.com/wp-admin).
  2. Idite na Plugins pa Installed Plugins.
  3. Pronađite stavku navedenu kao “Paid Membership Plugin … ProfilePress” (njezina je mapa wp-user-avatar) i zabilježite verziju prikazanu ispod njezina naziva. To je stvarno instalirana verzija.

Iz javnog manifesta (prijava nije potrebna): otvorite u pregledniku yourdomain.com/wp-content/plugins/wp-user-avatar/readme.txt. Redak Stable tag: blizu vrha verzija je koju vaša instalacija prijavljuje, a to je ista javna datoteka koju sam ja pročitao.

Jedno malo upozorenje ako ste od onih koji čitaju brojeve verzija iz URL-ova resursa: verziju procjenjujte iz vlastite vrijednosti ?ver= dodatkovog frontend.min.js ili frontend.min.css, koja je verzija ProfilePressa. Nemojte je čitati iz priloženog select2/select2.min.css, čiji je ?ver= (na primjer 7.0.2) vlastita verzija biblioteke select2 i nema nikakve veze s verzijom dodatka.

Zatim primijenite ovo pravilo, uz napomenu da se verzije uspoređuju brojčano, a ne abecedno:

  • 3.0.0 do 4.16.17: potencijalno zahvaćeno (ovisno o gornjem pitanju o registracijskom obrascu), ažurirajte odmah.
  • 4.16.18 ili novije: već ispravljeno. To uključuje trenutačno izdanje 4.16.19.
  • Starije od 3.0: nije zahvaćeno ovim problemom. Ranjivi rukovatelj registracijom prvi je put isporučen s promjenom naziva u ProfilePress 3.0; ranija linija “WP User Avatar” 1.x i 2.x, namijenjena samo avatarima, nije imala značajku registracije i ne nosi je. (U praksi je gotovo svaka trenutačna instalacija izdanje iz linije 4.16.x.)

Kako se nadograditi

Najsigurniji put jest ažuriranje kroz sam WordPress, uz prethodno stvaranje sigurnosne kopije:

  1. Napravite sigurnosnu kopiju svog web-mjesta (datoteke i baza podataka) prije unošenja izmjena. Većina pružatelja usluga hostinga nudi sigurnosne kopije jednim klikom, ili upotrijebite WordPress dodatak za sigurnosno kopiranje.
  2. U administratorskoj zoni WordPressa idite na Dashboard pa Updates, ili Plugins pa Installed Plugins. Ako je ažuriranje dodatka ProfilePress navedeno, instalirajte ga odavde.
  3. Ako radije koristite naredbeni redak, WP-CLI radi istu stvar: wp plugin update wp-user-avatar (naredba koristi naziv mape, wp-user-avatar).
  4. Ako se ažuriranje ne pojavi, najnovije izdanje možete preuzeti izravno sa stranice dodatka u direktoriju WordPress.org, ProfilePress, i ažurirati putem Plugins pa Add New Plugin pa Upload Plugin.
  5. Nakon ažuriranja potvrdite novi broj verzije (4.16.18 ili noviji; trenutačno izdanje je 4.16.19) prema gornjim koracima i provjerite da vaše stranice registracije i prijave rade normalno.

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

Nakon ažuriranja

Ažuriranje na 4.16.18 ili noviji zatvara problem i za većinu je web-mjesta to cijeli posao. Nema naznaka da je ova ranjivost igdje iskorištavana, pa se ne podrazumijeva nikakav hitni odgovor: ne morate tretirati svoje web-mjesto kao kompromitirano niti ga isključivati.

Jedan naknadni korak vrijedi razmotriti, a uvjetovan je istim pitanjem o registraciji. Ako je vaše web-mjesto objavljivalo ProfilePress registracijski obrazac s poljem za odabir uloge dok je bilo na zahvaćenoj verziji, tada je barem teoretski bilo moguće da se posjetitelj registrirao s višom ulogom nego što je bilo namijenjeno, iako nema dokaza da je itko to učinio. U tom je slučaju razumna jedna rutinska mjera opreza:

  • Pregledajte svoje nedavne registracije korisnika ima li ijednog računa stvorenog s neočekivano visokom ulogom (na primjer Editor ili Author kojeg ne prepoznajete), na uobičajen način na koji biste pregledali aktivnost web-mjesta, i prilagodite ili uklonite sve što izgleda neumjesno.

Tretirajte to kao uobičajeno sigurnosno održavanje, a ne kao odgovor na incident. Ako ne nudite javnu samostalnu registraciju s poljem za odabir uloge, samo ažuriranje je dovoljno.

Što sam učinio, a što nisam

Da budem potpuno transparentan o provjeri koja stoji iza moje e-pošte: čitao sam samo javne datoteke koje vaše web-mjesto već poslužuje svakom posjetitelju, konkretno javnu datoteku dodatka readme.txt i vašu naslovnicu. Nisam pristupao vašoj administratorskoj zoni WordPressa, vašoj bazi podataka ni bilo kojem privatnom dijelu web-mjesta. Posebno, ranjivog puta registracije nisam se dotaknuo i ništa nisam testirao niti iskorištavao.

Ovo je opažanje temeljeno na verziji: vaše web-mjesto prijavljuje verziju u zahvaćenom rasponu. Budući da ovaj problem ovisi o konfiguraciji, web-mjesto u tom rasponu možda uopće nije izloženo (ako ne nudi javnu samostalnu registraciju ili njegovi obrasci ne nose polje za odabir uloge), a može biti i već ublaženo drugim sredstvima, poput vatrozida za web-aplikacije. Ova obavijest nije tvrdnja da je vaše web-mjesto bilo iskoristivo u trenutku moje provjere.

Nemam webmastera / zapeo sam

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

Ako sami održavate web-mjesto i zapnete, rado ću vam besplatno pomoći usmjeriti vas u pravom smjeru. Javite se koristeći kontaktne podatke u nastavku.

Kontakt

Evan Harris, istraživač sigurnosti

Obraćam se u vezi s ovakvim problemima isključivo kako bih pomogao operaterima osigurati njihova web-mjesta. Ako biste radije da vas se više ne kontaktira, samo mi javite i to ću poštovati.

Reference

Službene obavijesti i praćenje

Proizvođač / dodatak