Missing volume permission in AssetsController::actionMoveInfo leaks cross-volume asset count and total size
Beschreibung
`AssetsController::actionMoveInfo` (hinzugefügt in 5.7.0) erzwingt nur `requireCpRequest` + `requirePostRequest`, dann berechnet `count()` + `sum(size)` über die Assets-Tabelle für einen beliebigen `Ordner Ids`/`assetIds` (expandierende Nachkommen). Es führt keine Volume-Permission-Prüfung durch, so dass jeder authentifizierte Control-Panel-Benutzer die Asset-Anzahl und den gesamten Speicher-Fußabdruck von Ordnern / Volumes erfahren kann, die sie nicht anzeigen können. ## Root Cause `AssetsController.php` (5.10.9, Zeile 1536): Die Aktion erzwingt nur `requireCpRequest()` + `requirePostRequest()`, dann führt `count()` + `sum('[[Größe]]')` über `Table::ASSETS` für von willkürlichen Anrufern bereitgestellte `folderIds`/`assetIds` (erweiternde Nachkommen) aus. Im Gegensatz zu jedem anderen Leseendpunkt (`actionDownloadAsset`, `actionPreviewFile`, `actionShowInFolder`) ruft er niemals `requireVolumePermissionByFolder('viewAssets', ...)` auf. ## Impact Aggregate-Metadaten IDOR: Leaks Asset Count und Total Storage Bytes für beliebige Ordner/Volumes, die der Aufrufer nicht anzeigen kann. Kein Inhalt, keine Dateinamen – geringe Auswirkungen auf die Vertraulichkeit. ## Proof of Concept Wie jeder authentifizierte Bedienfeldbenutzer: `POST assets/move-info` mit `folderIds[]=` → Antwort beinhaltet `count` und `totalSize`. Impact Aggregate-Metadaten IDOR: Leaks Asset Count und Gesamtspeicherbytes für beliebige Ordner / Volumen, die der Anrufer nicht anzeigen kann. Kein Inhalt, keine Dateinamen. ID des Berichts: 1564
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.12.
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.