Zum Inhalt springen
← Zurück zum Cyberlagebild
Zuletzt aktualisiert 25.08.2026 03:40

Missing peer-permission check in "AssetsController::actionDeleteFolder" allows deletion of other users' assets

CVSS –1 Quelle

Beschreibung

## Zusammenfassung `AssetsController::actionDeleteFolder()` erfordert nur die `deleteAssets:` Berechtigung für den Zielordner. Es erzwingt niemals `deletePeerAssets:`, obwohl `Assets::deleteFoldersByIds()` die Löschung in jedem absteigenden Ordner und jedem darin befindlichen Asset kaskadiert, unabhängig davon, wer sie hochgeladen hat. Ein Benutzer mit niedrigem Privileg, dem Ordnerverwaltungsrechte für ein freigegebenes Volume erteilt wurden, kann daher von anderen Benutzern hochgeladene Assets (Peer-Assets) zerstören und die Peer-Permission-Prüfung per Asset umgehen, ob der Endpunkt "actionDeleteAsset" korrekt angewendet wird. Dies ist die gleiche Fehlerklasse, die gerade in `actionMoveFolder` als **GHSA-3w32-23wj-rxg3** behoben wurde (commit `05c2042`, Apr 23 2026); der Fix fügte `requireVolumePermissionByFolder('deletePeerAssets', ...)` und `savePeerAssets`-Prüfungen zum Move-Endpunkt hinzu, wurde aber nicht zum delete-Ordner-Endpunkt weitergeleitet. ## Details `src/controllers/AssetsController.php:552-569`: ``php public function actionDeleteFolder(): Antwort {$this->requireAcceptsJson(); $folderId = $this->request->getRequiredBodyParam('folderId'); $assets = Craft::$app->getAssets(); $folder = $assets->getFolderById($folderId); if (!$folder) { throw new BadRequestHttpException('The folder cannot be found'); } // Überprüfen Sie, ob es möglich ist, Objekte im Zielvolumen zu löschen. $this->requireVolumePermissionByFolder('deleteAssets', $folder); // deleteFoldersByIds($folderId); return $this->asSuccess(); } ````requireVolumePermissionByFolder()``(`src/controllers/AssetsControllerTrait.php:75-88`) löst nur einen einzelnen `requirePermission('deleteAssets:')`-Aufruf auf. Der Peer-äquivalente Helfer ("requirePeerVolumePermissionByAsset") wird niemals aufgerufen, da es keinen Peer-Helfer auf Ordnerebene gibt, der den Inhalt des Ordners iteriert. `Assets::deleteFoldersByIds()` (`src/services/Assets.php:311-349`)` (`src/services/getFolders.php:311-349`) ́ (`src/services/getElements()->getElements()->deleteElements()- direkt: ```php $asset->asset->folderId($allFolderIds); $elementService->keepFileOnDelete = !$deleteDir; $elementService->deleteElement($asset, true); ́``php public function canDelete($this->isFolder) { return false; } $volume = $this->getVolume(); } if ($this->uploadFs($volume->getFs()) { return true; // can("deletePeerAssets:$volume->

HerstellerPixel & Tonic
ProduktCraft CMS
ProduktfamilieKeine Angaben
Betroffene Versionen< 5.9.22, < 4.17.15
Behobene Versionen5.9.22, 4.17.15

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.22, 4.17.15.

PrioritätGrün
EinordnungPlanbar behandeln und überwachen.

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.