Pokud jste ode mě obdrželi e-mail, který vás odkázal na tuto stránku, je to proto, že se zdá, že vaše webová stránka používá verzi pluginu Welcart e-Commerce (bezplatný e-commerce plugin pro WordPress od Welcart / Collne, který se ve vašich souborech nachází v /wp-content/plugins/usc-e-shop/), která spadá do rozsahu postiženého známým bezpečnostním problémem. Tato stránka vysvětluje, o jaký problém jde, jak moc na něm pro vaši stránku záleží, jak si přečíst svou verzi, aniž byste se nechali zmást, a jak provést aktualizaci.

Jde o CVE-2026-19914, neověřenou uloženou zranitelnost typu cross-site scripting (XSS). Postihuje každé vydání až po verzi 2.12.1 včetně a byla opravena ve verzi 2.12.2, vydané 31. srpna 2026. Pokud používáte 2.12.1 nebo starší, aktualizujte Welcart na 2.12.2 nebo novější. Problém je ohodnocen jako CVSS 7.2 (High) podle hodnocení Wordfence. Není mi znám žádný veřejný exploit kód pro tento problém.

Neexistuje žádná starší verze, která by byla bezpečná. Nejde o chybu, která byla zavedena někdy v průběhu historie pluginu a později opravena. Neescapované vykreslování, které za tímto problémem stojí, bylo přítomno po celou historii pluginu - potvrdil jsem, že je přítomno již ve verzi 1.7.0 - takže „moje instalace je příliš stará na to, aby byla postižena” zde není únikovou cestou. Jediné verze, které postiženy nejsou, jsou 2.12.2 a novější.

Než přejdeme ke všemu ostatnímu, pár slov o tom, co tento problém je a jak k němu dochází, protože to raději řeknu jasně, než abych nechal upozornění znít větší, než ve skutečnosti je. Jde o uloženou zranitelnost typu cross-site scripting a skript, který dokáže spustit, běží v prohlížeči správce obchodu, nikoli v prohlížeči návštěvníka. Aby k tomu došlo, musí nastat dvě samostatné věci zároveň: někdo, kdo zadává objednávku jako host, musí při placení odeslat upravenou hodnotu do vlastního pole objednávky, a poté musí správce tuto objednávku otevřít na obrazovce úprav objednávek ve vaší administraci WordPressu. Odeslaná hodnota se uloží spolu s objednávkou a na této obrazovce se vykreslí bez escapování, takže se spustí, když je objednávka zobrazena.

Vaši verzi Welcartu si mohu přečíst z veřejného souboru, ale nevidím vaše objednávky, nevidím, zda některá objednávka obsahuje upravenou hodnotu, a nevidím, zda to někdo skutečně proti vaší stránce provedl. Toto upozornění je tedy preventivní upozornění založené na čísle vaší verze, nikoli potvrzené zjištění o vaší stránce.

Vyplatí se také přesně říci, co tento problém je a co není. Cross-site scripting, který se spustí v relaci správce, je skutečný problém, který stojí za opravu: skript běžící v době, kdy je správce přihlášen, může jednat s oprávněními tohoto správce po celou dobu, kdy je stránka otevřená. Sám o sobě to ale není úplné převzetí stránky. Není to vzdálené spuštění kódu na vašem serveru a není to způsob, jak by si neověřený cizí člověk mohl sám jednoduše přidělit účet správce. Je to užší než případy úplné kompromitace, o kterých píšu jinde, a závisí to jak na odeslání objednávky, tak na tom, že ji správce otevře, takže raději uvedu rozsah poctivě, než abych ve vás zanechal děsivější dojem, než jaký fakta podporují.

Jde o chybu pluginu, nikoli chybu jádra WordPressu. Plně aktualizovaný WordPress vás neochrání, pokud je samotný plugin Welcart v postižené verzi.

Je tato zpráva legitimní?

Ano. Jedná se o zprávu o zodpovědném odhalení chyby v dobré víře od nezávislého bezpečnostního výzkumníka. Nežádám vás o peníze, hesla ani přístup k vaší stránce a nepokusil jsem se do ní vloupat, zadat na ní objednávku ani cokoli zneužít.

Pouze jsem si prohlédl stránky a soubory, které vaše webová stránka poskytuje každému návštěvníkovi (stejně jako je veřejná vaše domovská stránka), a poznamenal si číslo verze, které plugin zveřejňuje. Konkrétně jsem nezadal žádnou objednávku, neodeslal nic přes vaši pokladnu, nepřihlásil se ani neposlal nic postižené funkci. Nic na této kontrole se nedotýká vašich dat, vaší administrace, vašich objednávek ani žádné soukromé části vaší stránky (více podrobností níže v části Co jsem udělal a co ne).

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

Proč na tom záleží

Welcart mění web na WordPressu v internetový obchod a je to nejrozšířenější e-commerce plugin pro WordPress v Japonsku. Součástí jeho činnosti je při placení převzít údaje zákazníka, včetně jakýchkoli vlastních polí objednávky, která obchod přidal ke sběru dalších informací, a uložit je spolu s objednávkou, aby si je personál mohl později prohlédnout.

V postižených verzích se hodnota odeslaná do vlastního pole objednávky během hostovského placení uloží spolu s objednávkou a poté se na obrazovce úprav objednávek ve vaší administraci WordPressu zobrazí bez escapování. Escapování je to, co promění text, který vypadá jako značkování, zpět na prostý text určený k zobrazení. Bez něj není hodnota upravená tak, aby obsahovala aktivní obsah, zobrazena jako text, ale je spuštěna prohlížečem toho správce, který danou objednávku otevře. Protože host může zadat objednávku, aniž by se přihlásil, osoba, která tuto hodnotu dodá, nepotřebuje na vaší stránce vůbec žádný účet.

Předpoklad, abych ho uvedl jasně, protože je to část, kterou lze nejsnáze pochopit špatně v obou směrech: je k tomu potřeba jak odeslaná upravená objednávka, tak správce, který ji otevře. Nespustí se to na výkladní straně vašeho obchodu a běžným návštěvníkům to nic neudělá. Cílem, který zasáhne, je relace správce obchodu, který si prohlíží objednávky ve wp-adminu.

Popisuji to na úrovni, kterou provozovatel stránky potřebuje k tomu, aby mohl jednat, a dále už ne. Nezveřejňuji podrobnosti, které by někomu umožnily to reprodukovat, a prosím vás, abyste se o to nepokoušeli proti své vlastní stránce ani proti cizí. Přečtení čísla vaší 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 tento problém uváděl, znamená to, že verze, kterou vaše stránka hlásí, je 2.12.1 nebo starší. Netestoval jsem, zda je vaše konkrétní stránka zneužitelná, a nevidím vaše objednávky. Vše, co jsem pozoroval, je verze.

Týká se to mě?

Vše se scvrkává na jednu otázku: Kterou verzi Welcartu používáte?

Z administrace WordPressu (směrodatné):

  1. Přihlaste se do svého panelu WordPressu (obvykle na yourdomain.com/wp-admin).
  2. Přejděte na Pluginy a poté Instalované pluginy.
  3. Najděte Welcart e-Commerce, položku, jejíž složka je usc-e-shop, a poznamenejte si verzi zobrazenou pod jejím názvem.

Z veřejného manifestu (bez přihlášení): otevřete v prohlížeči

yourdomain.com/wp-content/plugins/usc-e-shop/readme.txt

a přečtěte si řádek Stable tag: poblíž začátku. Pokud tato adresa vrátí „nenalezeno”, zkuste README.txt s velkými písmeny - některé hostingy rozlišují velká a malá písmena a některé balíčky dodávají soubor s velkými písmeny.

Ze zdrojového kódu vaší stránky (bez přihlášení): zobrazte zdrojový kód své domovské stránky a vyhledejte vlastní styl pluginu přesně na této cestě:

/wp-content/plugins/usc-e-shop/css/usces_default.css?ver=...

Číslo ?ver= připojené k tomuto souboru je vlastní verzí pluginu a je to veřejný zdroj, který jsem četl. Welcart tento styl načítá na svých stránkách obchodu, takže stránka obchodu nebo košíku je spolehlivé místo, kde jej najdete. Verzi čtěte pouze z usces_default.css: ostatní soubory zapsané do vaší stránky nesou svá vlastní, zcela nesouvisející čísla ?ver=, a přečtení prvního, na které narazíte, vám může poskytnout verzi jiného softwaru. Pokud ze zdrojového kódu stránky vůbec nezískáte čitelné číslo, je to běžné a není to známkou ničeho - cachovací a optimalizační pluginy běžně odstraňují hodnotu ?ver= z adres URL assetů - v tom případě použijte readme.txt nebo obrazovku administrace.

Poté použijte toto pravidlo a nezapomeňte, že verze se porovnávají číselně, nikoli abecedně, takže 2.12.1 je novější než 2.9.1, i když „12” vypadá jako text menší než „9”:

  • 2.12.1 nebo starší: postiženo. Aktualizujte na 2.12.2 nebo novější. Neexistuje žádná hranice, pod níž by se starší vydání stalo znovu bezpečným.
  • 2.12.2 nebo novější: co se týče tohoto problému, již opraveno. Instalace nejnovější dostupné verze je nejlepší krok.

Jak aktualizovat

Plugin je zdarma, stále se vydává a je aktivně udržován, takže oprava je běžnou aktualizací. Nejbezpečnější cestou je aktualizovat přímo přes WordPress a nejdříve provést zálohu:

  1. Zálohujte svou stránku (soubory a databázi), než provedete změny. Většina poskytovatelů hostingu nabízí zálohy na jedno kliknutí, nebo použijte zálohovací plugin pro WordPress.
  2. V administraci WordPressu přejděte na Nástěnka a poté Aktualizace, nebo Pluginy a poté Instalované pluginy. Pokud je aktualizace Welcartu uvedena, nainstalujte ji odsud.
  3. Pokud dáváte přednost příkazové řádce, WP-CLI dělá totéž: wp plugin update usc-e-shop (příkaz používá název složky, nikoli zobrazovaný název).
  4. Pokud se žádná aktualizace neobjeví, můžete získat nejnovější vydání přímo ze stránky pluginu v adresáři WordPress.org, Welcart e-Commerce, a aktualizovat přes Pluginy poté Přidat nový plugin poté Nahrát plugin.
  5. Po aktualizaci potvrďte nové číslo verze (2.12.2 nebo novější) pomocí výše uvedených kroků a otevřete v administraci nedávnou objednávku, abyste se ujistili, že se obrazovky objednávek stále zobrazují normálně.

Vydání 2.12.2 kromě tohoto problému vyřešilo i další bezpečnostní problémy, takže aktualizace stojí za to v každém případě. Když už u toho jste, vyplatí se potvrdit, že jádro WordPressu a vaše ostatní pluginy jsou aktuální, protože stejný princip platí pro všechny.

Po aktualizaci

Aktualizace na 2.12.2 nebo novější tento problém uzavírá a pro většinu stránek je to celý úkol. Tato stránka je preventivní upozornění, nikoli hlášení o incidentu: nemám žádný přehled o tom, zda se na vaší stránce něco stalo, a ani jsem se nedíval.

Jedna malá věc stojí za to udělat, dokud je aktualizace čerstvá:

  • Potvrďte, že se verze skutečně změnila, tou z výše uvedených kontrol, která byla nejsnazší, a otevřete v administraci objednávku, abyste se ujistili, že se obrazovky objednávek stále vykreslují.

Všimnete si, že na této stránce není žádný kontrolní seznam ve stylu „předpokládejte, že jste byli kompromitováni”, a to je záměrné, nikoli opomenutí. Tento problém přináší skript běžící v prohlížeči správce, a to pouze tam, kde byla jak odeslána upravená objednávka, tak ji správce později otevřel. Nespouští kód na vašem serveru a sám o sobě nevytváří účet správce, takže audit správců a rotace hesel, které doporučuji po chybě třídy převzetí, by zde nebyly přiměřené. Aktualizujte, potvrďte a pokračujte. Pokud máte konkrétní důvod se domnívat, že to bylo proti vaší stránce použito - k čemuž vám toto upozornění, založené pouze na čísle verze, nedává žádný důkaz, pak je rozumné zacházet s přihlášeními správců s obvyklou opatrností, ale samotná verze to nevyžaduje.

Co jsem udělal a co ne

Abych byl ohledně kontroly za mým e-mailem zcela transparentní: četl jsem pouze soubory, které vaše stránka již poskytuje každému návštěvníkovi, konkrétně vaši domovskou stránku a adresu stylu Welcartu do ní zapsanou a veřejný soubor readme.txt pluginu uvnitř wp-content/plugins/usc-e-shop/. Nepřistoupil jsem k vaší administraci WordPressu, vaší databázi, vašim objednávkám ani žádné soukromé části stránky.

Zejména jsem nikdy nezadal objednávku, neodeslal nic přes vaši pokladnu, nepřihlásil se ani neposlal nic postižené funkci. Nic nebylo odesláno, testováno ani zneužito. Zde na tom záleží, protože odeslání upravené hodnoty při placení je velmi blízko přesně té akci, které se tento problém týká, takže „nedotkl jsem se toho” je celý rozdíl mezi odhalením a vniknutím.

Rovněž záměrně nezveřejňuji podrobnosti, které by někomu pomohly na tomto problému jednat. Výše uvedený popis se drží úrovně, kterou provozovatel stránky potřebuje, a neodkazuji na žádný proof-of-concept kód.

Jde o pozorování založené na verzi: vaše stránka hlásí verzi 2.12.1 nebo starší. Není to tvrzení, že vaše stránka byla v době, kdy jsem ji kontroloval, zneužitelná. Protože tento problém závisí jak na odeslání upravené objednávky, tak na tom, že ji správce otevře - což jsou věci, které nevidím, stránka v postiženém rozsahu nemusela být vůbec vystavena a stránka v tomto rozsahu může být zvlášť chráněna jinými prostředky, jako je webový aplikační firewall nebo zpětně portovaná oprava. Pokud jste již aktualizovali nebo tento problém jinak vyřešili, není třeba nic dělat, a omlouvám se za obtěžování.

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

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