Potential authenticated Remote Code Execution via malicious attached Behavior
Beschreibung
Beziehung zu zuvor gepatchter Anfälligkeit Diese Sicherheitsanfälligkeit ist **zusätzlich zur RCE-Schwachstelle, die in [GHSA-255j-qw47-wjh5] (https://github.com/craftcms/cms/security/advisories/GHSA-255j-qw47-wjh5) gepatcht wurde. Diese Empfehlung befasste sich mit einer ähnlichen RCE-Schwachstelle, die zwei spezifische Routen betraf: - `/index.php?p=admin%2Factions%2Ffields%2Fapply-layout-element-settings` - `/index.php?p=admin%2Factions%2Ffields%2Frender-card-preview` Dieser Bericht behandelt einige zusätzliche Endpunkte, die in den https://github.com/craftcms/cms/security/advisories/GHSA-255j-qw47-wjh5 nicht behandelt wurden. Die gepatchte Sicherheitsanfälligkeit verwendete eine bösartige `AttributeTypecastBehavior` mit einem Platzhalter-Ereignis-Listener (`"on *": "self::beforeSave") und ` construct()`-Syntax, um RCE über den `typecastBeforeSave`-Rückruf auszulösen. Der Fix wurde in Commits implementiert: - [6e608a1](https://github.com/craftcms/cms/commit/6e608a1a5bfb36943f584b7548ca542a86fef) - [27f5588](https://github.com/craftcms/cms/commit/27f55886098b56c00ddc53b69239c9c9192252c7) - [ec43c49](https://github.com/craftcms/cms/commit/ec43c497edde0b2bf2e39a119cded2e55f9593) Diese Sicherheitsanfälligkeit folgt dem gleichen Angriffsmuster (Verhaltensinjektion über `"als" Syntax), beeinflusst jedoch einen **anderen Codepfad** (`assembleLayoutFromPost()` in `Fields.php`), der **nicht in diesen Commits gepatcht wurde**. Der Angriffsvektor verwendet "typecastAfterValidate" anstelle von "typecastBeforeSave" und erfordert keine Platzhalter-Ereignis-Listener-Syntax, was zeigt, dass mehrere Einstiegspunkte für diese Art von Sicherheitsanfälligkeit vorhanden sind. --- ## Executive Summary Eine RCE-Schwachstelle (Remote Code Execution) existiert in Craft CMS, wo die Funktion `assembleLayoutFromPost()` in `src/services/Fields.php` die vom Benutzer bereitgestellten Konfigurationsdaten nicht säubert, bevor sie an `Craft::createObject()` übergeben wird. Dies ermöglicht es authentifizierten Administratoren, bösartige Yii2-Verhaltenskonfigurationen einzufügen, die beliebige Systembefehle auf dem Server ausführen. Diese Sicherheitsanfälligkeit stellt eine **nicht gepatchte Variante** der in GHSA-255j-qw47-wjh5 adressierten Verhaltensinjektionsanfälligkeit dar, die verschiedene Endpunkte durch einen separaten Codepfad beeinflusst. --- ## Sicherheitsanfälligkeitsdetails ### Angriffsvoraussetzungen - **Authentifizierung:** Zugriff auf Admin-Ebene erforderlich - **Network Access:** Access to admin panel (`/admin`) --- ### Location - **File:** `src/services/Fields.php` - **Function:** `assembleLayoutFromPost()` (Zeilen 1125-1143) - **Function:**Root Cause:** Missing `fieldLayout` POST-Parameter ### Vulnerable Code Path ``php // src/services/Fields.php:1125-1133 public function assemblyLayoutFromPost(?string $namespace = null): FieldLayout {$paramPrefix = $namespace ? rtrim($namespace, '.') . ''; $request = Craft::$app->getRequest(); $config = JsonHelper::decode($request->getBodyParam("{$paramPrefix}fieldLayout"); //
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.8.22, 4.16.18.
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.