Stored XSS in the control panel via unescaped draft name
Beschreibung
Der Control-Panel-Helfer, der Element-Chip / Karten-Etiketten rendert, schreibt den "DraftName" eines Elements in die Seite, ohne es mit HTML zu codieren, während die umgebenden Pfadsegmente codiert sind. Ein Benutzer mit niedrigem Privileg, der einen Entwurf eines Elements erstellen kann (z. B. einen Eintrag), steuert den Entwurfsnamen, so dass er eine XSS-Nutzlast speichern kann, die im Browser eines anderen Benutzers des Kontrollpanels ausgeführt wird, dem der Chip oder die Karte dieses Elements angezeigt wird (Elementindizes mit sichtbaren Entwürfen, Beziehungs- und Elementauswahlfeldern, die auf das Element verweisen, und die Entwurfsliste). Dies ermöglicht es einem Autor mit geringem Privileg, JavaScript in der authentifizierten Sitzung eines Administrators auszuführen und das Bedienfeld zu übernehmen. Es ist die gleiche Ausgabecodierungsklasse wie das kürzlich festgelegte GHSA-xrqc-p465-2xvg (Struktureintragstitel) und GHSA-3x4w-mxpf-fhqq (Revisionskontextmenü), die andere benutzergesteuerte Titel, aber nicht den Entwurfsnamen codierten. ### Voraussetzungen - Ein Control-Panel-Konto mit der Berechtigung, Einträge in mindestens einem Abschnitt zu bearbeiten und Entwürfe zu erstellen. Ein höherprivilegierter Benutzer (z. B. ein Administrator), dem später der Chip oder die Karte des Entwurfs angezeigt wird (ein Elementindex mit sichtbaren Entwürfen oder ein Relations-/Elementauswahlfeld, auf das sich das Element bezieht). ### Einschränkungen - Erfordert, dass dem Opfer im Bedienfeld der Chip/Karte des betroffenen Elements angezeigt wird (normale tägliche Aktivität; Elementindizes und Beziehungsfelder sind Routine). - Die Nutzlast läuft im Control-Panel-Ursprung in der Sitzung des Opfers. Ein Autor mit niedrigem Privileg kann beliebiges JavaScript in der Sitzung eines Benutzers mit höherem Privileg, dem der Chip oder die Karte des Elements angezeigt wird, einschließlich Administratoren, ausführen. Dies ist ein Cross-Privileg gespeichertes XSS, kein Self-XSS: Der Angreifer und das Opfer sind unterschiedliche Benutzer, und die Nutzlast wird beim routinemäßigen Durchsuchen von Elementindizes und Beziehungsfeldern ausgelöst. Da das Skript im Control-Panel-Ursprung des Opfers läuft, kann es das CSRF-Token lesen, das Craft in die Seite JavaScript einbettet ("Craft.csrfTokenValue", bestätigt auf Control-Panel-Seiten) und authentifizierte Control-Panel-Aktionen als Opfer ausgeben. Dies wurde Ende-zu-Ende auf Craft Pro verifiziert: Eine In-Session-Anfrage an die Aktion "User/Save-User" erstellte ein brandneues Konto ("User save.", HTTP 200), eine reine Admin-Fähigkeit, die ein Autor niemals direkt ausführen kann.
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.8.
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.