Bezpečnostní upozornění k Realtyna WPL
Pokud jste ode mě dostali e-mail s odkazem na tuto stránku, je to proto, že váš web zřejmě
provozuje zranitelnou verzi pluginu Realtyna Organic IDX plugin + WPL Real Estate
(WordPressový plugin real-estate-listing-realtyna-wpl od společnosti Realtyna). Možná jej
znáte jako WPL nebo jako plugin Organic IDX. Tato stránka vysvětluje, proč na tom
záleží a jak to napravit.
Toto upozornění se týká CVE-2026-13714, což je neautentizované nahrání libovolného souboru vedoucí ke vzdálenému spuštění kódu. Srozumitelně řečeno: někdo, kdo není přihlášen a kdo nepotřebuje žádný účet ani žádné zvláštní nastavení na vašem webu, může do oblasti nahraných souborů zapsat skriptový soubor a poté jej spustit. To znamená plnou kontrolu nad serverovou částí kódu webu. Týká se to verzí 4.0.0 až 5.2.0 a opraveno je to ve verzi 5.3.0 vydané 30. června 2026. Verze starší než 4.0.0 tuto chybu neobsahují. Pokud provozujete zasaženou verzi, aktualizujte plugin na 5.3.0 nebo novější co nejdříve a poté si přečtěte Pokud jste provozovali zasaženou verzi.
Jde o chybu pluginu, nikoli jádra WordPressu. Plně aktualizovaný WordPress vás neochrání, pokud je samotný plugin v zasažené verzi.
Je tato zpráva legitimní?
Ano. Jde o upozornění v dobré víře v duchu odpovědného zveřejňování od nezávislého bezpečnostního výzkumníka. Nežádám po vás peníze, hesla ani přístup k webu a nepokoušel jsem se do něj proniknout, cokoli nahrát nebo cokoli zneužít.
Jediné, co jsem udělal, bylo podívat se na veřejně dostupné soubory, které váš web servíruje
každému návštěvníkovi (stejně veřejné jako vaše úvodní stránka), a zapsat si číslo verze,
které plugin uvádí ve svém veřejném souboru readme.txt. Zejména jsem nic neposílal na
dotčené rozhraní pro nahrávání. Nic nebylo nahráno, testováno ani zneužito a tato kontrola se
nedotýká vašich dat, administrace ani žádné neveřejné části webu.
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 mně.
Proč na tom záleží
Plugin obsahuje vstupně-výstupní rozhraní pro „mobilní aplikaci“, tedy sadu příkazů, které může externí klient volat přes web. Jeden z těchto příkazů ukládá nahraný soubor pod názvem, který si zvolil odesílatel, bez jakékoli kontroly typu souboru. Soubor se skriptovou příponou tak přistane jako skript v oblasti nahraných souborů, odkud si jej lze vyžádat přes web a server jej spustí.
Dvě okolnosti brání tomu, aby šlo jen o teoretický problém:
- Rozhraní je ve výchozí instalaci zapnuté. Aby koncový bod odpovídal, není třeba nic povolovat ani žádnou funkci používat.
- Dvojice klíčů, která má volání ověřovat, je v každé instalaci pluginu předvyplněna stejnou pevnou hodnotou a administrační rozhraní ji označuje jen pro čtení, takže provozovatel by ji nemohl změnit, ani kdyby chtěl. Tajemství, které je všude stejné a veřejné ve zdrojovém kódu, není tajemstvím, takže ta závora ve skutečnosti žádnou závorou není.
Dohromady to znamená, že neautentizovaný návštěvník může na server umístit spustitelný kód. A jakmile na vašem serveru běží kód, může dělat vše, co dokáže váš web: číst databázi, zakládat účty správců, upravovat nebo nahrazovat stránky, odesílat poštu z vaší domény nebo nainstalovat trvalá zadní vrátka.
Záměrně nezveřejňuji formát požadavku, názvy parametrů ani funkční ukázku a poprosil bych vás o totéž. Popis výše vystihuje povahu problému, což je to, co potřebujete k rozhodnutí, jak naléhavě jednat.
Přidělující autorita pro tento problém nezveřejnila žádné skóre závažnosti CVSS, proto jej tato stránka neuvádí. Problém není uveden v katalogu známých zneužívaných zranitelností (KEV) agentury CISA a nemám žádné důkazy, že by byl zneužíván v praxi nebo že by přes něj byl napaden konkrétní web. Jasně lze říci jen to, co chyba umožňuje: bez autentizace, bez nutné konfigurace, s výsledkem ve spuštění kódu.
Ještě jedna věc stojí za zmínku, protože kvůli ní aktualizace vypadá jako volitelná, ačkoli není: seznam změn výrobce k verzi 5.3.0 bezpečnost nezmiňuje. Stojí v něm „Removed deprecated mobile_application“. Právě tento záznam je onou opravou: zranitelný podsystém byl zcela odstraněn. Kdo prochází poznámky k vydání a hledá bezpečnostní upozornění, žádné nenajde.
Dobrá zpráva: aktualizace na opravenou verzi díru zavře a je nekomplikovaná.
Týká se mě to?
Nemusíte mi věřit na slovo, jakou verzi provozujete.
Z administrace WordPressu (toto je rozhodující kontrola):
- Přihlaste se do nástěnky WordPressu (obvykle na
yourdomain.com/wp-admin). - Přejděte na Pluginy a poté Instalované pluginy.
- Najděte Realtyna Organic IDX plugin + WPL Real Estate a poznamenejte si verzi zobrazenou pod jeho názvem.
Z veřejného manifestu (bez přihlášení): otevřete v prohlížeči
yourdomain.com/wp-content/plugins/real-estate-listing-realtyna-wpl/readme.txt. Řádek
Stable tag: poblíž začátku uvádí verzi, kterou vaše instalace hlásí. Tento soubor je
součástí složky pluginu, takže odráží to, co je skutečně nainstalováno, a je to tentýž
veřejný soubor, který jsem četl.
Pak použijte toto pravidlo:
- 4.0.0 až 5.2.0: zasaženo, aktualizujte hned.
- 5.3.0 nebo novější: již opraveno, s tímto problémem není co řešit.
- Starší než 4.0.0: tímto problémem nezasaženo. Kód s neověřeným nahráváním v těchto verzích vůbec neexistuje. Veřejné texty popisují rozsah jako „všechny verze před 5.3.0“; to není správné, a pokud máte verzi 3.x, nemáte důvod to považovat za havárii. Stále jde o velmi starou verzi, takže aktualizace dává smysl z jiných důvodů.
Nečtěte verzi z URL statického souboru. Pokud se podíváte do zdrojového kódu stránky a
uvidíte něco jako realtyna.min.js?ver=5.2.21, toto číslo není verze pluginu. Tento
plugin nepředává WordPressu při registraci svých stylů a skriptů vlastní verzi, takže
WordPress místo ní doplní verzi jádra WordPressu vašeho webu. Viděli jsme živé weby s
pluginem 4.3.2, které servírovaly ?ver= s hodnotou 4.9.9, i weby s hodnotou 5.2.21, což
je číslo verze jádra WordPressu, které vypadá přesně jako verze pluginu těsně pod hranicí
5.3.0. Číst je jako verzi pluginu vám může říct pravý opak pravdy. Použijte administraci nebo
readme.txt.
Jak to napravit
Nejbezpečnější je aktualizovat přímo přes WordPress a předtím udělat zálohu:
- Zálohujte web (soubory i databázi), než začnete cokoli měnit. Většina hostingů nabízí zálohu na jedno kliknutí, případně použijte zálohovací plugin pro WordPress.
- V administraci WordPressu přejděte na Nástěnka a poté Aktualizace, nebo na Pluginy a poté Instalované pluginy. Pokud je aktualizace pluginu nabízena, nainstalujte ji odtud.
- Pokud dáváte přednost příkazové řádce, WP-CLI udělá totéž:
wp plugin update real-estate-listing-realtyna-wpl. - Pokud se žádná aktualizace nenabízí, můžete nejnovější vydání získat přímo ze stránky pluginu v adresáři WordPress.org, Realtyna Organic IDX plugin + WPL Real Estate, a aktualizovat přes Pluginy, poté Přidat nový plugin, poté Nahrát plugin.
- Po aktualizaci si výše uvedenými kroky ověřte nové číslo verze (5.3.0 nebo novější) a zkontrolujte, že se web normálně načítá.
Pokud opravdu nemůžete aktualizovat okamžitě, prozatímním krokem je vypnout vstupně-výstupní rozhraní pluginu v jeho vlastním nastavení, čímž se cesta k příkazu pro nahrávání uzavře. Berte to jako náhradní řešení, které vám získá čas, nikoli jako náhradu aktualizace: pouze verze 5.3.0 zranitelný kód odstraňuje.
Když už jste v administraci, vyplatí se ověřit, že jádro WordPressu i ostatní pluginy jsou aktuální, protože pro ně platí totéž.
Pokud jste provozovali zasaženou verzi
Protože tento problém umožňuje soubor nahrát a poté spustit, aktualizace sice díru zavře, ale nevrátí zpět nic, co se přes ni už mohlo stát. Pokud váš web provozoval zasaženou verzi v době, kdy byl dostupný z internetu, vyplatí se to zkontrolovat. Vy (nebo váš správce webu) byste se měli na svém vlastním webu podívat na:
- Skriptové soubory v oblasti nahraných souborů, které tam nepatří. Hledejte pod
wp-content/uploads/soubory s příponou.php(nebo jinou spustitelnou příponou) mezi fotografiemi a dokumenty nemovitostí. Legitimní přílohy realitního inzerátu jsou obrázky, PDF a podobně; soubor.phpmezi nimi normální není. - Soubory s nedávnými nebo podivnými časovými razítky. Seřaďte podle data změny a hledejte cokoli, co si neumíte vysvětlit, včetně vlastních složek pluginu pro nahrávání.
- Své účty správců. V Uživatelé a poté Všichni uživatelé filtrujte podle role Správce a odstraňte každý účet, který nepoznáváte. Přidání nového účtu správce je běžný způsob, jak si udržet přístup.
- Nedávno nainstalované nebo změněné pluginy a šablony. Hledejte cokoli, co jste neinstalovali sami, a pluginy s obecnými či neznámými názvy, protože podvržený plugin nebo šablona jsou běžný způsob, jak nastražit zadní vrátka.
- Další příznaky. Neočekávaný nový obsah nebo stránky, změny administrátorského e-mailu či nastavení URL webu, neznámé plánované úlohy nebo stížnosti na odchozí spam stojí za prověření.
Pokud najdete doklady o neoprávněném přístupu, pohlížejte na web jako na kompromitovaný: odstraňte soubory, změňte přihlašovací údaje (administrace WordPressu, databáze i hostingový panel) a zvažte obnovu ze známé čisté zálohy pořízené před průnikem. Pokud má vaše organizace bezpečnostní IT tým, zapojte jej.
Chci to říct jasně: váš web jsem na žádný z těchto příznaků nekontroloval a nevím, zda byl zasažen. Tento seznam je zde proto, abyste si to mohli ověřit sami. Web ve zasaženém rozsahu verzí může být také již chráněn jinak (webovým aplikačním firewallem, opravou zpětně přenesenou hostingem nebo vypnutým vstupně-výstupním rozhraním); toto upozornění je pozorování založené na verzi, nikoli tvrzení, že váš web byl v době mé kontroly zneužitelný.
Co jsem udělal a co jsem neudělal
- Přečetl jsem veřejný soubor
readme.txtpluginu a vaši úvodní stránku, tedy věci, které váš web servíruje každému návštěvníkovi. - Nepřistupoval jsem k administraci WordPressu, k vaší databázi ani k žádné neveřejné části webu.
- Neposlal jsem nic na dotčené rozhraní pro nahrávání. Nic nebylo nahráno a nic nebylo testováno ani zneužito. Když je onou chybou samotný otevřený koncový bod pro nahrávání, je právě to, že jsem se ho nedotkl, celý rozdíl mezi zveřejněním a průnikem.
- Zjištění je tedy pozorováním založeným na verzi a můžete si je sami zopakovat z téhož veřejného souboru.
Nemám správce webu / nevím si rady
Pokud nejste osoba, která web spravuje, přepošlete prosím tuto stránku tomu, kdo to dělá (vašemu webovému vývojáři, agentuře nebo hostingu). Výše uvedené kroky rychle poznají.
Pokud web spravujete sami a zaseknete se, rád vás nasměruji správným směrem, a to zdarma. Ozvěte se pomocí kontaktů níže.
Kontakt
Evan Harris, bezpečnostní výzkumník
- E-mail: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
Na podobné věci upozorňuji výhradně proto, abych provozovatelům pomohl zabezpečit jejich weby. Pokud si nepřejete být znovu kontaktováni, stačí mi to říct a budu to respektovat.
Zdroje
Oficiální upozornění a evidence
Výrobce / plugin