Authenticated RCE via `condition.config` JSON cleanse bypass
Beschreibung
Craft CMS hat ein authentifiziertes Remote-Code-Ausführungsproblem in der Bedienfeldelement-Suchbedingungsbehandlung. Craft bereinigt das äußere, anforderungsgesteuerte Bedingungs-Array mit `Component::cleanseConfig()`, aber `Conditions::createCondition()` dekodiert später und führt den JSON-String in `condition.config` zusammen, ohne `cleanseConfig()` in der dekodierten/zusammengeführten Konfiguration erneut auszuführen. Da `condition.config` ein JSON-String während der ersten Reinigung ist, können Yii spezielle Konfigurationsschlüssel wie `as` ... und `on` ... darin versteckt werden. Nach der JSON-Dekodierung erreichen diese Schlüssel die Erstellung von FieldLayout-Objekten und werden von Yii als Verhaltens-/Ereigniskonfiguration interpretiert. Der RCE ist halbblind: Der Trigger-Endpunkt gibt eine normale JSON-Antwort zurück, und die Befehlsausgabe wird über einen serverseitigen File-Write-Seiteneffekt verifiziert, der in einer nachfolgenden Anforderung abgerufen wird. ## Voraussetzungen - Der Angreifer benötigt eine authentifizierte Craft Control Panel Sitzung. - Ein gültiger CSRF-Token ist erforderlich. Auswirkungen Ein authentifizierter Bedienfeldbenutzer kann die Yii-Verhaltens-/Ereigniskonfiguration nach der beabsichtigten Konfigurations-Reinigungsgrenze von Craft einfügen. Im bestätigten lokalen Labor führte dies zur Befehlsausführung als PHP / Web-Benutzer. Potenzielle Angreiferauswirkungen: Führen Sie Betriebssystembefehle als PHP/Web-Benutzer aus. Lesen Sie Craft-Geheimnisse, Umgebungsvariablen und Anwendungskonfiguration. Zugriff auf Datenbankanmeldeinformationen und gespeicherte Websiteinhalte. Ändern Sie Websiteinhalt, Benutzer und Anwendungszustand. - Pivot zu internen Diensten, die vom Craft-Host oder Container aus erreichbar sind. - Denial of Service verursachen oder Persistenz in Abhängigkeit von Bereitstellungsberechtigungen herstellen.
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: 5.10.6, 4.18.2.
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.