Kritická chyba v pluginu Forminator umožňuje neověřený upload PHP souboru a ovládnutí webu

Autor: Správa WordPress

Formulářový plugin Forminator Forms běží na více než 600 000 webech, a právě proto nově odhalená zranitelnost patří mezi ty, které by neměli podcenit ani provozovatelé menších firemních stránek. Vada označená jako CVE-2026-15748 má na stupnici CVSS skóre 9,8 z 10, tedy nejvyšší stupeň závažnosti. Útočníkovi umožňuje bez přihlášení nahrát na web spustitelný PHP soubor, což v praxi vede k plnému převzetí webu. Jen pár dní předtím se přitom objevila podobně kritická chyba v pluginu User Profile Builder – a společně jsou připomínkou, jak rychle dokáže jedna chybná funkce ohrozit celý web.

Co se přesně stalo

Zranitelnost nahlásil prostřednictvím bug bounty programu společnosti Wordfence bezpečnostní výzkumník vystupující pod přezdívkou “daroo”, který za svůj objev získal odměnu 2 048 dolarů. Wordfence zprávu přijala a vzápětí ověřila včetně přesvědčivého důkazu konceptu. Celá časová osa je dobře zdokumentovaná:

  • 11. července 2026 – Wordfence přijala nahlášení zranitelnosti.
  • 14. července 2026 – zpráva ověřena, potvrzen exploit PoC.
  • 14. července 2026 – plný popis chyby předán výrobci pluginu.
  • 20. července 2026 – vývojáři zaslali opravu ke kontrole.
  • 31. července 2026 – opravená verze 1.56.2 byla zveřejněna.

Chyba se týká všech verzí pluginu do 1.56.1 včetně. Ve spojení s tím, že informace o zranitelnosti zpravidla rychle zkoluje po bezpečnostních kanálech, platí, že čím déle web zůstane na staré verzi, tím vyšší je riziko zneužití.

Jak zranitelnost funguje

Podle technického rozboru Wordfence leží kořen problému ve funkci handle_file_upload(), konkrétně v nedostatečné validaci typu nahrávaného souboru. Plugin používá pro odstranění nebezpečných přípon takzvaný seznam zakázaných typů (blocklist), který ovšem provádí přesné porovnávání klíčů. Útočník proto může poslat soubor s příponou ph(p), kterou WordPress i tak interpretuje jako .php, ale blocklist ji v tomto tvaru nepozná.

Celý řetězec kombinuje hned několik slabin:

  • Pole Select jako nosič útoku – plugin zpracovává pole typu select, radio a checkbox jako celé vnořené hodnoty. Útočník tak přes Select pole vloží falešný záznam, který se tváří jako upload, a dodá vlastní nastavení přijatelných typů souborů.
  • Nedostatečná validace MIME typů – vlastní povolené přípony se spojí do mapy, přes kterou pak projde soubor s klíčem ph(p)|text/x-php, přestože jde ve skutečnosti o PHP skript.
  • Důvěra v konfiguraci pole – zpracování uploadů přebírá field_type a nastavení přímo z útočníkem upravených dat.

Aby byl útok vůbec možný, musí na formuláři souběžně existovat:

  • pole File Upload (nahrání souboru)
  • pole Select (výběr z roletky)

Forminator je oblíbený tvůrce formulářů typu „drag and drop”, který podporuje kontaktní formuláře, ankety, kvízy i nahrávání souborů. Takových formulářů je v reálném provozu celá řada.

Kdy je web nejvíc ohrožený

Velmi důležitá je zmínka o úložišti nahraných souborů. Ve výchozí konfiguraci se soubory ukládají do adresáře chráněného souborem .htaccess, který zabraňuje spuštění PHP. V takovém prostředí se útok nemusí plně podařit.

Situace se ale změní, pokud si správce nastavil vlastní úložiště pro nahrávky (Custom File Upload Storage root), jak uvádí analýza Wordfence. Tento adresář může vzniknout bez ochranného .htaccess – vytvoří se totiž až ve chvíli, kdy je poprvé potřeba, tedy při frontendovém požadavku, kdy pomocný WordPress kód pro zápis .htaccess ještě není načten. Útočníkovi pak stačí soubor nahrát a rovnou si ho otevřít, čímž spustí svůj kód. Důsledkem je úplné převzetí webu, typicky přes webshelly, které pak slouží k dalšímu zneužití.

Druhá kritická chyba: User Profile Builder

Jen o pár dní dřív upozornila Wordfence na další zásadní vadu, tentokrát v pluginu User Profile Builder, který používá přes 40 000 webů. Chyba označená jako CVE-2026-15826 (CVSS rovněž 9,8) umožňuje útočníkovi bez přihlášení se přihlásit za účet správce (user ID 1) a tím převzít celý web.

Podstatou je takzvaná type confusion (záměna typů) ve funkci wppb_log_in_user(). Plugin zavolá funkci absint() na návratovou hodnotu wp_insert_user() dřív, než provede kontrolu is_wp_error(). Když útočník vyplní registrační formulář s uživatelským jménem o délce 61 až 70 znaků, jádro WordPress sice registraci odmítne (jméno delší než 60 znaků neprojde) a vrátí objekt WP_Error, ale absint() tento objekt převede na číslo 1. Plugin se pak mylně domnívá, že se registrace povedla, a vystaví autologin nonce připojený k účtu s ID 1.

Útok je ovšem možný jen na webech s aktivním nastavením „Automatically Log In after Registration” (automatické přihlášení po registraci). Oprava, verze 3.16.5, vyšla 16. července 2026. Za objev vdělčí Wordfence výzkumníkovi Supakiad S. (m3ez), který si odnesl odměnu 975 dolarů. Uživatelé placené verze Wordfence firewall dostali ochranu 15. července, uživatelé bezplatné verze o třicet dní později 14. srpna.

Jak se bránit a co teď udělat

Obě popsané zranitelnosti jsou kritické, ale náprava je poměrně jednoduchá – stačí aktualizovat. Doporučené kroky:

  1. Zkontrolujte verzi pluginu Forminator a aktualizujte na 1.56.2 nebo novější. Tím vyřešíte CVE-2026-15748.
  2. Stejně postupujte u User Profile Builderu – cílová verze je 3.16.5 nebo novější, zejména pokud máte zapnuté automatické přihlašování po registraci.
  3. Zkontrolujte úložiště nahraných souborů. Pokud používáte vlastní úložiště pro upload ve Forminatoru, ověřte, že je v něm správně nastaven .htaccess, nebo PHP spuštění v tomto adresáři zablokujte.
  4. Zvažte vypnutí automatického přihlášení po registraci, pokud ho nepotřebujete – eliminujete tím celou třídu útoků.
  5. Průběžně sledujte aktualizace. Pro pluginy, které nahrávají soubory od nepřihlášených návštěvníků, je rychlá aktualizace dvojnásob důležitá.

Pokud web spravujete jen okrajově nebo ho provozujete pro klienta, ověřte, že aktualizace proběhla opravdu všude – ne jen na hlavní doméně. Kritické chyby v oblíbených pluginech, jako je Forminator, patří mezi nejčastější cesty, kterými se útočníci k WordPress webům dostávají. Nechte si proto aktualizace pohlídat a starou verzi pluginu za žádnou cenu nenechávejte na webu déle, než je nezbytně nutné.

Zdroje

Zdroj: Wordfence – 600,000 WordPress Sites Affected by Arbitrary File Upload Vulnerability in Forminator Forms (17. 8. 2026)

Zdroj: The Hacker News – Forminator WordPress Flaw Can Enable Unauthenticated RCE via Malicious PHP Uploads (17. 8. 2026)

Zdroj: Wordfence – 40,000 WordPress Sites Affected by Authentication Bypass Vulnerability in User Profile Builder (14. 8. 2026)

Potřebujete s WordPress webem pomoct? Kontakt najdete přes formulář na stránce Kontakt.