Kurz gesagt: Craft CMS Sicherheit hängt nach PHP2Shell am PHP des Servers, nicht an Craft. Gerade Agenturen mit vielen Craft-Websites sollten jetzt jeden Server einzeln prüfen. Nach Patch und Neustart gehören .env, Security-Key, devMode, die Dokumentwurzel und der Abgleich der Project Config auf den Prüfstand.
Was PHP2Shell für Craft-Websites bedeutet
Craft CMS ist bei Agenturen beliebt, weil es flexible Inhaltsmodelle und saubere Templates bietet. Entsprechend betreuen viele Agenturen Dutzende Craft-Websites auf unterschiedlichen Servern und Hosting-Paketen. Die PHP-Lücken CVE-2026-109618 und CVE-2026-109619 erlauben laut PHP-Team Schadcode aus der Ferne ohne Anmeldung, unabhängig von der Craft-Version.
Für Agenturen ist die wichtigste Frage deshalb organisatorisch: Welche Website läuft wo, mit welchem PHP, und wer ist für das Update zuständig? Eine Liste aller Installationen mit Hoster, PHP-Stand und Ansprechpartner ist der erste Schritt. Wie wir Agenturen dabei unterstützen, beschreibt Sicherheitspartner für Agenturen.
Craft CMS Sicherheit: PHP-Version prüfen
Im Control Panel zeigt Werkzeuge > Systembericht die PHP-Version, die Datenbank und die installierten Plugins. Das ist die Version, mit der die Website im Web läuft. Die Craft-Konsole php craft, Queue-Verarbeitung und Cronjobs nutzen dagegen das Kommandozeilen-PHP. Beide müssen gepatcht sein.
Behobene Upstream-Versionen sind 8.5.12, 8.4.27, 8.3.36 und 8.2.35. Viele Hoster spielen Korrekturen als Backport ein; die Nummer bleibt dann gleich. Welche Versionen betroffen sind, zeigt Welche PHP-Versionen sind betroffen?. Welche PHP-Versionen Ihre Craft-Version unterstützt, prüfen Sie laut Systemanforderungen in der Dokumentation auf craftcms.com.
Craft verarbeitet Hintergrundaufgaben in einer Warteschlange. Läuft sie als dauerhafter Prozess unter einem Prozessmanager, muss auch dieser nach dem PHP-Update neu gestartet werden.
Verzeichnisse und Konfiguration in Craft
| Ort | Inhalt | Prüfpunkt |
|---|---|---|
.env |
Datenbankzugang, CRAFT_SECURITY_KEY, weitere Schlüssel |
Werte nach Verdacht erneuern |
config/general.php |
devMode, allowAdminChanges, Pfad zum Control Panel |
eingeschobener PHP-Code |
config/project/ |
Project Config als YAML | Abgleich mit Git |
web/ |
Dokumentwurzel mit index.php, cpresources/, oft Uploads |
zusätzliche PHP-Dateien |
storage/ |
Logs, Laufzeitdateien, häufig Datenbank-Backups | nicht über das Web erreichbar |
templates/ |
Twig-Templates | fremdes JavaScript |
modules/, vendor/ |
eigene Module und Plugins | veränderte Dateien, composer audit |
Ein häufig übersehener Punkt ist storage/backups/. Craft legt dort Datenbanksicherungen ab, die vollständige Kunden- und Formulardaten enthalten können. Dieser Ordner darf niemals unterhalb der Dokumentwurzel liegen.
Ungefährliche Prüfungen auf der Kommandozeile:
# Unterschiede zwischen Project Config und Datenbank anzeigen
php craft project-config/diff
# PHP-Dateien in der Dokumentwurzel ausser index.php
find web -type f -name "*.php" ! -name "index.php"
composer audit
In Produktion gehört devMode auf false. Mit eingeschaltetem devMode zeigt Craft ausführliche Fehlermeldungen mit Pfaden und Code-Ausschnitten, die Angreifern die Arbeit erleichtern.
Control Panel, Benutzer und Plugins
Das Control Panel liegt standardmässig unter /admin. Prüfen Sie, welche Benutzer Administratorrechte haben, und entfernen Sie Zugänge ehemaliger Mitarbeiter und Freelancer. Craft unterstützt eine Zwei-Faktor-Anmeldung; nutzen Sie sie für alle Konten mit erhöhten Rechten.
Setzen Sie in Produktion allowAdminChanges auf false. Dann lassen sich Felder, Bereiche und Plugin-Einstellungen nur über die versionierte Project Config ändern, und jede Abweichung fällt beim Abgleich mit Git auf. Plugins aus dem Plugin Store bringen eigenen PHP-Code mit; prüfen Sie, ob alle noch gepflegt werden und zur angestrebten PHP-Version passen.
// config/general.php, Ausschnitt für die Produktionsumgebung
'devMode' => false,
'allowAdminChanges' => false,
Was ein Craft-Update kann und was nicht
Ein Update von Craft oder einem Plugin schliesst Fehler in diesem Code und kann neuere PHP-Versionen ermöglichen. Es patcht nicht PHP, startet weder PHP-FPM noch die Warteschlange neu, erneuert keinen abgeflossenen Security-Key und entfernt keine fremden Dateien aus web/ oder storage/.
Für Agenturen mit vielen Craft-Installationen zählt nach dem Patch vor allem die Wiederholbarkeit. Halten Sie je Website fest, welche PHP-Version im Web und auf der Kommandozeile läuft, wann der Neustart bestätigt wurde und ob die Prüfungen auffällig waren. Diese Übersicht hilft bei Rückfragen von Kunden und bei künftigen Meldungen. Denken Sie auch an öffentlich erreichbare Staging- und Entwicklungsumgebungen. Sie laufen oft mit devMode, älteren Ständen und echten Kundendaten und werden bei Updates gern vergessen. Gibt es Zweifel, ob eine Kundenseite betroffen ist, informieren Sie den Kunden sachlich, statt abzuwarten.
Wie hilft PHP SOS konkret?
- Wir erfassen mit Ihnen alle Craft-Installationen mit Hoster, PHP-Stand und Zuständigkeit.
- Wir lassen Patch und Neustart je Server bestätigen und sichern Logs ab dem 20.10.2026.
- Wir prüfen Dokumentwurzel,
storage, Konfiguration, Benutzer und den Abgleich der Project Config. - Auf Wunsch übernehmen wir die laufende Sicherheitsbetreuung Ihrer Kundenseiten im Security-Wartungsvertrag, auch unter Ihrem Namen.
Häufige Fragen
Ist Craft CMS von PHP2Shell betroffen?
Craft CMS selbst hat keine neue Lücke. Es läuft aber auf PHP, und PHP2Shell steckt in PHP. Jede Craft-Installation auf einem ungepatchten Server ist daher potenziell angreifbar, unabhängig von der Craft-Version.
Wo zeigt Craft die PHP-Version an?
Im Control Panel unter Werkzeuge > Systembericht. Dort stehen PHP-Version, Datenbank und installierte Plugins. Ein eingespielter Backport ist an der Nummer nicht zu erkennen; das bestätigt Ihr Hoster.
Was ist der Security-Key in Craft und warum erneuern?
Der Security-Key aus der Datei .env dient zum Signieren und Verschlüsseln von Daten. Wer ihn kennt, kann unter Umständen Sitzungen oder Formulardaten fälschen. Nach einem Verdacht sollten Sie ihn in Abstimmung mit Ihrer Agentur erneuern.
Was bringt allowAdminChanges auf false?
Damit lassen sich Felder, Bereiche und Plugin-Einstellungen in Produktion nicht mehr über das Control Panel ändern. Änderungen kommen nur noch über die versionierte Project Config, was Manipulationen schwerer und sichtbarer macht.