Stručně: Bezpečnost Craft CMS závisí po PHP2Shell na PHP serveru, ne na Craft. Zejména agentury s mnoha weby na Craft by nyní měly zkontrolovat každý server zvlášť. Po záplatě a restartu patří na zkoušku .env, Security Key, devMode, kořen dokumentů a porovnání Project Config.
Co PHP2Shell znamená pro weby na Craft
Craft CMS je u agentur oblíbené, protože nabízí flexibilní modely obsahu a čisté šablony. Mnoho agentur proto spravuje desítky webů na Craft na různých serverech a hostingových balíčcích. Zranitelnosti PHP CVE-2026-109618 a CVE-2026-109619 umožňují podle týmu PHP spuštění škodlivého kódu na dálku bez přihlášení, bez ohledu na verzi Craft.
Pro agentury je proto nejdůležitější otázka organizační: Který web běží kde, s jakým PHP a kdo odpovídá za aktualizaci? Seznam všech instalací s poskytovatelem hostingu, stavem PHP a kontaktní osobou je prvním krokem. Jak agentury v tom podporujeme, popisuje článek Bezpečnostní partner pro agentury.
Bezpečnost Craft CMS: kontrola verze PHP
V Control Panelu zobrazuje Nástroje > Systémová zpráva verzi PHP, databázi a nainstalované pluginy. To je verze, se kterou web běží na webu. Konzole Craft php craft, zpracování fronty a úlohy cron naopak používají PHP pro příkazovou řádku. Obě musí být záplatovány.
Opravené verze upstreamu jsou 8.5.12, 8.4.27, 8.3.36 a 8.2.35. Mnoho poskytovatelů hostingu opravy nasazuje jako backport; číslo pak zůstane stejné. Které verze jsou postiženy, ukazuje článek Které verze PHP jsou postiženy?. Které verze PHP vaše verze Craft podporuje, ověříte podle systémových požadavků v dokumentaci na craftcms.com.
Craft zpracovává úlohy na pozadí ve frontě. Pokud běží jako trvalý proces pod správcem procesů, musí se po aktualizaci PHP restartovat i ten.
Adresáře a konfigurace v Craft
| Místo | Obsah | Bod kontroly |
|---|---|---|
.env |
Přístup k databázi, CRAFT_SECURITY_KEY, další klíče |
Hodnoty při podezření obnovit |
config/general.php |
devMode, allowAdminChanges, cesta k Control Panelu |
Vložený kód PHP |
config/project/ |
Project Config jako YAML | Porovnání s Git |
web/ |
Kořen dokumentů s index.php, cpresources/, často nahrávky |
Další soubory PHP |
storage/ |
Logy, soubory za běhu, často zálohy databáze | Nesmí být dostupné přes web |
templates/ |
Šablony Twig | Cizí JavaScript |
modules/, vendor/ |
Vlastní moduly a pluginy | Změněné soubory, composer audit |
Často přehlížený bod je storage/backups/. Craft tam ukládá zálohy databáze, které mohou obsahovat úplná data zákazníků a formulářů. Tato složka nikdy nesmí ležet pod kořenem dokumentů.
Neškodné kontroly na příkazové řádce:
# Zobrazit rozdíly mezi Project Config a databází
php craft project-config/diff
# Soubory PHP v kořenu dokumentů kromě index.php
find web -type f -name "*.php" ! -name "index.php"
composer audit
V produkci patří devMode na false. Se zapnutým devMode zobrazuje Craft podrobná chybová hlášení s cestami a ukázkami kódu, která útočníkům usnadňují práci.
Control Panel, uživatelé a pluginy
Control Panel leží standardně na adrese /admin. Zkontrolujte, kteří uživatelé mají práva administrátora, a odstraňte přístupy bývalých zaměstnanců a freelancerů. Craft podporuje dvoufázové přihlášení; používejte je pro všechny účty se zvýšenými právy.
V produkci nastavte allowAdminChanges na false. Pak lze pole, sekce a nastavení pluginů měnit jen přes verzovanou Project Config a každá odchylka se při porovnání s Git projeví. Pluginy z Plugin Store přinášejí vlastní kód PHP; ověřte, zda se všechny ještě udržují a odpovídají cílové verzi PHP.
// config/general.php, výřez pro produkční prostředí
'devMode' => false,
'allowAdminChanges' => false,
Co aktualizace Craft zvládne a co ne
Aktualizace Craft nebo pluginu uzavře chyby v tomto kódu a může umožnit novější verze PHP. Nezáplatuje PHP, nerestartuje ani PHP-FPM, ani frontu, neobnoví uniklý Security Key a neodstraní cizí soubory z web/ nebo storage/.
Pro agentury s mnoha instalacemi Craft po záplatě záleží především na opakovatelnosti. U každého webu si zaznamenejte, jaká verze PHP běží na webu a na příkazové řádce, kdy byl potvrzen restart a zda byly kontroly nápadné. Tento přehled pomáhá při dotazech zákazníků a při budoucích hlášeních. Myslete také na veřejně dostupná stagingová a vývojová prostředí. Často běží s devMode, staršími stavy a skutečnými daty zákazníků a při aktualizacích se rády zapomínají. Pokud je pochybnost, zda je web zákazníka postižen, informujte zákazníka věcně, místo abyste vyčkávali.
Jak konkrétně pomáhá PHP SOS?
- Spolu s vámi zachytíme všechny instalace Craft s poskytovatelem hostingu, stavem PHP a odpovědností.
- Necháme si potvrdit záplatu a restart na každém serveru a zálohujeme logy od 20. 10. 2026.
- Kontrolujeme kořen dokumentů,
storage, konfiguraci, uživatele a porovnání Project Config. - Na přání převezmeme průběžnou bezpečnostní péči o weby vašich zákazníků v rámci bezpečnostní servisní smlouvy, i pod vaším jménem.
Časté dotazy
Týká se PHP2Shell Craft CMS?
Craft CMS samo žádnou novou zranitelnost nemá. Běží ale na PHP a PHP2Shell je v PHP. Každá instalace Craft na nezáplatovaném serveru je proto potenciálně napadnutelná, bez ohledu na verzi Craft.
Kde Craft zobrazuje verzi PHP?
V Control Panelu v nabídce Nástroje > Systémová zpráva. Najdete tam verzi PHP, databázi a nainstalované pluginy. Nasazený backport z čísla nepoznáte; potvrdí jej váš poskytovatel hostingu.
Co je Security Key v Craft a proč jej obnovit?
Security Key ze souboru .env slouží k podepisování a šifrování dat. Kdo jej zná, může za určitých okolností falšovat relace nebo data formulářů. Po podezření byste jej měli po dohodě se svou agenturou obnovit.
Co přinese allowAdminChanges nastavené na false?
Pole, sekce a nastavení pluginů se v produkci už nedají měnit přes Control Panel. Změny přicházejí jen přes verzovanou Project Config, což manipulace ztěžuje a činí viditelnějšími.