Kort sagt: Craft CMS-säkerheten hänger efter PHP2Shell på serverns PHP, inte på Craft. Framför allt byråer med många Craft-webbplatser bör nu kontrollera varje server för sig. Efter patch och omstart hör .env, Security Key, devMode, dokumentroten och avstämningen av Project Config till kontrollen.
Vad PHP2Shell betyder för Craft-webbplatser
Craft CMS är populärt hos byråer eftersom det erbjuder flexibla innehållsmodeller och rena mallar. Därför sköter många byråer dussintals Craft-webbplatser på olika servrar och hostingpaket. PHP-sårbarheterna CVE-2026-109618 och CVE-2026-109619 gör det enligt PHP-teamet möjligt att köra skadlig kod på distans utan inloggning, oberoende av Craft-versionen.
För byråer är den viktigaste frågan därför organisatorisk: vilken webbplats körs var, med vilket PHP, och vem ansvarar för uppdateringen? En lista över alla installationer med webbhotell, PHP-status och kontaktperson är det första steget. Hur vi stöder byråer med detta beskrivs i Säkerhetspartner för byråer.
Craft CMS-säkerhet: kontrollera PHP-versionen
I Control Panel visar Verktyg > Systemrapport PHP-versionen, databasen och de installerade plugin. Det är den version som webbplatsen körs med på webben. Craft-konsolen php craft, köhanteringen och cronjobb använder däremot kommandoradens PHP. Båda måste vara patchade.
Åtgärdade upstream-versioner är 8.5.12, 8.4.27, 8.3.36 och 8.2.35. Många webbhotell levererar rättningar som backport; numret förblir då detsamma. Vilka versioner som berörs visar Vilka PHP-versioner berörs?. Vilka PHP-versioner er Craft-version stöder kontrollerar ni enligt systemkraven i dokumentationen på craftcms.com.
Craft hanterar bakgrundsuppgifter i en kö. Körs den som en ständig process under en processhanterare måste även den startas om efter PHP-uppdateringen.
Kataloger och konfiguration i Craft
| Plats | Innehåll | Kontrollpunkt |
|---|---|---|
.env |
Databasåtkomst, CRAFT_SECURITY_KEY, fler nycklar |
förnya värden vid misstanke |
config/general.php |
devMode, allowAdminChanges, sökväg till Control Panel |
inskjuten PHP-kod |
config/project/ |
Project Config som YAML | jämför med Git |
web/ |
Dokumentrot med index.php, cpresources/, ofta uppladdningar |
ytterligare PHP-filer |
storage/ |
Loggar, körtidsfiler, ofta databassäkerhetskopior | inte nåbara via webben |
templates/ |
Twig-mallar | främmande JavaScript |
modules/, vendor/ |
egna moduler och plugin | ändrade filer, composer audit |
En ofta förbisedd punkt är storage/backups/. Craft lägger där databassäkerhetskopior som kan innehålla fullständiga kund- och formulärdata. Den mappen får aldrig ligga under dokumentroten.
Ofarliga kontroller på kommandoraden:
# Visa skillnader mellan Project Config och databasen
php craft project-config/diff
# PHP-filer i dokumentroten utom index.php
find web -type f -name "*.php" ! -name "index.php"
composer audit
I produktion ska devMode vara false. Med devMode påslaget visar Craft utförliga felmeddelanden med sökvägar och kodutdrag, som underlättar arbetet för angripare.
Control Panel, användare och plugin
Control Panel ligger som standard under /admin. Kontrollera vilka användare som har administratörsrättigheter och ta bort åtkomster som tillhör tidigare medarbetare och frilansare. Craft stöder tvåfaktorsinloggning; använd den för alla konton med förhöjda rättigheter.
Sätt i produktion allowAdminChanges till false. Då kan fält, sektioner och plugin-inställningar bara ändras via den versionshanterade Project Config, och varje avvikelse märks vid avstämningen mot Git. Plugin från Plugin Store har egen PHP-kod; kontrollera att alla fortfarande underhålls och passar den eftersträvade PHP-versionen.
// config/general.php, utdrag för produktionsmiljön
'devMode' => false,
'allowAdminChanges' => false,
Vad en Craft-uppdatering klarar och inte klarar
En uppdatering av Craft eller ett plugin stänger fel i den koden och kan möjliggöra nyare PHP-versioner. Den patchar inte PHP, startar varken om PHP-FPM eller kön, förnyar ingen läckt Security Key och tar inte bort främmande filer ur web/ eller storage/.
För byråer med många Craft-installationer räknas efter patchen framför allt repeterbarheten. Anteckna per webbplats vilken PHP-version som körs på webben och på kommandoraden, när omstarten bekräftades och om kontrollerna var avvikande. Den överblicken hjälper vid frågor från kunder och vid framtida larm. Tänk också på offentligt nåbara staging- och utvecklingsmiljöer. De körs ofta med devMode, äldre versioner och riktiga kunddata och glöms gärna bort vid uppdateringar. Finns det tvivel om en kundsajt är berörd, informera kunden sakligt i stället för att avvakta.
Hur hjälper PHP SOS konkret?
- Vi sammanställer tillsammans med er alla Craft-installationer med webbhotell, PHP-status och ansvar.
- Vi låter patch och omstart bekräftas per server och säkrar loggar från och med den 20 oktober 2026.
- Vi kontrollerar dokumentrot,
storage, konfiguration, användare och avstämningen av Project Config. - På begäran tar vi över den löpande säkerhetsövervakningen av era kundsajter i säkerhetsunderhållsavtalet, även i ert namn.
Vanliga frågor
Berörs Craft CMS av PHP2Shell?
Craft CMS självt har ingen ny sårbarhet. Det körs dock på PHP, och PHP2Shell finns i PHP. Varje Craft-installation på en opatchad server kan därför vara sårbar, oavsett Craft-version.
Var visar Craft PHP-versionen?
I Control Panel under Verktyg > Systemrapport. Där står PHP-version, databas och installerade plugin. En installerad backport går inte att känna igen på numret; det bekräftar ert webbhotell.
Vad är Security Key i Craft och varför förnya den?
Security Key i filen .env används för att signera och kryptera data. Den som känner till den kan under vissa omständigheter förfalska sessioner eller formulärdata. Vid misstanke bör ni förnya den i samråd med er byrå.
Vad ger allowAdminChanges på false?
Då går det inte längre att ändra fält, sektioner och plugin-inställningar i produktion via Control Panel. Ändringar kommer bara via den versionshanterade Project Config, vilket gör manipulationer svårare och mer synliga.