Missing Volume Permission Check in AssetsController::actionShowInFolder Allows Information Disclosure
Beschreibung
## Zusammenfassung `AssetsController::actionShowInFolder()` holt ein Asset nach ID ab und gibt seinen Dateinamen und die vollständige Ordnerhierarchie zurück (einschließlich Volume-Handle, Volume-UID, Ordnernamen, Ordner-UIDs und Ordner-URI-Pfade), ohne zu überprüfen, ob der anfordernde Benutzer die Berechtigung `viewAssets` oder `viewPeerAssets` auf dem Volume des Assets hat. Jeder authentifizierte CP-Benutzer - auch einer mit null Volume-Berechtigungen - kann Asset-Dateinamen und die vollständige Ordnerstruktur eines beliebigen Volumes aufzählen, indem er beliebige Asset-IDs bereitstellt. Dies folgt dem exakt gleichen unvollständigen Patch-Muster wie vier GHSAs, die auf 2026-02-25 zusammengeführt wurden (GHSA-x76w-8c62-48mg, GHSA-vgjg-248p-rfm2, GHSA-5pgf-h923-m958, GHSA-3pvf-vxrv-hh9c), die alle `requireVolumePermissionByAsset()` + `requirePeerVolumePermissionByAsset()` zu Geschwister-Asset-Controller-Aktionen hinzugefügt haben. Die "actionShowInFolder" -Methode wurde dreizehn Tage vor der Patch-Welle eingeführt und nicht darin enthalten. Details Die Sicherheitslücke befindet sich in `src/controllers/AssetsController.php` in Zeile 1437. Die Methode: 1. Ruft `requireCpRequest()` auf – überprüft die Anforderung, die auf den CP abzielt, erzwingt `accessCp`-Berechtigung über `Controller:: enforceAllowAnonymous()`, erzwingt jedoch KEINE Berechtigung auf Volumenebene. 2. Ruft ein beliebiges Asset per ID mit `Asset::findOne($assetId)` ab – kein `editable`/`savable`-Bereichsfilter, so dass alle Assets über alle Volumes hinweg erreichbar sind. 3. Gibt sensible Strukturdaten über JSON zurück. ## Impact - Jeder authentifizierte Bedienfeldbenutzer mit nur "accessCp" -Berechtigung kann die Dateinamen und die vollständige Ordnerstruktur (Namen, UIDs, Handles, URIs) von Assets in Volumes entdecken, auf die sie nicht zugreifen dürfen. Sensible Volume-Strukturen – private Dokumenten-Repositories, vertrauliche Medien, interne Dateinamen – sind jedem Benutzer ausgesetzt, der sich im Control Panel anmelden kann. - Dies ermöglicht gezielte Folgeangriffe: Ein Angreifer, der den Dateinamen und den Ordnerpfad eines privaten Assets kennt, hat möglicherweise andere Möglichkeiten, die eigentliche Datei zu exfiltrieren. ## Referenzen https://github.com/craftcms/cms/commit/e3f3eaab3d85badd713cfc2c24e5f0792ecdb586
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.9.18.
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.