Populární WordPress pagebuilder Elementor Pro obsahuje kritickou bezpečnostní chybu, která útočníkovi umožňuje nahrát spustitelný PHP soubor na server zcela bez ověření. Zranitelnost s identifikátorem CVE-2026-32475 dosahuje skóre 9,0 z 10 na stupnici CVSS a ohrožuje weby používající formuláře s polem pro nahrání souboru. Plugin Elementor Pro používá více než 10 milionů aktivních instalací a jeho placená verze rozšiřuje základní funkcionalitu o pokročilé nástroje včetně právě formulářů.
Jak chyba funguje – nesoulad dvou smyček
Podstata zranitelnosti spočívá v tom, že kód pro ověření nahraného souboru a kód pro jeho přesun používají dvě oddělené smyčky, které se liší v tom, jak zacházejí s prázdnými položkami. Výzkumníci z Patchstack, kteří chybu analyzovali, popisují situaci jako klasický desynchronizační defekt – obě smyčky samy o sobě fungují korektně, ale problém vzniká v mezeře mezi nimi.
Funkce validation() kontroluje přípony nahraných souborů proti povolenému a zakázanému seznamu. Pokud narazí na prázdný záznam (UPLOAD_ERR_NO_FILE), ihned ukončí celou metodu příkazem return. Funkce process_field() naproti tomu prázdný záznam pouze přeskočí příkazem continue a pokračuje ve zpracování dalších položek.
- validation(): prázdný záznam →
return(konec celé kontroly) - process_field(): prázdný záznam →
continue(přeskočí a pokračuje dál)
Tento rozdíl umožňuje útočníkovi poslat dva soubory najednou – první prázdný, druhý s PHP kódem. Ověřovací smyčka skončí u prvního a druhý soubor vůbec nezkontroluje. Zpracovávací smyčka však druhý soubor přesune do veřejného adresáře.
Kde PHP soubor končí
Nahraný soubor je uložen do adresáře wp-content/uploads/elementor/forms/, který je běžně přístupný z internetu. Název souboru je vytvořen pomocí PHP funkce uniqid(), která generuje 13 hexadecimálních znaků – 8 znaků reprezentuje unixové timestamp v sekundách a 5 znaků mikrosekundy.
Útočník může výsledný název souboru zjistit dvěma způsoby:
- Časový brute-force: Prvních 8 hex znaků je přímo odvoditelných z HTTP hlavičky
Date:serveru. Zbývá jen 5 znaků mikrosekund, což je prostor, který lze snadno prohledat. - Autoresponder e-mailem: Pokud formulář obsahuje automatickou odpověď (velmi časté u pracovních a podpůrných formulářů), Elementor Pro ve výchozí šabloně
[all-fields]vykreslí přesnou URL nahraného souboru a zašle ji zpět na adresu odesílatele. Tím odpadá jakýkoliv brute-force.
Seznam zakázaných přípon je obsažen, ale nepoužije se
Plugin sice obsahuje seznam zakázaných přípon, který blokuje PHP a další spustitelné formáty:
- PHP varianty: php, php3, php4, php5, php6, php7, phps, phtml, shtml, pht
- Ostatní nebezpečné: asp, aspx, exe, com, jar, swf, html, htm, csh, bat, cmd
Tento seznam je však kvůli popsanému logickému problému v podstatě nepoužitelný. Validace se k druhému souboru vůbec nedostane. Patchstack ve své analýze uvádí, že “vzdálenost mezi fungující obranou a neověřeným RCE je jeden klíčový příkaz – return místo continue”.
Jak snadné je zneužití
K úspěšnému útoku stačí, aby cílová stránka obsahovala alespoň jeden publikovaný Elementor formulář s polem pro nahrání souboru. To je extrémně běžná konfigurace – formuláře pro pracovní pozice, nahrání fotografií, dokladů nebo příloh v podpoře.
Všechny potřebné údaje jsou viditelné ve veřejném HTML kódu stránky:
– post_id – identifikátor stránky
– form_id – interní Elementor ID widgetu formuláře
– form_fields[{FIELD_ID}] – název pole pro upload
Zpracování probíhá přes AJAX akci elementor_pro_forms_send_form, která nevyžaduje cookies ani nonce – útok je tedy zcela neověřený.
Časová osa a oprava
Bezpečnostní výzkumník Tin Pham (známý jako TF1T) objevil a nahlásil chybu 16. července 2026 v rámci Patchstack Bug Bounty programu. Reakce vývojářů byla rychlá:
- 16. července 2026: Nahlášení chyby a potvrzení ze strany Patchstack
- 16. července 2026: Přidělení CVE ID (CVE-2026-32475) a kontaktování Elementor teamu
- 17. července 2026: Vývojáři připravili opravu
- 3. srpna 2026: Patchstack potvrdil, že oprava řeší problém
- 19. srpna 2026: Vydání verze 4.2.2 s opravou
Elementor Pro verze 4.2.1 a nižší jsou zranitelné. Oprava sjednocuje chování obou smyček – prázdný záznam už nezpůsobí předčasné ukončení validace a zároveň je kontrola přípon provedena znovu přímo před přesunem souboru.
Co by měli provozovatelé webů udělat
- Aktualizovat Elementor Pro na verzi 4.2.2 nebo novější – to je jediná spolehlivá ochrana.
- Zkontrolovat adresář wp-content/uploads/elementor/forms/ – hledejte soubory s příponou .php, které tam nepatří.
- Prověřit servery na známky kompromitace – pokud byl soubor nahrán, útočník mohl získat plnou kontrolu nad serverem.
- Zvážit dočasné odstranění pole pro upload z veřejných formulářů, pokud není aktualizace možná ihned.
Elementor sice uvádí, že chyba ohrožuje pouze “weby, které používají Elementor Pro Form s polem pro nahrání souboru a povolenou možností vícenásobného nahrání (ta je ve výchozím stavu vypnutá)”, ale výzkumníci z Patchstack upozorňují, že přepínač “Required” je ve výchozím stavu vypnutý a útok funguje i bez něj.
Souvislost s dalšími bezpečnostními událostmi
Objevení CVE-2026-32475 přichází jen něco málo přes týden poté, co WordPress vydal verzi 7.0.4 opravující vysoce závažnou chybu CVE-2026-65640 (CVSS 8.8), která umožňuje vzdálené spuštění kódu přes nahrání obrázku s malwarem uživatelem s rolí Autor nebo vyšší. Patchstack v této souvislosti varuje: “Pokud provozujete multi-autorský web, členskou stránku nebo cokoliv s volně spravovanou registrací, je tato hrozba mnohem reálnější, než se zdá.”
Obě chyby ukazují, že nahrávání souborů zůstává jednou z nejkritičtějších útočných ploch ve WordPress ekosystému. Zatímco CVE-2026-65640 vyžaduje alespoň přihlášeného autora, CVE-2026-32475 je zneužitelná zcela bez autentizace, což ji činí ještě nebezpečnější.
Zdroje
Zdroj: BleepingComputer – Critical Elementor Pro bug exposes WordPress sites to RCE attacks (20. 8. 2026)
Zdroj: Patchstack – Critical Unauthenticated File Upload to RCE in Elementor Pro Plugin (19. 8. 2026)
Potřebujete s WordPress webem pomoct? Kontakt najdete přes formulář na stránce Kontakt.