GraphQL Asset Mutation Privilege Escalation
Beschreibung
Es gibt eine Privilege Escalation-Schwachstelle in der GraphQL-API von Craft CMS, die es einem authentifizierten Benutzer mit Schreibzugriff auf ein Asset-Volume ermöglicht, seine Privilegien zu eskalieren und Assets zu ändern / zu übertragen, die zu einem anderen Volume gehören, einschließlich eingeschränkter oder privater Volumes, auf die er keinen Zugriff haben sollte. ## Zusammenfassung: Type: Privilege Escalation (CWE-269) Affected: Craft CMS 5.x (wahrscheinlich auch 4.x und 3.x) Location: `src/gql/resolvers/mutations/Asset.php lines 57-107` ## Root Cause: Die saveAsset GraphQL-Mutation validiert die Autorisierung gegenüber dem schemaaufgelösten Volume, holt aber das Ziel-Asset per ID ab, ohne zu überprüfen, ob das Asset zum autorisierten Volume gehört. Dies ermöglicht eine nicht autorisierte Änderung und Übertragung von Assets über das gesamte Volumen hinweg. ## Impact: - Transfer vertraulicher Assets von privaten Volumina in öffentliche Volumina (Datenexfiltration) - Modifizieren von Asset-Metadaten in eingeschränkten Volumina - Bypass Multi-Tenant Isolation in Shared Hosting-Umgebungen ## Referenzen https://github.com/craftcms/cms/commit/ac7edf868c1a81fd9c4dc49d3b3edf1cce113409
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: 4.17.0, 5.9.0.
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.