Co se stalo
Craft CMS je redakční systém, na kterém běží firemní weby, portály i e-shopy. Vývojáři Craft CMS zveřejnili 22. října 2026 na GitHubu bezpečnostní upozornění GHSA-qcvp-ggx3-97r6. Popisují v něm chybu v části systému, která zpracovává vyhledávání obsahu (tzv. element search endpoint), a uvádějí opravené verze 4.18.9 a 5.11.2.
Chyba dostala 6. listopadu 2026 označení CVE-2026-123488. Přidělila ho bezpečnostní společnost VulnCheck, která ji ve svém upozornění hodnotí jako kritickou. V evropské databázi zranitelností agentury ENISA je vedena jako EUVD-2026-118288.
Zneužívání v praxi zatím potvrzeno není. Chyba není v katalogu CISA KEV a ani evropská databáze EUVD neeviduje aktivní útoky. Podrobný popis chyby je ale veřejně dostupný v upozornění výrobce, proto s aktualizací neotálejte.
Proč je to nebezpečné
Jde o chybu typu SQL injection (CWE-89). Web se ptá databáze pomocí příkazů v jazyce SQL a část dotazu doplňuje z toho, co pošle návštěvník. Pokud tento vstup nezkontroluje, útočník může do dotazu podstrčit vlastní příkazy. Je to, jako kdyby recepční nahlas přečetla lísteček od návštěvníka a bez přemýšlení udělala všechno, co na něm stojí.
Podle výrobce se u Craft CMS jeden parametr vkládá do databázového dotazu bez kontroly a databázové spojení navíc dovoluje provést několik příkazů za sebou. Útočník proto může data nejen číst, ale i zapisovat.
Útok vede přes internet a útočník nepotřebuje žádné přihlášení. Výrobce popisuje, že takto lze uživatelskému účtu v databázi zapnout příznak administrátora nebo přepsat heslo jakéhokoli účtu. Výsledkem je plný přístup do administrace webu a k databázi, tedy i k údajům uživatelů či odeslaným formulářům, pokud je web ukládá. Spuštění vlastního kódu na serveru ani šíření do dalších částí sítě výrobce ani VulnCheck neuvádějí.
Závažnost se vyjadřuje skóre CVSS na stupnici od 0 do 10, hodnoty od 9 výše znamenají kritickou chybu. VulnCheck, který chybě přidělil CVE, ji hodnotí skóre 9,8 podle CVSS 3.1 a 9,3 podle novější verze CVSS 4.0. Samotný výrobce ji v upozornění na GitHubu označuje jako „High“ (vysoká).
EPSS odhaduje pravděpodobnost, že se chyba začne zneužívat v příštích 30 dnech. K 7. listopadu 2026 je to 0,48 %, což je více než u zhruba 41 % známých chyb. Katalog CISA KEV je seznam chyb, jejichž zneužívání americká agentura CISA potvrdila. Tato chyba v něm zatím není.
Koho se to týká
Týká se to každého, kdo provozuje web na Craft CMS v těchto verzích:
- Craft CMS 4: od 4.0.0 do verze nižší než 4.18.9
- Craft CMS 5: od 5.0.0 do verze nižší než 5.11.2
Craft CMS je napsaný v PHP, instaluje se jako balíček craftcms/cms přes nástroj Composer a běží na webhostingu nebo vlastním serveru s databází. Často ho používají webové agentury při tvorbě firemních webů a e-shopů. Pokud vám web dělala agentura, zeptejte se jí, na čem je postavený.
Netýká se to webů na verzích 4.18.9, 5.11.2 a novějších. Starší větev Craft CMS 3 upozornění výrobce nezmiňuje. Pokud ji ještě provozujete, plánujte přechod na aktuální verzi.
Jak zjistit, zda jste zasaženi
Nejjednodušší je přihlásit se do administrace Craft CMS a otevřít Utilities → System Report, kde je uvedena přesná verze. Verzi uvidíte i ve spodní části levého menu administrace.
Na serveru v adresáři projektu (tam, kde je soubor composer.json) můžete použít příkazy, které verzi jen vypíšou a nic nemění:
composer show craftcms/cms | grep versions
grep -A 2 '"name": "craftcms/cms"' composer.lock
Pokud je verze ve větvi 4 nižší než 4.18.9 nebo ve větvi 5 nižší než 5.11.2, web je zranitelný.
Jak to opravit
Výrobce vydal opravené verze 4.18.9 a 5.11.2. Dočasné řešení bez aktualizace ve svém upozornění neuvádí, spolehlivou ochranou je proto jen aktualizace.
- Zazálohujte databázi i soubory webu.
- Pokud máte testovací kopii webu, vyzkoušejte aktualizaci nejprve na ní.
- Aktualizujte Craft CMS alespoň na 4.18.9 (větev 4) nebo 5.11.2 (větev 5). Jde to v administraci přes Utilities → Updates nebo z příkazové řádky příkazy níže.
- Příkazem ze sekce o kontrole ověřte novou verzi a zkontrolujte, že web funguje.
- Zkontrolujte seznam administrátorů podle poslední sekce článku.
composer update craftcms/cms --with-all-dependencies
php craft up
Začněte weby dostupnými z internetu. Nezapomeňte na staré testovací či kampaňové instance, které často běží veřejně a nikdo je neaktualizuje. Pokud web spravuje agentura, pošlete jí označení CVE-2026-123488 a požádejte o potvrzení, že aktualizace proběhla.
Pokud nemůžete aktualizovat hned, jako obecné dočasné opatření zvažte webový firewall (WAF) s pravidly proti SQL injection. Nejde o doporučení výrobce a aktualizaci to nenahrazuje.
Co když už jste mohli být napadeni
Výrobce ani VulnCheck nezveřejnili konkrétní indikátory napadení. Protože útok směřuje k získání práv administrátora, zaměřte se na uživatelské účty a změny na webu.
- V administraci v části Users zkontrolujte, kdo má práva administrátora. Hledejte neznámé účty nebo běžné účty, které najednou mají plná práva.
- Ověřte, že se všichni administrátoři dokážou přihlásit. Nefunkční heslo může znamenat, že ho někdo přepsal.
- Projděte logy webového serveru za co nejdelší období a hledejte neobvykle mnoho požadavků na vyhledávání z jedné IP adresy.
- Zkontrolujte nečekané změny obsahu, nové stránky, přesměrování nebo vložené skripty.
Seznam administrátorů s datem vytvoření, posledního přihlášení a poslední změny hesla vypíše tento dotaz do databáze, který nic nemění (pokud používáte předponu tabulek, například craft_, doplňte ji). Útočník, který zapisuje přímo do databáze, tato data měnit nemusí. Berte je proto jen jako orientační a důležitý je hlavně samotný seznam účtů.
SELECT id, username, email, dateCreated, lastLoginDate, lastPasswordChangeDate FROM users WHERE admin = 1
Pokud najdete něco podezřelého, odstraňte cizí účty, změňte hesla všech administrátorů i heslo k databázi a přizvěte odborníka na bezpečnostní incidenty. Pokud web uchovává osobní údaje, prověřte i povinnost ohlásit incident podle GDPR.