Kort gezegd: Craft CMS-beveiliging hangt na PHP2Shell af van de PHP van de server, niet van Craft. Juist bureaus met veel Craft-websites moeten nu elke server afzonderlijk controleren. Na patch en herstart horen .env, security key, devMode, de documentroot en de vergelijking van de project config op de controlelijst.
Wat PHP2Shell betekent voor Craft-websites
Craft CMS is geliefd bij bureaus, omdat het flexibele inhoudsmodellen en nette templates biedt. Dienovereenkomstig beheren veel bureaus tientallen Craft-websites op verschillende servers en hostingpakketten. De PHP-kwetsbaarheden CVE-2026-109618 en CVE-2026-109619 maken het volgens het PHP-team mogelijk om op afstand en zonder inloggen schadelijke code uit te voeren, onafhankelijk van de Craft-versie.
Voor bureaus is de belangrijkste vraag daarom organisatorisch: welke website draait waar, met welke PHP, en wie is voor de update verantwoordelijk? Een lijst van alle installaties met hostingprovider, PHP-status en contactpersoon is de eerste stap. Hoe wij bureaus daarbij ondersteunen, beschrijft Beveiligingspartner voor bureaus.
Craft CMS-beveiliging: PHP-versie controleren
In het Control Panel toont Hulpprogramma's > Systeemrapport de PHP-versie, de database en de geïnstalleerde plug-ins. Dat is de versie waarmee de website op het web draait. De Craft-console php craft, queueverwerking en cronjobs gebruiken daarentegen de opdrachtregel-PHP. Beide moeten zijn gepatcht.
Verholpen upstreamversies zijn 8.5.12, 8.4.27, 8.3.36 en 8.2.35. Veel hostingproviders voeren correcties als backport door; het nummer blijft dan gelijk. Welke versies getroffen zijn, toont Welke PHP-versies zijn getroffen?. Welke PHP-versies uw Craft-versie ondersteunt, controleert u volgens de systeemeisen in de documentatie op craftcms.com.
Craft verwerkt achtergrondtaken in een wachtrij. Draait die als permanent proces onder een procesmanager, dan moet ook dat na de PHP-update opnieuw worden gestart.
Mappen en configuratie in Craft
| Plek | Inhoud | Controlepunt |
|---|---|---|
.env |
Databasetoegang, CRAFT_SECURITY_KEY, overige sleutels |
waarden bij vermoeden vernieuwen |
config/general.php |
devMode, allowAdminChanges, pad naar het Control Panel |
ingevoegde PHP-code |
config/project/ |
Project config als YAML | vergelijking met Git |
web/ |
Documentroot met index.php, cpresources/, vaak uploads |
extra PHP-bestanden |
storage/ |
Logs, runtimebestanden, vaak database-back-ups | niet via het web bereikbaar |
templates/ |
Twig-templates | vreemd JavaScript |
modules/, vendor/ |
eigen modules en plug-ins | gewijzigde bestanden, composer audit |
Een vaak over het hoofd gezien punt is storage/backups/. Craft plaatst daar database-back-ups die volledige klant- en formuliergegevens kunnen bevatten. Deze map mag nooit onder de documentroot staan.
Ongevaarlijke controles op de opdrachtregel:
# Verschillen tussen project config en database weergeven
php craft project-config/diff
# PHP-bestanden in de documentroot behalve index.php
find web -type f -name "*.php" ! -name "index.php"
composer audit
In productie hoort devMode op false. Met ingeschakelde devMode toont Craft uitvoerige foutmeldingen met paden en codefragmenten, die aanvallers het werk makkelijker maken.
Control Panel, gebruikers en plug-ins
Het Control Panel staat standaard onder /admin. Controleer welke gebruikers beheerdersrechten hebben en verwijder toegangen van voormalige medewerkers en freelancers. Craft ondersteunt tweestapsverificatie; gebruik die voor alle accounts met verhoogde rechten.
Zet in productie allowAdminChanges op false. Dan zijn velden, secties en plug-in-instellingen alleen nog via de geversioneerde project config te wijzigen, en valt elke afwijking bij de vergelijking met Git op. Plug-ins uit de Plugin Store brengen eigen PHP-code mee; controleer of ze nog worden onderhouden en bij de beoogde PHP-versie passen.
// config/general.php, fragment voor de productieomgeving
'devMode' => false,
'allowAdminChanges' => false,
Wat een Craft-update wel en niet kan
Een update van Craft of een plug-in dicht fouten in die code en kan nieuwere PHP-versies mogelijk maken. Ze patcht PHP niet, herstart noch PHP-FPM noch de wachtrij, vernieuwt geen weggelekte security key en verwijdert geen vreemde bestanden uit web/ of storage/.
Voor bureaus met veel Craft-installaties telt na de patch vooral herhaalbaarheid. Leg per website vast welke PHP-versie op het web en op de opdrachtregel draait, wanneer de herstart is bevestigd en of de controles opvallend waren. Dit overzicht helpt bij vragen van klanten en bij toekomstige meldingen. Denk ook aan openbaar bereikbare staging- en ontwikkelomgevingen. Ze draaien vaak met devMode, oudere versies en echte klantgegevens en worden bij updates graag vergeten. Bestaat er twijfel of een klantwebsite is getroffen, informeer de klant dan zakelijk in plaats van af te wachten.
Hoe helpt PHP SOS concreet?
- Wij inventariseren met u alle Craft-installaties met hostingprovider, PHP-status en verantwoordelijkheid.
- Wij laten patch en herstart per server bevestigen en maken een kopie van logs vanaf 20-10-2026.
- Wij controleren documentroot,
storage, configuratie, gebruikers en de vergelijking van de project config. - Desgewenst nemen wij de lopende beveiligingsbegeleiding van uw klantwebsites over in het beveiligingsonderhoudscontract, ook onder uw naam.
Veelgestelde vragen
Is Craft CMS getroffen door PHP2Shell?
Craft CMS zelf heeft geen nieuwe kwetsbaarheid. Het draait echter op PHP, en PHP2Shell zit in PHP. Elke Craft-installatie op een ongepatchte server is daarom potentieel kwetsbaar, ongeacht de Craft-versie.
Waar toont Craft de PHP-versie?
In het Control Panel onder Hulpprogramma's > Systeemrapport. Daar staan PHP-versie, database en geïnstalleerde plug-ins. Een doorgevoerde backport is aan het nummer niet te herkennen; dat bevestigt uw hostingprovider.
Wat is de security key in Craft en waarom vernieuwen?
De security key uit het bestand .env dient om gegevens te ondertekenen en te versleutelen. Wie hem kent, kan onder omstandigheden sessies of formuliergegevens vervalsen. Vernieuw hem bij een vermoeden in overleg met uw bureau.
Wat levert allowAdminChanges op false op?
Daarmee zijn velden, secties en plug-in-instellingen in productie niet meer via het Control Panel te wijzigen. Wijzigingen komen alleen nog via de geversioneerde project config, wat manipulaties moeilijker en zichtbaarder maakt.