Authenticated RCE via Twig SSTI - create() function + Symfony Process gadget
Beschreibung
Es gibt einen authentifizierten Admin RCE in Craft CMS 5.8.21 über Server-Side Template Injection mit dem `create()` Zweigfunktion kombiniert mit einer Symfony Process Gadget-Kette. Dies umgeht den für CVE-2025-57811 implementierten Fix (gepatcht in 5.8.7). ## Erforderliche Berechtigungen - Administratorberechtigungen oder Zugriff auf das Dienstprogramm Systemnachrichten - `allowAdminChanges` in der Produktion aktiviert ([gegen unsere Sicherheitsempfehlungen](https://craftcms.com/knowledge-base/securing-craft#set-allowAdminChanges-to-false-in-production)) oder Zugriff auf das Dienstprogramm Systemnachrichten ## Sicherheitslücken Details Die Schöpfung() Die Zweigfunktion stellt `Craft::createObject()` frei, was die Instanziierung beliebiger PHP-Klassen mit Konstruktorargumenten ermöglicht. In Kombination mit der gebündelten Symfony/Prozess-Abhängigkeit ermöglicht dies RCE. ## Attack Vector Admin Panel → Settings → Entry Types → Title Format field ## Proof of Concept Payload `` {% set p = create("Symfony\\Component\\Process\\Process", [["id"]]) %}{{ p.mustRun.getOutput }} `` ## Steps to Reproduce 1. Melden Sie sich als Admin 2 an. Navigieren Sie zu Einstellungen → Eintragstypen 3. Bearbeiten Sie das Feld "Titelformat" eines beliebigen Eintragstyps 4. Legen Sie die Nutzlast über 5 ein. Erstellen/Bearbeiten eines Eintrags dieses Typs 6. Der Befehl wird ausgeführt, die Ausgabe erscheint im Eintragstitel ## Impact - Authenticated Remote Code Execution - Läuft als Webserver-Benutzer (root in standardmäßiger Docker-Einrichtung) - Vollserver-Kompromiss ## Root Cause Craft::createObject() ermöglicht die Instanziierung einer beliebigen Klasse, einschließlich `Symfony\Component\Process\Process`, die Shell-Befehle ausführt. ## Suggested Fix - Blocklist gefährliche Klassen in createObject() beim Aufruf von Twig - Oder entfernen / einschränken der create() Zweigfunktion - Oder Klassennamen gegen eine Erlaubnisliste validieren ## Referenzen https://github.com/craftcms/cms/commit/e31e50849ad71638e11ea55fbd1ed90ae8f8f6e0
Quellen & weiterführende Informationen
Hier werden ausschließlich tatsächlich zu dieser Schwachstelle gespeicherte Quellenbelege angezeigt.
Was ist zur Behebung zu tun?
Auf eine behobene Version aktualisieren: 4.17.0, 5.9.0.
Empfohlene Schritte
- Betroffene Systeme identifizieren: Pixel & Tonic Craft CMS.
- Exposition prüfen: Internet-Erreichbarkeit, Admin-Oberflächen, VPN, Mail- oder Webdienste.
- Update/Rollout auf behobene Version vorbereiten und priorisiert einspielen.
- Nacharbeiten dokumentieren: betroffene Assets, Maßnahme, Zeitpunkt, Restrestrisiko.
Übergangsmaßnahmen
- Zugriff auf betroffene Dienste auf vertrauenswürdige Netze einschränken.
- WAF/IDS/EDR-Regeln und Hersteller-IOCs aktivieren, sofern verfügbar.
- Nicht benötigte Funktionen, Plugins oder Dienste temporär deaktivieren.
- Administrative Zugänge besonders absichern: MFA, Passwortrotation, Session-Invalidierung.