Čo sa stalo
Craft CMS je redakčný systém, na ktorom bežia firemné weby, portály aj e-shopy. Vývojári Craft CMS zverejnili 22. októbra 2026 na GitHube bezpečnostné upozornenie GHSA-qcvp-ggx3-97r6. Opisujú v ňom chybu v časti systému, ktorá spracúva vyhľadávanie obsahu (tzv. element search endpoint), a uvádzajú opravené verzie 4.18.9 a 5.11.2.
Chyba dostala 6. novembra 2026 označenie CVE-2026-123488. Pridelila ho bezpečnostná spoločnosť VulnCheck, ktorá ju vo svojom upozornení hodnotí ako kritickú. V európskej databáze zraniteľností agentúry ENISA je vedená ako EUVD-2026-118288.
Zneužívanie v praxi zatiaľ potvrdené nie je. Chyba nie je v katalógu CISA KEV a ani európska databáza EUVD neeviduje aktívne útoky. Podrobný popis chyby je však verejne dostupný v upozornení výrobcu, preto s aktualizáciou neotáľajte.
Prečo je to nebezpečné
Ide o chybu typu SQL injection (CWE-89). Web sa pýta databázy pomocou príkazov v jazyku SQL a časť otázky dopĺňa z toho, čo pošle návštevník. Ak tento vstup neskontroluje, útočník môže do otázky podstrčiť vlastné príkazy. Je to, ako keby recepčná nahlas prečítala papierik od návštevníka a bez rozmýšľania urobila všetko, čo na ňom stojí.
Podľa výrobcu sa pri Craft CMS jeden parameter vkladá do databázového dopytu bez kontroly a databázové spojenie navyše dovoľuje vykonať niekoľko príkazov za sebou. Útočník preto môže dáta nielen čítať, ale aj zapisovať.
Útok ide cez internet a útočník nepotrebuje žiadne prihlásenie. Výrobca opisuje, že takto možno používateľskému účtu v databáze zapnúť príznak administrátora alebo prepísať heslo akéhokoľvek účtu. Výsledkom je plný prístup do administrácie webu a k databáze, teda aj k údajom používateľov či odoslaným formulárom, ak ich web ukladá. Spustenie vlastného kódu na serveri ani šírenie do ďalších častí siete výrobca ani VulnCheck neuvádzajú.
Závažnosť sa vyjadruje skóre CVSS na stupnici od 0 do 10, hodnoty od 9 vyššie znamenajú kritickú chybu. VulnCheck, ktorý chybe pridelil CVE, ju hodnotí skóre 9,8 podľa CVSS 3.1 a 9,3 podľa novšej verzie CVSS 4.0. Samotný výrobca ju v upozornení na GitHube označuje ako „High“ (vysoká).
EPSS odhaduje pravdepodobnosť, že sa chyba začne zneužívať v najbližších 30 dňoch. K 7. novembru 2026 je to 0,48 %, čo je viac ako pri zhruba 41 % známych chýb. Katalóg CISA KEV je zoznam chýb, ktorých zneužívanie americká agentúra CISA potvrdila. Táto chyba v ňom zatiaľ nie je.
Koho sa to týka
Týka sa to každého, kto prevádzkuje web na Craft CMS v týchto verziách:
- Craft CMS 4: od 4.0.0 po verziu nižšiu ako 4.18.9
- Craft CMS 5: od 5.0.0 po verziu nižšiu ako 5.11.2
Craft CMS je napísaný v PHP, inštaluje sa ako balík craftcms/cms cez nástroj Composer a beží na webhostingu alebo vlastnom serveri s databázou. Často ho používajú webové agentúry pri tvorbe firemných webov a e-shopov. Ak vám web robila agentúra, spýtajte sa jej, na čom je postavený.
Netýka sa to webov na verziách 4.18.9, 5.11.2 a novších. Staršiu vetvu Craft CMS 3 upozornenie výrobcu nespomína. Ak ju ešte prevádzkujete, plánujte prechod na aktuálnu verziu.
Ako zistiť, či ste zasiahnutí
Najjednoduchšie je prihlásiť sa do administrácie Craft CMS a otvoriť Utilities → System Report, kde je uvedená presná verzia. Verziu vidno aj v spodnej časti ľavého menu administrácie.
Na serveri v adresári projektu (tam, kde je súbor composer.json) môžete použiť príkazy, ktoré verziu len vypíšu a nič nemenia:
composer show craftcms/cms | grep versions
grep -A 2 '"name": "craftcms/cms"' composer.lock
Ak je verzia vo vetve 4 nižšia ako 4.18.9 alebo vo vetve 5 nižšia ako 5.11.2, web je zraniteľný.
Ako to opraviť
Výrobca vydal opravené verzie 4.18.9 a 5.11.2. Dočasné riešenie bez aktualizácie vo svojom upozornení neuvádza, spoľahlivou ochranou je preto len aktualizácia.
- Zálohujte databázu aj súbory webu.
- Ak máte testovaciu kópiu webu, vyskúšajte aktualizáciu najprv na nej.
- Aktualizujte Craft CMS aspoň na 4.18.9 (vetva 4) alebo 5.11.2 (vetva 5). Dá sa to v administrácii cez Utilities → Updates alebo z príkazového riadku príkazmi nižšie.
- Príkazom zo sekcie o kontrole overte novú verziu a skontrolujte, či web funguje.
- Skontrolujte zoznam administrátorov podľa poslednej sekcie článku.
composer update craftcms/cms --with-all-dependencies
php craft up
Začnite webmi dostupnými z internetu. Nezabudnite na staré testovacie či kampaňové inštancie, ktoré často bežia verejne a nikto ich neaktualizuje. Ak web spravuje agentúra, pošlite jej označenie CVE-2026-123488 a požiadajte o potvrdenie, že aktualizácia prebehla.
Ak nemôžete aktualizovať hneď, ako všeobecné dočasné opatrenie zvážte webový firewall (WAF) s pravidlami proti SQL injection. Nejde o odporúčanie výrobcu a aktualizáciu to nenahrádza.
Čo ak už ste mohli byť napadnutí
Výrobca ani VulnCheck nezverejnili konkrétne indikátory napadnutia. Keďže útok smeruje k získaniu práv administrátora, zamerajte sa na používateľské účty a zmeny na webe.
- V administrácii v časti Users skontrolujte, kto má práva administrátora. Hľadajte neznáme účty alebo bežné účty, ktoré zrazu majú plné práva.
- Overte, či sa všetci administrátori vedia prihlásiť. Nefunkčné heslo môže znamenať, že ho niekto prepísal.
- Prezrite si logy webového servera za čo najdlhšie obdobie a hľadajte nezvyčajne veľa požiadaviek na vyhľadávanie z jednej IP adresy.
- Skontrolujte nečakané zmeny obsahu, nové stránky, presmerovania alebo vložené skripty.
Zoznam administrátorov s dátumom vytvorenia, posledného prihlásenia a poslednej zmeny hesla vypíše tento dopyt do databázy, ktorý nič nemení (ak používate predponu tabuliek, napríklad craft_, doplňte ju). Útočník, ktorý zapisuje priamo do databázy, tieto dátumy meniť nemusí. Berte ich preto len ako orientačné a dôležitý je hlavne samotný zoznam účtov.
SELECT id, username, email, dateCreated, lastLoginDate, lastPasswordChangeDate FROM users WHERE admin = 1
Ak nájdete niečo podozrivé, odstráňte cudzie účty, zmeňte heslá všetkých administrátorov aj heslo k databáze a prizvite odborníka na bezpečnostné incidenty. Ak web uchováva osobné údaje, preverte aj povinnosť ohlásiť incident podľa GDPR.