Pokud jste ode mne dostali e-mail, který vás odkázal na tuto stránku, pak proto, že váš web zřejmě používá verzi pluginu ProfilePress (WordPressový plugin, který se stále dodává pod názvem složky wp-user-avatar, od ProperFraction), která spadá do dotčeného rozsahu známého bezpečnostního problému. Tato stránka vysvětluje, o jaký problém jde, jak zjistit, zda se vašeho webu vůbec týká, a jak aktualizovat.

Ještě než cokoli dalšího, poznámka k názvu, protože lidi mate: tento plugin vznikl jako WP User Avatar a při své změně značky si tento slug ponechal, takže ve vašich souborech se nachází v /wp-content/plugins/wp-user-avatar/, zatímco administrace WordPressu jej uvádí pod jeho plným aktuálním názvem “Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress”. WP User Avatar a ProfilePress jsou tentýž plugin. Jde po celou dobu o WordPressový plugin.

Především to nejdůležitější, co je k tomuto upozornění třeba říci: verze v dotčeném rozsahu sama o sobě neznamená, že je váš web ohrožen. Níže popsaný problém je zneužitelný pouze tehdy, když ProfilePress zveřejňuje registrační formulář na frontendu, který obsahuje pole pro výběr role (shortcode [reg-select-role] nebo pole “reg-select-role” ve formulářovém editoru typu drag-and-drop), nastavený určitým způsobem. Pokud váš web nenabízí veřejnou samoregistraci nebo vaše registrační formuláře neumožňují návštěvníkovi zvolit roli, je velmi pravděpodobně neohrožen i na dotčené verzi. Verzi vašeho pluginu dokážu přečíst z veřejných souborů, ale nevidím vaše registrační formuláře, takže toto upozornění je preventivní varování, nikoli potvrzený nález o vašem webu.

Jde o CVE-2026-12497, neautentizovanou eskalaci oprávnění (privilege escalation) v obsluze frontendové registrace pluginu (CWE-269, nesprávná správa oprávnění). Autorita, která CVE přidělila, nezveřejnila skóre závažnosti a já si žádné nevymýšlím; pro posouzení je podstatné, že jde o neautentizovaný problém, který je však omezen na roli nižší než administrátor a je podmíněn výše popsaným nastavením registrace. Postihuje verze 3.0.0 až 4.16.17 a je opraven ve verzi 4.16.18. Pokud používáte dotčenou verzi, aktualizujte ProfilePress na 4.16.18 nebo novější (aktuální vydání je 4.16.19). Nic nenasvědčuje tomu, že by tento problém byl kdekoli zneužíván.

Poznámka k naléhavosti, protože jde o podmíněné upozornění: nakolik na tom pro vás záleží, závisí téměř výhradně na tom, zda takový registrační formulář zveřejňujete. Pokud nenabízíte veřejnou samoregistraci s polem pro výběr role, je aktualizace běžnou údržbou pluginu. Pokud ano, berte prosím aktualizaci jako prioritu: v takovém nastavení by chyba mohla neautentizovanému návštěvníkovi umožnit zaregistrovat se s vyšší rolí, než jakou váš formulář nabízel (například Editor nebo Autor). I tehdy je tato stránka preventivním upozorněním, nikoli zprávou o incidentu, a nevyplývá z ní žádná nouzová reakce.

Jde o zranitelnost pluginu, nikoli jádra WordPressu. Plně aktuální WordPress vás neochrání, pokud je samotný plugin ProfilePress na dotčené verzi.

Je tato zpráva důvěryhodná?

Ano. Jde o upozornění v dobré víře podle zásad zodpovědného zveřejňování od nezávislého bezpečnostního výzkumníka. Nežádám vás o peníze, hesla ani přístup k vašemu webu a nepokoušel jsem se do něj proniknout, cokoli nahrát ani cokoli zneužít.

Pouze jsem se podíval na veřejně viditelné soubory, které váš web poskytuje každému návštěvníkovi (stejně jako je veřejná vaše úvodní stránka), a zaznamenal jsem číslo verze, které plugin zveřejňuje ve svém veřejném souboru readme.txt. Registračního systému jsem se výslovně nedotkl a nic na této kontrole se nedotýká vašich dat, vaší administrace ani žádné soukromé části vašeho webu (podrobněji v části Co jsem udělal a co ne níže).

Pokud si chcete ověřit, kdo jsem, podívejte se na kontaktní údaje v dolní části této stránky a na stránku O této stránce.

Proč na tom záleží

ProfilePress je široce používaný plugin pro členství, registraci uživatelů a přihlašování pro WordPress (přibližně 100 000 aktivních instalací). Mimo jiné umožňuje webu zveřejňovat frontendové registrační formuláře, aby si návštěvníci mohli vytvářet vlastní účty, a tyto formuláře mohou volitelně obsahovat pole, které návštěvníkovi umožní zvolit, jakou roli má jeho nový účet mít.

V dotčených verzích obsluha registrace určuje role, které formulář nabízí, a role, které přijme, pomocí dvou různých částí kódu. U některých platných konfigurací pole role kód, který počítá přijímané role, nedokáže načíst seznam rolí formuláře a tiše se uchýlí k přijetí jakékoli upravitelné role (tedy jakékoli role kromě administrátora). Protože navíc veřejnou obsluhu registrace nechrání žádný nonce, může neautentizovaný návštěvník odeslat roli podle vlastní volby a být zaregistrován s vyšší rolí, než jakou formulář nabízel, například Editor nebo Autor namísto zamýšleného Odběratele.

Dvě věci to pomáhají udržet v perspektivě. Zaprvé, dopad má pevný strop: plugin výslovně vylučuje roli administrátora z toho, co může registrace přidělit, takže jde o problém eskalace oprávnění omezený na roli nižší než administrátor, nikoli o převzetí serveru, převzetí administrátorského účtu ani vzdálené spuštění kódu. Zadruhé, vstupním bodem je zveřejněný registrační formulář s polem pro výběr role, takže problém dosáhne pouze na weby nastavené tímto způsobem; web bez veřejné samoregistrace nebo web, jehož formuláře neumožňují návštěvníkovi zvolit roli, je velmi pravděpodobně neohrožen i na dotčené verzi. A aby to bylo řečeno zcela jasně, nic nenasvědčuje aktivnímu zneužívání: není v katalogu Known Exploited Vulnerabilities agentury CISA a nejsem si vědom žádných hlášení o zneužití.

Pokud můj e-mail tento problém uváděl, znamená to, že verze, kterou váš web hlásí, spadá do dotčeného rozsahu. Netestoval jsem, zda je konkrétně váš web zneužitelný, a nevidím, jak jsou nastaveny vaše registrační formuláře; pozoroval jsem pouze to, že web hlásí dotčenou verzi.

Týká se mě to?

Rozhodují o tom dvě otázky, v tomto pořadí.

Zaprvé: zveřejňujete registrační formulář ProfilePress, který umožňuje návštěvníkovi zvolit roli? To je rozhodující otázka a odpovědět na ni můžete jen vy.

  • Pokud váš web nenabízí veřejnou samoregistraci nebo jeho registrační formuláře neobsahují pole pro výběr role (shortcode [reg-select-role] nebo pole “reg-select-role” ve formulářovém editoru), jste velmi pravděpodobně neohroženi, i na dotčené verzi. Aktualizace se přesto doporučuje jako běžná údržba.
  • Pokud váš web skutečně zveřejňuje frontendový registrační formulář s polem pro výběr role, problém se vás týká a měli byste bezodkladně aktualizovat.
  • Jak to zkontrolovat: v administraci WordPressu se ve svých registračních formulářích ProfilePress podívejte po poli role, nebo otevřete některou ze svých registračních stránek v anonymním okně prohlížeče a zjistěte, zda je nepřihlášenému návštěvníkovi nabídnut výběr role účtu.

Zadruhé: jakou verzi používáte? Nemusíte mi věřit na slovo a u tohoto pluginu se verze hlásí spolehlivě.

Z administrace WordPressu (směrodatné):

  1. Přihlaste se do administrace WordPressu (obvykle na adrese yourdomain.com/wp-admin).
  2. Přejděte na Pluginy poté Instalované pluginy.
  3. Najděte položku uvedenou jako “Paid Membership Plugin … ProfilePress” (její složka je wp-user-avatar) a poznamenejte si verzi zobrazenou pod jejím názvem. To je skutečně nainstalovaná verze.

Z veřejného manifestu (bez přihlášení): otevřete v prohlížeči yourdomain.com/wp-content/plugins/wp-user-avatar/readme.txt. Řádek Stable tag: blízko horní části je verze, kterou vaše instalace hlásí, a jde o stejný veřejný soubor, který jsem četl.

Malé upozornění, pokud patříte k lidem, kteří čtou čísla verzí z URL adres zdrojů: verzi posuzujte podle hodnoty ?ver= vlastního souboru frontend.min.js nebo frontend.min.css pluginu, což je verze ProfilePress. Nečtěte ji z přibaleného select2/select2.min.css, jehož ?ver= (například 7.0.2) je vlastní verze knihovny select2 a s verzí pluginu nemá nic společného.

Poté použijte toto pravidlo a mějte na paměti, že verze se porovnávají číselně, nikoli abecedně:

  • 3.0.0 až 4.16.17: potenciálně dotčené (v závislosti na výše uvedené otázce ohledně registračního formuláře), aktualizujte ihned.
  • 4.16.18 nebo novější: již opravené. To zahrnuje aktuální vydání 4.16.19.
  • Starší než 3.0: tímto problémem nedotčené. Zranitelná obsluha registrace poprvé přišla se změnou značky na ProfilePress 3.0; dřívější řada “WP User Avatar” 1.x a 2.x zaměřená pouze na avatary neměla registrační funkci a tuto obsluhu nenese. (V praxi je v podstatě každá aktuální instalace vydáním řady 4.16.x.)

Jak aktualizovat

Nejbezpečnější cestou je aktualizace přímo přes WordPress, a to po předchozí záloze:

  1. Zazálohujte svůj web (soubory a databázi) před provedením změn. Většina poskytovatelů hostingu nabízí zálohy na jedno kliknutí, případně použijte zálohovací plugin pro WordPress.
  2. V administraci WordPressu přejděte na Nástěnka poté Aktualizace, nebo Pluginy poté Instalované pluginy. Pokud je aktualizace ProfilePress uvedena, nainstalujte ji odsud.
  3. Pokud dáváte přednost příkazové řádce, WP-CLI udělá totéž: wp plugin update wp-user-avatar (příkaz používá název složky, wp-user-avatar).
  4. Pokud se žádná aktualizace neobjeví, můžete si nejnovější vydání stáhnout přímo ze stránky pluginu v adresáři WordPress.org, ProfilePress, a aktualizovat přes Pluginy poté Přidat nový plugin poté Nahrát plugin.
  5. Po aktualizaci potvrďte nové číslo verze (4.16.18 nebo novější; aktuální vydání je 4.16.19) podle výše uvedených kroků a zkontrolujte, že vaše registrační a přihlašovací stránky fungují běžně.

Když už jste u toho, vyplatí se ověřit, že jsou aktuální i jádro WordPressu a vaše ostatní pluginy, protože stejná zásada platí pro všechny.

Po aktualizaci

Aktualizace na 4.16.18 nebo novější problém uzavírá a pro většinu webů je to celý úkol. Nic nenasvědčuje tomu, že by tato chyba byla kdekoli zneužita, takže žádná nouzová reakce z toho nevyplývá: nemusíte svůj web považovat za napadený ani ho odpojovat.

Jeden následný krok stojí za zvážení a závisí na téže otázce ohledně registrace. Pokud váš web zveřejňoval registrační formulář ProfilePress s polem pro výběr role, zatímco byl na dotčené verzi, pak bylo přinejmenším teoreticky možné, že se návštěvník zaregistroval s vyšší rolí, než bylo zamýšleno, přestože není žádný důkaz, že to někdo udělal. V takovém případě je rozumné jedno běžné opatření:

  • Projděte si své nedávné registrace uživatelů, zda mezi nimi není účet vytvořený s nečekaně vysokou rolí (například Editor nebo Autor, kterého nepoznáváte), obvyklým způsobem, jakým aktivitu webu kontrolujete, a upravte nebo odstraňte cokoli, co působí nepatřičně.

Berte to jako běžnou bezpečnostní údržbu, nikoli jako reakci na incident. Pokud nenabízíte veřejnou samoregistraci s polem pro výběr role, stačí samotná aktualizace.

Co jsem udělal a co ne

Abych byl ohledně kontroly, která předcházela mému e-mailu, zcela transparentní: četl jsem pouze veřejné soubory, které váš web už teď poskytuje každému návštěvníkovi, konkrétně veřejný soubor pluginu readme.txt a vaši úvodní stránku. Nepřistupoval jsem k vaší administraci WordPressu, k vaší databázi ani k žádné soukromé části webu. Zejména jsem se nedotkl zranitelné registrační cesty a nic jsem netestoval ani nezneužil.

Jde o pozorování založené na verzi: váš web hlásí verzi v dotčeném rozsahu. Protože tento problém závisí na nastavení, web v tomto rozsahu nemusí být vůbec ohrožen (pokud nenabízí veřejnou samoregistraci nebo jeho formuláře nemají pole pro výběr role) a může už být také zmírněn jinými prostředky, například webovým aplikačním firewallem. Toto upozornění není tvrzením, že váš web byl v době mé kontroly zneužitelný.

Nemám webmastera / nevím si rady

Pokud nejste tou osobou, která web spravuje, přepošlete prosím tuto stránku tomu, kdo to dělá (vašemu vývojáři webu, agentuře nebo poskytovateli hostingu). Výše uvedené kroky rychle rozpozná.

Pokud web spravujete sami a zaseknete se, rád vám zdarma pomohu nasměrovat se správným směrem. Ozvěte se pomocí kontaktních údajů níže.

Kontakt

Evan Harris, bezpečnostní výzkumník

Na provozovatele se s problémy, jako je tento, obracím výhradně proto, abych jim pomohl zabezpečit jejich weby. Pokud si nepřejete být znovu kontaktováni, stačí mi to sdělit a budu to respektovat.

Zdroje

Oficiální upozornění a evidence

Dodavatel / plugin