Authenticated RCE through Twig sandbox escape
Beschreibung
Der Twig-Sandbox-Mechanismus in Craft CMS ist so konfiguriert, dass gefährliche Funktionen aus dem Yii-Framework ermöglicht werden, was zu authentifiziertem RCE in einer Weise führt, die den zuvor angegebenen Sicherheitslücken ähnelt. Die Twig-Sandbox im Craft CMS implementiert Twigs „SecurityPolicyInterface. Die resultierende `SecurityPolicy` Klasse implementiert die `checkMethodAllowed` und `checkPropertyAllowed` Methoden der Schnittstelle. Die Implementierungen vergleichen, ob sich die aufgerufene Methode oder Eigenschaft in einer konfigurierten Allowlist befindet oder mit dem Attribut "AllowedInSandbox" markiert ist. Darüber hinaus ermöglicht "SecurityPolicy" das Allowlisting ganzer Klassen, was eine Abkürzung dafür ist, dass alle Methoden und Eigenschaften dieser Klasse aufgerufen werden können. Sowohl die Erlaubnislisten für Tags, Filter, Variablen, Methoden, Eigenschaften und Klassen als auch der Attributmechanismus "AllowedInSandbox" sind von Craft CMS vorkonfiguriert, damit benutzerdefinierte Vorlagen die Kernfunktionalität ungehindert nutzen können. Darüber hinaus können Craft CMS-Projektentwickler mehr zu den Erlaubnislisten hinzufügen oder ihre benutzerdefinierten Methoden markieren und so weiter als sicher mit "AllowedInSandbox". Der Allowlisting-Mechanismus der "SecurityPolicy"-Klasse ist potenziell gefährlich, da er alle Methoden und Eigenschaften eines Objekts der erlaubten Klasse zulässt. Dies bedeutet, dass das geprüfte Objekt eine Unterklasse sein und zugelassen werden kann. Und es bedeutet, dass die erlaubten Methoden und Eigenschaften auf jeder Klasse der Klassenhierarchie des Objekts definiert werden können, was nicht die erlaubte Klasse selbst sein muss. Craft CMS verwendet das Attribut `AllowedInSandbox`, um das `ElementInterface` als sicher zu markieren. Die Klasse `Element` implementiert diese Schnittstelle und ist die Basisklasse für viele relevante Modellklassen in Craft CMS, wie `Entry`, `User`, `Asset` und so weiter. Zusätzlich erweitert `Element` die `craft\base\Component` Klasse. Wenn Sie die Klassenhierarchie von 'craft\base\Component' nach oben gehen, wird schließlich die Klasse 'yii\base\Component' erreicht, die sich im von CraftCMS verwendeten Yii-Framework befindet. 'yii\base\Component' ist dafür bekannt, ein gefährliches beliebiges Funktionsaufruf-Gadget zu enthalten, das zu zuvor bekannten RCE-Schwachstellen in Craft CMS führt (GHSA-255j-qw47-wjh5, GHSA-2fph-6v5w-89hh, GHSA-7jx7-3846-m7w7, GHSA-qrgm-p9w5-rrfw). Aufgrund der laxen Klassenzulassung ist dieses Funktionsaufruf-Gadget in der Twig-Sandbox erlaubt. Dies ermöglicht Sandbox-Twig-Vorlagen, bekannte Nutzlasten basierend auf dem Funktionsaufruf-Gadget zu verwenden, um RCE zu erreichen. Ein authentifizierter Angreifer mit Zugriffsberechtigung auf das Bedienfeld kann eine bösartige Twig-Vorlage rendern und RCE erhalten, selbst wenn die Twig-Sandbox durch `enableTwigSandbox()` aktiviert ist.
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.7, 4.18.3.
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.