GQL entry mutation siteId bypasses schema site scope, enabling cross-site content read/write/delete
Beschreibung
Craft CMS GraphQL-Eintragsmutationsresolver (`saveEntry`, `deleteEntry`) lesen `siteId` direkt aus `$arguments`, ohne `ArgumentManager::prepareArguments()` zu durchlaufen, was die Funktion ist, die die Site-Scope-Filterung über `array intersect` gegen die erlaubten Sites des GraphQL-Schemas erzwingt. Der Abfragepfad (`ElementResolver::prepareElementQuery`) ruft korrekt `prepareArguments()` auf, so dass Abfragen an nicht autorisierte Websites leer zurückkehren. Mutationen umgehen dies jedoch vollständig - ein angreifer mit einem token, der auf site a ausgerichtet ist, kann einträge in site b erstellen, ändern oder löschen, indem er "siteid" im mutationsargument übergibt. Auswirkung - Vertraulichkeit: `saveEntry` lädt das Element nach `siteId` — Angreifer können Inhalte von nicht autorisierten Seiten lesen. Integrität: `saveEntry` schreibt in den `elements sites`-Record der angegebenen Site; die Propagation verteilt Änderungen auf alle Sites. - Verfügbarkeit: `deleteEntry` sucht das Element durch `siteId` und ruft dann `deleteElementBy auf Id` ohne `site Id`, Löschen des Elements auf allen Seiten. ID des Berichts: 1540
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.11.
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.