Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAccess published board via public anchor
-
ExploitCall /api/public asset endpoint with foreign FileAsset ID
-
ExecutionBypass workspace-only scoping lacking project_id/membership check
-
ImpactRead, overwrite, or restore cross-tenant assets
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Exploitation requires that at least one Plane board has been published as a public/shared board, giving the attacker a valid DeployBoard public anchor to hit the Spaces endpoints (EntityAssetEndpoint and AssetRestoreEndpoint) under /api/public/ in versions prior to 1.4.0. The attacker then supplies an arbitrary FileAsset primary key; pre-patch the row was fetched with only workspace=deploy_board.workspace scoping and no project_id constraint or WorkspaceMember check, enabling cross-project (and per the advisory cross-workspace) read/overwrite/restore. Limiting factors: a publicly published board must exist to obtain the anchor, and the input CVSS rates PR:L (authentication) - though the public-endpoint design suggests this constraint may not apply in practice and should be confirmed. |
| Impact | This is a CWE-639 insecure-direct-object-reference (authorization bypass) in Plane's Spaces app public asset endpoints, with an input CVSS 3.1 vector of AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N (7.1, High). The exploitability signals are strong: network-reachable, low attack complexity, no user interaction. No EPSS score, SSVC decision, or CISA KEV status was provided in the input, and no exploit/POC is referenced - only the vendor advisory, fix PR, commit, and release are public, so there is no public exploit identified at time of analysis and no evidence of active exploitation. A notable internal conflict: the input vector sets PR:L (authenticated/low-privilege), but the description states the vulnerable endpoints live under /api/public/ and resolve a DeployBoard from a public anchor with no membership check - which implies unauthenticated reachability (PR:N). This should be verified with the vendor; if the public board anchor is reachable without authentication, real-world risk is higher than the 7.1 suggests (recomputes to ~8.1). Even taking the data at face value, this is a genuine priority rather than a paper high-CVSS issue: it is a real cross-tenant data-exposure and tampering flaw in multi-tenant SaaS/self-hosted deployments, confirmed by the vendor's own patch which adds project_id scoping to the previously workspace-only lookups. Mitigating the urgency is the absence of KEV/EPSS/POC signals, suggesting opportunistic rather than mass exploitation at this time. |
| Exploit ScenarioDerived | An attacker who can reach a published Plane board's public link uses its anchor to hit the Spaces asset endpoints (EntityAssetEndpoint GET/PATCH, AssetRestoreEndpoint POST) under /api/public/, supplying FileAsset IDs that belong to other projects or workspaces. Because the lookup was scoped only to the board's workspace with no project_id constraint or membership check, the attacker reads, overwrites, or restores assets outside their authorized scope. No public exploit code is referenced, but the attack is trivial (AV:N/AC:L) and reproducible from the public fix diff. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 05, 2026
Insecure direct object reference in Plane's public Spaces asset endpoints (all versions prior to 1.4.0) allows an attacker to read, overwrite, or restore arbitrary FileAsset records belonging to other projects and workspaces by supplying a crafted asset ID. The vulnerable code paths - EntityAssetEndpoint and AssetRestoreEndpoint in plane/space/views/asset.py - resolve a DeployBoard from a public anchor but fetch or mutate FileAsset rows scoped only to that board's workspace, with no membership check and no project_id constraint, even though sibling endpoints in plane/app/views/asset/v2.py had already been hardened for two earlier cross-tenant asset IDORs tracked as CVE-2026-27705 and CVE-2026-46558. Exploitation requires that at least one board be published as a public/shared board so an attacker can obtain a valid DeployBoard public anchor; the input CVSS 3.1 vector rates PR:L (7.1, High), while our independent assessment scores PR:N because the affected endpoints are reachable under the unauthenticated /api/public/ namespace, and this difference should be confirmed in the target deployment. No public exploit code or in-the-wild exploitation has been identified for this issue at time of analysis, and it is not listed in CISA KEV.
RemediationAI
Upgrade to Plane 1.4.0 or later - vendor-released patch version 1.4.0 (release notes: https://github.com/makeplane/plane/releases/tag/v1.4.0), which applies project_id scoping to the Spaces asset lookups and additional authorization tightening via PR 9288 (commit 4577dc3f7a6b5a198602b602a45c6b0abdc7204b) as documented in advisory GHSA-jh4v-88j2-g65v. If immediate upgrade is not possible, the highest-value compensating control is to eliminate the required precondition: unpublish all public/shared boards (disable the 'publish to public' / share-to-web feature) so no DeployBoard anchor is available to reach the vulnerable endpoints - the trade-off is loss of public board sharing for external stakeholders. As a secondary control, block or restrict access to the /api/public/ asset paths (the EntityAssetEndpoint and AssetRestoreEndpoint routes in plane/space/views/asset.py) at the reverse proxy or WAF for unauthenticated traffic; note that this degrades legitimate anonymous public-board asset rendering for published boards. Because the vulnerability is a missing object-scope check rather than a missing authentication primitive, restricting the /api/public/ namespace is more reliable than trying to filter on asset IDs, which are sequential primary keys and not practically enumerable via a deny-list. Also monitor and review FileAsset read/overwrite/restore activity originating from public anchors for signs of cross-project access, and rotate or re-verify the integrity of any assets that may have been overwritten or restored. No vendor patch exists below 1.4.0; there is no separate backport branch identified in the available data.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Plane is a Django/Django-REST-Framework project-management application; assets such as attachments, covers, and board images are stored as FileAsset rows that carry a workspace foreign key and a project_id, and are addressed by primary key through asset endpoints. The affected class of bug is CWE-639 (Authorization Bypass Through User-Controlled Key): a user-controlled identifier (the asset pk in the URL) is used to fetch or modify an object without an ownership or scope check. In the Spaces app, EntityAssetEndpoint (GET), AssetRestoreEndpoint (PATCH/POST), and the related restore path take a public 'anchor' parameter, look up a DeployBoard, and then perform FileAsset.objects.get(id=pk, workspace=deploy_board.workspace) - or FileAsset.all_objects.get(...) - without the project_id = deploy_board.project_id filter and without any WorkspaceMember validation. Because the earlier remediation of plane/app/views/asset/v2.py (fixes for CVE-2026-27705 and CVE-2026-46558) introduced a WorkspaceMemberPermission class plus workspace__slug and project_id scoping to the authenticated asset endpoints, the unauthorized /api/public/ surfaces in plane/space/views/asset.py were left behind, producing a cross-project and cross-workspace read/write/restore primitive on any asset whose workspace matches the public board's workspace, and - per the advisory - wider cross-tenant exposure. The upstream fix (PR 9288, commit 4577dc3f7a6b5a198602b602a45c6b0abdc7204b) adds project_id=deploy_board.project_id to the GET, PATCH, and POST asset lookups and also tightens workspace-logo uploads and cross-workspace asset copying in the authenticated views. The impact is predominantly confidentiality (C:H) with a limited integrity component (I:L), since overwrite/restore is possible but the underlying asset objects are not arbitrary application resources; availability is unaffected (A:N).
Know when Plane gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
Endpoints under /api/public resolve the board from a public anchor with no membership check, so PR:N and AC:L; arbitrary asset read gives C:H, overwrite/restore limited I:L, no availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Plane is an open-source project management tool. Prior to 1.4.0, Plane's dashboard asset endpoints in plane/app/views/asset/v2.py were remediated for two cross-tenant asset IDORs, CVE-2026-27705 and CVE-2026-46558. Those fixes added a membership check and project_id and workspace__slug scoping to the asset endpoints in that file. The Spaces app in plane/space/views/asset.py serves related public-board operations under /api/public/ but was not remediated. Its EntityAssetEndpoint and AssetRestoreEndpoint resolve a DeployBoard from a public anchor and then read or modify FileAsset rows scoped only to the board's workspace, without a membership check or project_id constraint. An attacker can therefore read, overwrite, or restore assets across projects and workspaces. This issue is fixed in 1.4.0.
Technical POC Analysis
CWE-639 (Authorization Bypass Through User-Controlled Key); the advisory also cites CWE-284.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Plane's project management platform (all versions prior to 1.4.0) contains an access-control flaw in its public Spaces asset endpoints that lets an attacker read, overwrite, or restore file assets belonging to unrelated projects and workspaces, provided any board in the environment is published as public or shared. The practical exposure is cross-tenant data confidentiality and integrity loss for organizations hosting Plane as a multi-tenant service or exposing shared boards externally, with follow-on risk of customer breach notifications and erosion of tenant trust. No public exploit code has been identified at time of analysis and the CVSS base score is 7.1 (High), but no vendor patch is currently available and this is the third cross-tenant asset IDOR in the same codebase, which should concern leadership about systemic access-control maturity.
Unpublish or disable all public/shared boards to remove the DeployBoard anchor required for exploitation; restrict network access to the Spaces asset endpoints; enforce authentication and per-board membership checks; suspend the asset restore endpoint; and monitor FileAsset access logs for cross-workspace reads or mutations. The CVSS vector rates this PR:L (authenticated).
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Cross-workspace authorization bypass in Plane (makeplane) prior to version 1.3.1 allows any authenticated user of one wo
Plane version 0.7.1 allows an unauthenticated attacker to view all stored server files of all users. Rated high severity
Authenticated users who can create a workspace in Plane can force the application's background worker to fetch internal-
Unauthenticated remote attackers can forge Django-signed session cookies, CSRF tokens, and password-reset tokens, and by
Workspace invitation hijacking in Plane prior to 1.4.0 lets an unauthenticated attacker take over a pending workspace in
Plane is an open-source project management tool. Rated medium severity (CVSS 5.8), this vulnerability is remotely exploi
Plane (makeplane/plane) through version 1.4.2 makes security decisions based on the client-supplied X-Forwarded-For head
Improper authorization in Plane before 1.4.0 lets an authenticated workspace Guest hijack file assets from other project
Account takeover in Plane (makeplane) versions prior to 1.4.0 allows remote unauthenticated attackers to log in as exist
Brute-forceable magic-code email login in Plane versions prior to 1.4.0 allows unauthenticated remote attackers to guess
Server-side request forgery in Plane, the open-source project management tool, allows a low-privilege user of a connecte
Authenticated cross-workspace access control bypass in Plane (makeplane/plane) before version 1.4.0 lets any user with a
EUVD-2026-92530
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB