/

CVE-2026-104971

Severity:

HIGH RISK

(8.5)

Broken Access Control (CWE-639) in Plane Asset APIs

CVE-2026-104971

Deferred

Vulnerability type

Category:

Broken Access Control

CWE:

CWE-639, CWE-862

Impact:

Unauthorized cross-workspace asset access and modification

Severity:

HIGH RISK

(8.5)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Plane contains authorization weaknesses that can allow an authenticated user to access or manipulate file assets across workspace boundaries and read workspace views without appropriate permission checks. The issue becomes risky when endpoint-level authorization does not verify workspace membership or consistently apply the required access-control policy.

Plane contains authorization weaknesses that can allow an authenticated user to access or manipulate file assets across workspace boundaries and read workspace views without appropriate permission checks. The issue becomes risky when endpoint-level authorization does not verify workspace membership or consistently apply the required access-control policy.

Affected context

The vulnerability occurs in Plane deployments using affected asset and workspace-view endpoints. Risk depends on an authenticated user being able to reach these endpoints while authorization checks fail to bind the requested asset or view to a workspace in which the user is a member. The affected behavior includes asset duplication, asset management operations, and workspace-view retrieval.

The vulnerability occurs in Plane deployments using affected asset and workspace-view endpoints. Risk depends on an authenticated user being able to reach these endpoints while authorization checks fail to bind the requested asset or view to a workspace in which the user is a member. The affected behavior includes asset duplication, asset management operations, and workspace-view retrieval.

Exploit preconditions

  • Attack surface: Authenticated HTTP API endpoints for file assets and workspace views
  • Required access: A valid user account with access to the affected API surface
  • Trigger point: Requests that identify an asset or workspace view outside the caller's authorized workspace
  • Why exploitation is possible: Some endpoint paths omit workspace membership or object-level authorization checks, allowing identifiers to be processed without consistently validating tenant ownership
  • Attack surface: Authenticated HTTP API endpoints for file assets and workspace views
  • Required access: A valid user account with access to the affected API surface
  • Trigger point: Requests that identify an asset or workspace view outside the caller's authorized workspace
  • Why exploitation is possible: Some endpoint paths omit workspace membership or object-level authorization checks, allowing identifiers to be processed without consistently validating tenant ownership

Why this happens

The underlying bug is inconsistent object-level authorization in multi-tenant API endpoints. DuplicateAssetEndpoint can retrieve a source asset without constraining the lookup to the caller's workspace, while asset endpoints omit workspace authorization and a workspace-view retrieval action lacks the authorization protection applied to related actions. This maps primarily to CWE-639, Authorization Bypass Through User-Controlled Key, and also reflects CWE-862, Missing Authorization, because requests can reach protected objects without a complete permission check.

The underlying bug is inconsistent object-level authorization in multi-tenant API endpoints. DuplicateAssetEndpoint can retrieve a source asset without constraining the lookup to the caller's workspace, while asset endpoints omit workspace authorization and a workspace-view retrieval action lacks the authorization protection applied to related actions. This maps primarily to CWE-639, Authorization Bypass Through User-Controlled Key, and also reflects CWE-862, Missing Authorization, because requests can reach protected objects without a complete permission check.

Potential impact

  • An authenticated user may read file assets belonging to another workspace
  • An attacker could create, modify, or delete assets outside their authorized workspace
  • Cross-workspace asset duplication could expose or replicate data across tenant boundaries
  • Unauthorized workspace-view information may be disclosed
  • Workspace integrity and confidentiality could be weakened
  • An authenticated user may read file assets belonging to another workspace
  • An attacker could create, modify, or delete assets outside their authorized workspace
  • Cross-workspace asset duplication could expose or replicate data across tenant boundaries
  • Unauthorized workspace-view information may be disclosed
  • Workspace integrity and confidentiality could be weakened

General mitigation guidance

Mitigation generally focuses on enforcing authorization at every object access

and binding resource lookups to the caller's authorized tenant or workspace.

Common defensive patterns include:

  • Apply consistent workspace-membership and role checks to every asset and view operation
  • Scope database queries by the authorized workspace before retrieving objects
  • Use centralized authorization policies rather than endpoint-specific assumptions
  • Apply the same authorization decorator or policy to all equivalent actions
  • Avoid relying on user-supplied identifiers as proof of ownership
  • Return indistinguishable not-found or forbidden responses where appropriate to reduce object enumeration
  • Grant users and service accounts only the workspace permissions they require

Mitigation generally focuses on enforcing authorization at every object access

and binding resource lookups to the caller's authorized tenant or workspace.

Common defensive patterns include:

  • Apply consistent workspace-membership and role checks to every asset and view operation
  • Scope database queries by the authorized workspace before retrieving objects
  • Use centralized authorization policies rather than endpoint-specific assumptions
  • Apply the same authorization decorator or policy to all equivalent actions
  • Avoid relying on user-supplied identifiers as proof of ownership
  • Return indistinguishable not-found or forbidden responses where appropriate to reduce object enumeration
  • Grant users and service accounts only the workspace permissions they require

How teams detect issues like this

Organizations can identify similar issues through:

  • Static analysis and review rules for endpoint handlers that retrieve objects without tenant scoping
  • Code review checks comparing authorization coverage across sibling actions
  • Tests that attempt read, create, update, delete, duplicate, and retrieve operations across workspace boundaries
  • Policy checks requiring centralized authorization before object serialization or mutation
  • API monitoring for repeated cross-workspace identifier access and unusual asset operations

Automated code review tools can help flag missing authorization decorators and unscoped object lookups.

Organizations can identify similar issues through:

  • Static analysis and review rules for endpoint handlers that retrieve objects without tenant scoping
  • Code review checks comparing authorization coverage across sibling actions
  • Tests that attempt read, create, update, delete, duplicate, and retrieve operations across workspace boundaries
  • Policy checks requiring centralized authorization before object serialization or mutation
  • API monitoring for repeated cross-workspace identifier access and unusual asset operations

Automated code review tools can help flag missing authorization decorators and unscoped object lookups.

Sources

SourceLink
github.comgithub.com/makeplane/plane/commit/4577dc3f7a6b5a198602b602a45c6b0abdc7204b
github.comgithub.com/makeplane/plane/commit/ac11c3ef7939e31201fa92a17de106906025590f
github.comgithub.com/makeplane/plane/pull/8885
github.comgithub.com/makeplane/plane/pull/9288
github.comgithub.com/makeplane/plane/releases/tag/v1.4.0
github.comgithub.com/makeplane/plane/security/advisories/GHSA-p57q-8hh8-7fc7

Frequently asked

questions

Yes, the affected behavior is exposed through HTTP API endpoints and may be reachable remotely by an authenticated user, subject to the deployment's network and authentication controls.

The attacker generally needs a valid Plane account and access to the relevant endpoint surface. They do not necessarily need membership in the target workspace if the missing authorization check can be reached.

Enforce centralized, object-level authorization for every operation and scope resource queries to workspaces in which the caller has the required role or membership.

Use tenant-bound data-access patterns, require authorization checks for every endpoint action, and include cross-workspace negative tests for all read and write operations.

Yes, the affected behavior is exposed through HTTP API endpoints and may be reachable remotely by an authenticated user, subject to the deployment's network and authentication controls.

The attacker generally needs a valid Plane account and access to the relevant endpoint surface. They do not necessarily need membership in the target workspace if the missing authorization check can be reached.

Enforce centralized, object-level authorization for every operation and scope resource queries to workspaces in which the caller has the required role or membership.

Use tenant-bound data-access patterns, require authorization checks for every endpoint action, and include cross-workspace negative tests for all read and write operations.

Find out what's already
exploitable in your codebase.