Bezpečnostní upozornění k pluginu Forminator Forms
Pokud jste ode mě obdrželi e-mail, který vás odkazuje na tuto stránku, je to proto, že se zdá, že váš web běží na verzi pluginu Forminator Forms (plugin pro WordPress od WPMU DEV, který se nachází ve vašich souborech na cestě /wp-content/plugins/forminator/), která spadá do ovlivněného rozsahu známého bezpečnostního problému. Tato stránka vysvětluje, o jaký problém jde, jak zjistit, zda se týká vašeho webu, jak správně zjistit vaši verzi bez zmatení a jak provést aktualizaci.
Než cokoli dalšího, nejvýznamnější skutečností tohoto upozornění je: verze v ovlivněném rozsahu sama o sobě neznamená, že je váš web vystaven riziku. Níže popsaný problém nastává pouze na webech, jejichž formuláře obsahují pole pro nahrávání souborů, a já zvenčí nevidím, jak jsou vaše formuláře sestaveny:
- Problém se týká formuláře Forminator pouze tehdy, pokud obsahuje pole pro nahrávání souborů. Pokud žádný z vašich formulářů nepovoluje návštěvníkům nahrávat soubory, netýká se vás to, i když používáte ovlivněnou verzi.
- Důležitá je přítomnost pole pro nahrávání, nikoliv jeho nastavení. Omezení pole na určité typy (například obrázky nebo PDF) tento problém neodstraní, protože chyba obchází toto omezení. Jediné, co vás z rizika vyjímá, je nemít v žádném z vašich formulářů pole pro nahrávání souborů.
Z veřejného souboru mohu zjistit verzi vašeho pluginu, ale nemohu vidět vaše formuláře, takže toto upozornění je preventivním varováním, nikoliv potvrzeným zjištěním o stavu vašeho webu.
Jedná se o chybu CVE-2026-15748, což je zranitelnost umožňující nahrávání souborů bez ověření totožnosti v obsluze formulářů pluginu. Postižené jsou verze 1.18.1 až 1.56.1 a oprava je k dispozici ve verzi 1.56.2, vydané 30. července 2026. Pokud používáte ovlivněnou verzi, aktualizujte Forminator Forms na verzi 1.56.2 nebo novější (aktuální vydání v době psaní tohoto textu je v řadě 1.57.x).
Slovo k naléhavosti, protože se jedná o podmíněné upozornění. Pokud žádný z vašich formulářů nemá pole pro nahrávání souborů, je aktualizace běžnou údržbou pluginu. Pokud takové pole má, považujte aktualizaci za prioritu: v takovém nastavení by mohla chyba umožnit návštěvníkovi bez jakéhokoli účtu uložit na váš server soubor dle vlastního výběru, který by server mohl následně spustit, což může vést k plnému ovládnutí webu.
Jedná se o chybu v pluginu, nikoliv v jádru WordPressu. Plně aktualizovaný WordPress vás nechrání, pokud je samotný plugin Forminator na ovlivněné verzi.
Je tato zpráva legitimní?
Ano. Jedná se o zprávu o zodpovědném odhalení chyby od nezávislého bezpečnostního výzkumníka, která vychází z dobré víry. Nežádám vás o peníze, hesla ani přístup k vašemu webu a nepokoušel jsem se do něj vlomit, odeslat žádný z vašich formulářů ani na něj nahrát cokoli.
Jen jsem se podíval na veřejně dostupné soubory, které váš web poskytuje každému návštěvníkovi (stejným způsobem, jakým je veřejná vaše domovská stránka), a zaznamenal jsem verzi, kterou plugin zveřejňuje. Úmyslně jsem neodeslal žádný formulář, nenahrál jsem žádný soubor a nešel jsem ani blízko k obsluze nahrávání souborů v pluginu. Žádná část této kontroly se nedotýká vašich dat, administrátorské oblasti ani žádné soukromé části vašeho webu (více pod Co jsem udělal a co ne níže).
Pokud byste chtěli ověřit, kdo jsem, podívejte se na kontaktní údaje na konci této stránky a na stránku O mně.
Proč na tom záleží
Forminator vám umožňuje vytvářet kontaktní formuláře, kvízy, ankety a platební formuláře, a některé z těchto formulářů mohou návštěvníkům nabídnout pole pro nahrávání souborů, aby mohli přiložit dokument nebo obrázek. Aby to bylo bezpečné, měl by plugin kontrolovat, které soubory přijímá a kde je ukládá.
V ovlivněných verzích mohly být tyto kontroly obcházeny. Zfalšovaný odeslaný formulář mohl protáhnout padělanou hodnotu pole částí pluginu, která ukládá záznam, a odtud do rutiny ukládání souborů, jejíž seznam zakázaných typů souborů mohl být obcházen speciálně upraveným požadavkem. Výsledkem je, že soubor, který měl plugin odmítnout, mohl být zapsán do vaší složky pro nahrávání. Pokud server následně tento soubor považuje za něco, co může spustit, spustí se na vašem webu cizí soubor.
Z toho vyplývají dvě věci, které směřují opačnými směry. První je, že to má význam pouze tam, kde formulář skutečně obsahuje pole pro nahrávání souborů; web, jehož formuláře nevyužívají nahrávání, není touto chybou ohrožen. Druhá je, že pokud takové pole existuje, není vyžadován žádný účet, žádné heslo ani spolupráce nikoho jiného: formulář je záměrně veřejný. A zde je část, která je nejčastěji nesprávně chápána: omezení tohoto pole pouze na „obrázky” nebo pouze na „PDF” vás nezachrání, protože chyba obchází kontrolu typu pole. Otázkou je jednoduše, zda na některém z vašich formulářů existuje pole pro nahrávání souborů.
Popisuji to na úrovni, kterou potřebuje majitel webu k rozhodnutí, a ne dále. Nezveřejňuji detaily, které by někdo mohl použít k reprodukci chyby, a žádám vás, abyste se ji nepokoušeli reprodukovat na svém webu ani na webu kohokoli jiného. Kontrola vašich formulářů a verze, jak je popsáno níže, vám řekne vše, co potřebujete k rozhodnutí, co dělat.
Pokud můj e-mail odkazoval na tento problém, znamená to, že verze, kterou váš web uvádí, spadá do ovlivněného rozsahu. Neověřoval jsem, zda je váš konkrétní web zranitelný, a nemohu vidět, jak jsou vaše formuláře sestaveny. Vše, co jsem pozoroval, je verze.
Týká se to mě?
Rozhodují dvě otázky, a to v tomto pořadí.
Za prvé: má některý formulář pole pro nahrávání souborů?
Toto je rozhodující otázka a můžete na ni odpovědět pouze vy. Kontrola vlastních formulářů je zcela bezpečná a je celým smyslem této stránky.
- Přihlaste se do nástěnky WordPressu a v postranním panelu otevřete Forminator, poté Formuláře.
- Otevřete každý formulář a hledejte pole Upload (typ pole pro nahrávání souborů ve Forminatoru).
- Pokud žádný z vašich formulářů nemá pole pro nahrávání, tento problém se vašeho webu netýká, i když používáte ovlivněnou verzi; aktualizace je nicméně stále vhodná jako běžná údržba.
- Pokud některý formulář má pole pro nahrávání, problém se vás týká a měli byste provést aktualizaci co nejdříve. Omezení pole na typy souborů, které skutečně potřebujete, je dobrým zvykem, ale nejedná se o opravu tohoto problému: opravou je aktualizace.
Nepokoušejte se reprodukovat problém na svém webu ani na webu kohokoli jiného; k zodpovězení výše uvedené otázky to nepotřebujete.
Za druhé: jakou verzi používáte?
Nemusíte mi věřit na slovo. Pro tento plugin existuje pár způsobů kontroly, které vás mohou zmást, takže je dobré tuto část přečíst pozorně.
Z administrace WordPressu (autoritativní):
- V administraci WordPressu přejděte na Pluginy a poté Nainstalované pluginy.
- Najděte Forminator Forms, položku, jejíž složka je
forminator, a poznamenejte si verzi uvedenou pod jejím názvem.
Zdrojový kód vaší stránky (nepotřebujete se přihlásit): zobrazte zdrojový kód stránky na vašem webu, která zobrazuje formulář Forminator, a hledejte jeden z front-endových assetů pluginu přesně na těchto cestách:
/wp-content/plugins/forminator/build/front/front.multi.min.js?ver=...
/wp-content/plugins/forminator/assets/forminator-ui/js/forminator-form.min.js?ver=...
/wp-content/plugins/forminator/assets/forminator-ui/css/forminator-icons.min.css?ver=...
Číslo ?ver= připojené k těmto souborům ve složce forminator je vlastní verzí pluginu. U tohoto pluginu odpovídá vydání, proto ji považuji za spolehlivý údaj. Mějte na paměti, že tyto assety se objevují pouze na stránce, která skutečně vykresluje formulář Forminator, takže zkontrolujte stránku, která jej obsahuje (holá domovská stránka bez formuláře často nic nezobrazí).
Dvě pasti, kterým se vyhnout. Obojí způsobí, že povrchní čtení hlásí verzi, která nemá s Forminatorem nic společného:
- Přibalená knihovna pro telefonní čísla. Forminator obsahuje kopii třetí strany nazvané intlTelInput, která má vlastní verzi
4.0.3. V závislosti na vaší verzi je obsažena buď v souboruassets/css/intlTelInput.min.cssneboassets/js/library/intlTelInput.min.js, oba uvnitř složky Forminatoru. Pokud přečtete?ver=4.0.3z jednoho z nich, jedná se o verzi knihovny, nikoliv Forminatoru. Forminator nikdy neměl vydání 4.x. Čtěte pouze výše uvedené soubory a jakoukoli verzi, která nezačíná1., považujte za „ne verzi Forminatoru”. - Stylesheet pro jednotlivé formuláře ve vaší složce uploads. Forminator zapisuje malý stylesheet pro každý zveřejněný formulář na cestě jako
/wp-content/uploads/forminator/<něco>/style-<číslo>.css?ver=<dlouhé 10místné číslo>. Tohle dlouhé číslo je časová značka, nikoliv verze. Nachází se podwp-content/uploads/, nikoliv ve složce pluginu, takže ji zcela ignorujte.
Ještě jedna poznámka specifická pro tento plugin: řádek „Stable tag” v jeho přibaleném readme.txt není zde spolehlivý, protože může zaostávat za skutečným vydáním (jak build 1.56.1, tak 1.56.2 hlásí 1.56.0), takže na rozdíl od některých pluginů vám tento soubor neřekne, kterou z těchto dvou verzí máte. K důvěře jsou obrazovka v administraci a ?ver= u assetů výše.
Použijte toto pravidlo, přičemž mějte na paměti, že verze se porovnávají číselně, nikoliv abecedně:
- 1.18.1 až 1.56.1: potenciálně zasaženo, s podmínkou výše uvedené otázky o poli pro nahrávání. Aktualizujte nyní.
- 1.56.2 nebo novější: co se tohoto problému týká, již opraveno. Nejlepším krokem je nainstalovat nejnovější dostupnou verzi (v době psaní tohoto textu řada 1.57.x).
- Starší než 1.18.1: touto konkrétní chybou není zasaženo. Specifická slabost popsaná výše byla zavedena ve verzi 1.18.1. Nicméně tak staré vydání je ve všem ostatním daleko za současným stavem a aktualizace je z obecných důvodů doporučována.
Pokud se vám nepodaří získat čitelnou verzi z výše uvedených kontrol, není to neobvyklé: pluginy pro cachování nebo optimalizaci běžně odstraňují hodnotu ?ver= a assety se objevují pouze tam, kde se vykresluje formulář. Obrazovka v administraci v první kontrole vždy obsahuje odpověď.
Jak aktualizovat
Plugin je zdarma, stále vydáván a aktivně udržován, takže oprava je běžnou aktualizací. Nejbezpečnější cestou je aktualizace přímo prostřednictvím WordPressu a předtím provedení zálohy:
- Zálohujte svůj web (soubory i databázi) před provedením jakýchkoli změn. Většina poskytovatelů hostingu nabízí zálohování jedním kliknutím, nebo můžete použít plugin pro zálohování WordPressu.
- V administraci WordPressu přejděte na Nástěnka a poté na Aktualizace, nebo na Pluginy a poté na Nainstalované pluginy. Pokud je zde uvedena aktualizace Forminatoru, nainstalujte ji odtud.
- Pokud preferujete příkazovou řádku, WP-CLI provede totéž:
wp plugin update forminator(příkaz používá název složky). - Pokud se žádná aktualizace neobjeví, můžete si stáhnout nejnovější verzi přímo ze stránky pluginu v adresáři WordPress.org, Forminator Forms, a aktualizovat přes Pluginy, poté Instalace pluginů a Nahrát plugin.
- Po aktualizaci potvrďte nové číslo verze (1.56.2 nebo novější) pomocí výše uvedených kroků a zkontrolujte, že vaše formuláře a případná nahrávání souborů v nich stále fungují normálně.
Je dobré při této příležitosti ověřit, že jádro WordPressu a vaše ostatní pluginy jsou aktuální, protože stejný princip se vztahuje na všechny z nich.
Po aktualizaci
Aktualizací na verzi 1.56.2 nebo novější je problém vyřešen a pro většinu webů je tím úkol hotov. Tato stránka je preventivním upozorněním, nikoliv hlášením o incidentu: nemám žádný přehled o tom, zda se na vašem webu něco stalo, a ani jsem to nekontroloval.
Stojí za zvážení jeden následný krok, který je podmíněn stejnou otázkou ohledně pole pro nahrávání souborů. Pokud měl váš web během běhu zranitelné verze formulář s polem pro nahrávání souborů, bylo alespoň teoreticky možné, že na váš server byl nahrán soubor. Aktualizace uzavírá díru, ale neodstraní nic, co mohlo být již uloženo, takže v takovém případě se vyplatí několik běžných preventivních kroků:
- Prohledejte svou složku pro nahrávání (obvykle pod
wp-content/uploads/, včetně podstromuwp-content/uploads/forminator/) po souborech, které neznáte, zejména těch, které nejsou typem dokumentů nebo obrázků, které vaše formuláře mají přijímat. - Zkontrolujte své administrátorské účty, nedávná přihlášení a aktivní relace po něčem, co nemůžete vysvětlit.
- Změňte hesla na svých administrátorských účtech. Regenerace tajných klíčů a solí WordPressu v souboru
wp-config.phpje rozumným doplňkovým krokem (nové hodnoty získáte jedním kliknutím na oficiálním generátoru tajných klíčů, a jejich výměna jednorázově odhlásí všechny uživatele).
Pokud najdete něco, co vás znepokojuje, správnou reakcí je naložit s tím jako s jakýmkoli jiným podezřelým neoprávněným přístupem. Pokud žádný z vašich formulářů neměl pole pro nahrávání souborů, stačí samotná aktualizace.
Co jsem udělal a co ne
Pro úplnou transparentnost ohledně kontroly, která stála za mým e-mailem: četl jsem pouze soubory, které váš web již poskytuje každému návštěvníkovi, konkrétně veřejný soubor readme.txt pluginu, vaši domovskou stránku a adresy prostředků zapsané na této stránce. Nepřistupoval jsem k oblasti administrace WordPressu, vaší databázi ani k žádné soukromé části webu.
Konkrétně jsem nikdy neodeslal žádný z vašich formulářů, nikdy nenahrál žádný soubor a nikdy jsem se nedotkl obslužného programu pro nahrávání pluginu. Nic nebylo odesláno, testováno ani zneužito. To má zde větší význam než na většině těchto stránek, protože nahrání souboru je přesně ta akce, které se tento problém týká, takže „nedotkl jsem se toho” je celý rozdíl mezi zveřejněním a průnikem.
Úmyslně také nezveřejňuji detaily, které by někomu pomohly tento problém zneužít. Popis výše končí na úrovni, kterou potřebuje vlastník webu, a neposkytuji žádné odkazy na kód pro demonstraci zranitelnosti.
Jedná se o pozorování založené na verzi: váš web hlásí verzi v zasaženém rozsahu. Není to tvrzení, že váš web byl v době kontroly zranitelný. Protože problém závisí na tom, zda má některý z vašich formulářů pole pro nahrávání souborů, což nevidím, web v tomto rozsahu nemusí být vůbec ohrožen, a web v tomto rozsahu může být navíc chráněn jinými prostředky, jako je webová aplikační brána.
Nemám webmastera / nevím, kudy dál
Pokud nejste osobou, která web udržuje, prosím, přesměrujte tuto stránku na toho, kdo to dělá (vašeho webového vývojáře, agenturu nebo poskytovatele hostingu). Rychle poznají výše uvedené kroky.
Pokud web udržujete sami a zaseknete se, rád vám zdarma pomůžu najít správný směr. Kontaktujte mě pomocí kontaktních údajů níže.
Kontakt
Evan Harris, bezpečnostní výzkumník
- E-mail: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
O takových problémech vás kontaktuji čistě proto, abych pomohl provozovatelům zabezpečit jejich weby. Pokud byste raději nechtěli, abych vás znovu kontaktoval, stačí mi dát vědět a budu to respektovat.
Odkazy
Oficiální hlášení a sledování
Dodavatel / plugin