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 Creative Mail by Constant Contact (pluginu pro WordPress zajišťujícímu e-mailový marketing pro WooCommerce, který se nachází ve vašich souborech na cestě /wp-content/plugins/creative-mail-by-constant-contact/), 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, které verze jsou zasaženy, proč neexistuje aktualizace k instalaci a jak plugin bezpečně odstranit nebo nahradit.

Jedná se o chybu CVE-2026-3985, zranitelnost umožňující SQL injection bez ověření totožnosti, dostupnou přes obsluhu opuštěných košíků WooCommerce v pluginu. Postihuje verzi 1.6.5 a všechna následující vydání, až po poslední verzi, kterou dodavatel vydal, 1.6.9, včetně.

Nejdůležitější praktickou skutečností na této stránce je: neexistuje žádná opravená verze, na kterou byste mohli aktualizovat. Plugin byl 14. května 2026 odstraněn z adresáře WordPress.org a nikdy nebyl opraven. Poslední vydání, 1.6.9, tento problém stále obsahuje a žádné novější již nepřijde. Nejedná se tedy o obvyklé upozornění typu „klikněte na aktualizovat”. Nápravou je plugin deaktivovat a odstranit, a pokud jej potřebujete, nahradit jej udržovanou alternativou. Zbytek této stránky vás provede tím, jak ověřit vaši verzi a jak to provést bezpečně.

Jedno uklidnění, a je opravdové. Na rozdíl od některých problémů, o kterých píšu, má tato chyba skutečnou spodní hranici: byla zavedena ve verzi 1.6.5. Verze 1.6.4 a starší jí nejsou postiženy: zranitelný kód v nich prostě není přítomen. Pokud je vaše instalace 1.6.4 nebo starší, tento konkrétní problém se vás netýká. (Plugin nicméně už nikdo neudržuje, což je samo o sobě důvodem naplánovat si od něj přechod jinam.)

Jedná se o chybu v pluginu, nikoliv v jádru WordPressu. Plně aktualizovaný WordPress vás nechrání, pokud je samotný plugin Creative Mail 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, nic do něj odeslat ani nic zneužít.

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 nic do obsluhy pokladny nebo souhlasu pluginu, na vašem ani žádném jiném webu, a nic v rámci 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ží

Creative Mail propojuje obchod WooCommerce se službou Constant Contact pro účely e-mailového marketingu a součástí jeho činnosti je zapamatovat si nákupní košíky, které byly založeny, ale nedokončeny, aby je obchod mohl následně připomenout zákazníkovi. Právě v této obsluze opuštěných košíků se tento problém nachází.

V ovlivněných verzích, když plugin zaznamenává průběh pokladny, jeden z jeho databázových dotazů sestavuje svůj dotaz vložením hodnoty pocházející od návštěvníka, aniž by použil parametrizovaný dotaz (prepared statement). Tato hodnota není pro použití v SQL escapována. Důsledkem je, že návštěvník, který není přihlášen, může tento dotaz upravit a číst data z databáze vašeho webu.

Stojí za to být přesný v tom, co tento problém je a co není. Umožňuje útočníkovi číst data z databáze. To je samo o sobě závažné, protože databáze WordPressu obsahuje například e-mailové adresy uživatelů a hashovaná hesla, a u obchodu může obsahovat záznamy o zákaznících. Nejedná se však samo o sobě o vzdálené spuštění kódu, převzetí webu ani o způsob, jakým by si útočník mohl sám vytvořit administrátorský účet. Je to užší problém než ty, o kterých píšu jinde a které vedou k úplnému kompromitování webu, a raději popíšu závažnost čestně, než abych ve vás zanechal děsivější dojem, než jaký fakta podporují.

Popisuji to na úrovni, kterou potřebuje majitel webu k rozhodnutí, a ne dále. Nezveřejňuji detaily, které by někomu umožnily problém reprodukovat, a žádám vás, abyste se o to nepokoušeli na svém ani na cizím webu. Zjištění vašeho čísla 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í, je 1.6.5 nebo novější. Neověřoval jsem, zda je váš konkrétní web zranitelný; vše, co jsem pozoroval, je verze.

Týká se to mě?

Vše se scvrkává na jednu otázku: jakou verzi Creative Mail používáte?

Z administrace WordPressu (autoritativní):

  1. Přihlaste se do nástěnky WordPressu (obvykle na adrese yourdomain.com/wp-admin).
  2. Přejděte na Pluginy a poté Nainstalované pluginy.
  3. Najděte Creative Mail by Constant Contact, položku, jejíž složka je creative-mail-by-constant-contact, a poznamenejte si verzi uvedenou pod jejím názvem.

Z veřejného manifestu (bez nutnosti přihlášení): otevřete v prohlížeči adresu yourdomain.com/wp-content/plugins/creative-mail-by-constant-contact/readme.txt. Řádek Stable tag: blízko začátku je verze, kterou vaše instalace uvádí, a jedná se o stejný veřejný soubor, který jsem četl já. U tohoto pluginu jsem ověřil, že přesně odpovídá skutečně vydanému kódu, takže se jedná o spolehlivou kontrolu.

Jedna kontrola, která u tohoto pluginu nefunguje, proto se na ni prosím nespoléhejte. Pokud jste zvyklí číst verzi pluginu z čísla ?ver= připojeného ke skriptu nebo stylopisu ve zdrojovém kódu stránky, zde vás to zavede špatným směrem. U tohoto pluginu jsou tato čísla časové značky souborů (dlouhé hodnoty jako ?ver=1723603844), nikoliv verze pluginu, a porovnávat je s 1.6.5 nemá smysl. Použijte obrazovku administrace nebo soubor readme.txt.

Poté použijte toto pravidlo:

  • 1.6.5 nebo novější (až po 1.6.9, poslední vydání): zasaženo. Protože neexistuje oprava, krokem, který je třeba udělat, je plugin odstranit nebo nahradit (viz níže).
  • 1.6.4 nebo starší: tímto problémem nezasaženo. Chyba byla zavedena ve verzi 1.6.5, takže starší instalace ji neobsahují. (Plugin je bez ohledu na to neudržovaný, takže stále stojí za to naplánovat přechod od něj.)

Co dělat: odstranit nebo nahradit

Protože byl plugin stažen bez opravy, neexistuje žádná aktualizace k instalaci: vaše nástěnka WordPressu žádnou nenabídne a verze, kterou máte, je poslední, jaká kdy bude existovat. Způsobem, jak tento problém uzavřít, je přestat plugin používat. Nejprve zálohujte a poté jej odstraňte:

  1. 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.
  2. V administraci WordPressu přejděte na Pluginy a poté Nainstalované pluginy, najděte Creative Mail by Constant Contact a klikněte na Deaktivovat. Deaktivace zastaví běh zranitelného kódu.
  3. Po deaktivaci klikněte na Smazat, abyste odstranili soubory pluginu. Pokud preferujete příkazovou řádku, WP-CLI provede totéž: wp plugin deactivate creative-mail-by-constant-contact a poté wp plugin delete creative-mail-by-constant-contact.
  4. Potvrďte, že plugin zmizel: položka by se již neměla objevovat na obrazovce Pluginy a adresa yourdomain.com/wp-content/plugins/creative-mail-by-constant-contact/readme.txt by se již neměla načíst.

Pokud jste Creative Mail používali pro e-mailový marketing svého obchodu, budete potřebovat náhradu, abyste o tuto funkci nepřišli. V oficiálním adresáři existuje několik udržovaných pluginů pro e-mail a newslettery pro WooCommerce; zvolte takový, který je aktuálně podporovaný a dostává aktualizace. Samotná služba Constant Contact tímto není zasažena: problém je ve WordPress pluginu, který byl stažen, nikoliv v e-mailové službě, takže pokud používáte Constant Contact přímo, cílem je aktuální, podporovaná integrace.

Když už tam budete, vyplatí se ověřit, že jádro WordPressu a vaše ostatní pluginy jsou aktuální, a odstranit i další pluginy, které již nepoužíváte.

Po odstranění

Odstranění pluginu zastaví jakékoli budoucí čtení z vaší databáze prostřednictvím tohoto problému. Nemůže vrátit zpět nic, co již mohlo být přečteno v době, kdy byl plugin aktivní na ovlivněné verzi. Nemám žádný přehled o tom, zda se to na vašem webu stalo, a ani jsem to nekontroloval; většina webů ve zasaženém rozsahu pravděpodobně nebyla nikdy dotčena. Protože vám to ale nemohu s jistotou potvrdit, je přiměřená určitá opatrnost, úměrná tomu, co vaše databáze obsahuje:

  • U obchodu jsou rozumnými kroky nechat vaše administrátory změnit hesla a být si vědomi toho, že kontaktní údaje zákazníků ve vaší databázi mohly být vystaveny. WordPress a WooCommerce ukládají hesla hashovaná, nikoliv v čistém textu, ale hashe slabých hesel lze prolomit offline, takže nová hesla tuto obavu odstraní.
  • Pokud nějaké pluginy na vašem webu ukládají vlastní přihlašovací údaje nebo API klíče, stojí za to i ty obměnit.
  • Regenerace tajných klíčů a solí WordPressu v souboru wp-config.php (nové hodnoty jsou jedním kliknutím k dispozici na oficiálním generátoru tajných klíčů) jednorázově odhlásí všechny uživatele a znehodnotí jakékoli ukradené relační tokeny.

Pro jasnost ohledně kontextu: jedná se o opatrnostní krok, nikoliv o prohlášení, že vaše data byla odcizena. Toto upozornění vychází z čísla verze, nikoliv z jakéhokoli důkazu o útoku.

Co jsem udělal a co ne

Pro úplnou transparentnost ohledně kontroly, která stála za mým e-mailem: četl jsem pouze veřejné soubory, které váš web již poskytuje každému návštěvníkovi, konkrétně veřejný soubor readme.txt pluginu a vaši domovskou stránku. Nepřistupoval jsem k oblasti administrace WordPressu, vaší databázi ani k žádné soukromé části webu.

Konkrétně jsem nikdy nic neodeslal do obsluhy pokladny ani souhlasu pluginu, na vašem ani jakémkoli jiném webu. Nic nebylo odesláno, uloženo, testováno ani zneužito. To má zde větší význam než na většině těchto stránek, protože tato obsluha je přesně tím, čeho 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 1.6.5 nebo novější. Web v tomto rozsahu může být již chráněn jinými prostředky, jako je webová aplikační brána. Toto upozornění není tvrzením, že váš web byl v době kontroly zranitelný.

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