mirror of
https://github.com/makeplane/plane.git
synced 2026-09-02 12:09:14 +02:00
The public Space asset endpoints (space/views/asset.py) require only IsAuthenticated and scoped assets to the deploy board's workspace/project but not to created_by=request.user. Any authenticated public-site user who knew the anchor and an asset UUID could delete/restore another user's asset, or rebind others' comment-description assets to a caller-controlled entity id. EntityAssetEndpoint.post already sets created_by=request.user, establishing the intended per-user boundary. Scope EntityAssetEndpoint.patch/delete, AssetRestoreEndpoint.post, and EntityBulkAssetEndpoint.post to created_by=request.user (404 when the asset isn't the caller's). Adds 4 contract tests (attacker delete/restore/rebind blocked, owner delete allowed); fail-before verified. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>