Peer asset file overwrite via assets/replace-file late-discovered target skips permission check
Beschreibung
"AssetsController::actionReplaceFile" ermöglicht es einem Autor mit niedrigem Privileg, den Dateiinhalt eines beliebigen Peers zu überschreiben. Wenn die Anforderung `sourceAssetId` und `targetFilename` liefert, aber NO `asset Id`, wird das Ziel-Asset nach dem Ausführen der Berechtigungsprüfungen durch Ordner + Dateiname entdeckt, und sein Inhalt wird mit einem Null-ReplacePeerFiles-Check überschrieben. Dies ist ein eindeutiger, ungepatchter Vektor von CVE-2026-50283 / GHSA-qh45-9g5p-m2v4 (dessen Fix den beiden-IDs-Quellen-Löschungsfehler "?:" abdeckt). Id` + `targetFilename` und kein `Asset Id`, der Kombinationsschutz an den Linien 426-431 passiert. Zum Zeitpunkt der Berechtigungsüberprüfung (444-451 — der CVE-2026-50283-Fix) ist `$assetToReplace` null (keine assetId), so dass nur `$sourceAsset` (der eigene Upload des Angreifers) validiert ist, und `requirePeerVolumePermissionByAsset('replacePeerFiles', $sourceAsset)` ist ein No-Op (`uploaderId==userId`). Die Ausführung tritt dann in den Zweig "else" (:458, "$sourceAsset !== null") ein und führt eine späte Suche durch (:469-473): "Asset::find()->folderId($sourceAsset->folderId)->filename($targetFilename)->one()" = die Datei des Opfers im gleichen Ordner. Der Extension Guard (:464) ist zufrieden, weil der Angreifer die Erweiterung der Quelldatei gewählt hat. Ein Autor mit nur `replaceFiles` in einem freigegebenen Ordner überschreibt den Inhalt einer Peer-Asset-Datei stillschweigend mit von Angreifern kontrollierten Bytes, ohne `replacePeerFiles`. ID des Berichts: 1561
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.