Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with low-privilege workspace account
-
DeliveryIdentify target estimate_id or issue_id in another workspace
-
ExploitSend PATCH/POST with mismatched URL scope
-
ExecutionPrimary-key fetch bypasses workspace/project check
-
ImpactRead or modify cross-tenant estimate / inject issue comment
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 | Requires a valid authenticated Plane account with legitimate membership in at least one workspace/project (ProjectEntityPermission passes for the URL-named workspace/project), plus knowledge or enumeration of a target estimate_id or issue_id belonging to a DIFFERENT workspace. The flaw exists because the write handlers (estimate PATCH and issue-comment POST) fetch nested resources by primary key without re-scoping to the workspace/project in the URL; the list, retrieve, and destroy handlers are correctly scoped and are NOT affected. Limiting factors: authentication is mandatory (not anonymous), the attacker must know/guess a valid foreign object ID, and all versions from 1.4.0 onward are patched. This affects multi-tenant or shared deployments; a single-tenant instance has no cross-workspace boundary to violate. |
| Impact | This is a genuine authorization flaw (CWE-639, Insecure Direct Object Reference / BOLA) in Plane, confirmed by the vendor GitHub Security Advisory GHSA-933r-rxg8-f3h2 and the fixing PR #9286. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:L) yields 8.7 (High), driven by network reachability, low complexity, and high confidentiality/integrity impact; the only mitigating base factor is PR:L, meaning a valid authenticated workspace account is required. No EPSS score, CISA KEV listing, or SSVC decision data was provided in the input, and no public exploit was supplied - so active-exploitation and automatability signals are absent and cannot be assumed. However, the source-code evidence shows the fix is a simple missing scope filter (objects fetched by primary key without workspace/project scoping), so exploitation is trivial for anyone with an account and knowledge of a target object ID - technical barrier is very low even though no weaponized exploit is cited. Net: a real priority for any multi-tenant/shared Plane deployment because cross-tenant read/modify of estimates and issue-comment injection breaks tenant isolation, but widespread opportunistic exploitation is unproven; the EPSS/KEV picture is simply missing rather than low. |
| Exploit ScenarioDerived | An authenticated user of one Plane workspace enumerates or guesses an estimate_id or issue_id belonging to a different workspace, then issues a PATCH to /api/workspaces/{slug}/projects/{project_id}/estimates/{estimate_id}/ to read or alter another tenant's estimates, or POSTs to the issues/{issue_id}/comments/ endpoint to inject comments into a foreign workspace's issue. No public exploit code was identified, but the attack requires only a standard HTTP client and a low-privilege account, and the published patch effectively reveals the exact unprotected endpoints. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 05, 2026
Authenticated cross-workspace access control bypass in Plane (makeplane/plane) before version 1.4.0 lets any user with a valid account in one workspace read and modify estimates, and inject comments into issues, belonging to a completely different workspace. The flaw is a CWE-639 (IDOR/BOLA) issue: the PATCH /api/workspaces/{slug}/projects/{project_id}/estimates/{estimate_id}/ and POST /api/workspaces/{slug}/projects/{project_id}/issues/{issue_id}/comments/ handlers resolve estimate_id and issue_id by primary key without re-verifying that those objects belong to the workspace and project named in the URL, even though ProjectEntityPermission validates the caller's membership in the URL-named scope. Exploitation requires authentication and knowledge or enumeration of a foreign object ID, and is confirmed by vendor advisory GHSA-933r-rxg8-f3h2 and fixing PR #9286; no public exploit code and no confirmed active exploitation were identified at time of analysis, though the CVSS 4.0 base score of 8.7 reflects high confidentiality and integrity impact (assessed as CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L).
RemediationAI
Upgrade to Plane 1.4.0 or later - this is the vendor-released patch that re-scopes the estimate and issue-comment write handlers to the URL's workspace and project (release: https://github.com/makeplane/plane/releases/tag/v1.4.0; advisory: https://github.com/makeplane/plane/security/advisories/GHSA-933r-rxg8-f3h2; fix commit 971c2aadb4e848d70676b4f58b94bc7992dfe5fc via PR #9286). If an immediate upgrade is not possible, compensating controls are limited because the vulnerable object identifiers are not secrets: restricting the deployment to a single workspace/tenant eliminates the cross-tenant boundary entirely, and network-level restriction of the API to trusted users or IP ranges reduces the pool of authenticated accounts able to enumerate foreign estimate and issue IDs, at the cost of breaking legitimate remote access. Temporarily blocking or rate-limiting PATCH requests to /api/projects/*/estimates/* and POST requests to /api/projects/*/issues/*/comments/ at a reverse proxy removes the vulnerable operations but degrades estimate editing and issue commenting for all users. Detection should focus on API logs where a single session issues requests that name a workspace slug in the URL while targeting object IDs that resolve to a different tenant, or where the pre-patch code returned 200 for an estimate_id/issue_id not visible in that workspace's list endpoints; because authentication is mandatory, reviewing and revoking stale or over-broad workspace memberships also reduces the attack surface.
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 multi-tenant open-source project management platform built on a Django REST Framework API, where every object is logically partitioned by workspace (workspace__slug) and project (project_id). The API is protected by a ProjectEntityPermission class that confirms the authenticated user is a member of the workspace and project referenced in the URL path, but that permission class only validates the URL parameters - it does not constrain the identity of nested resources referenced deeper in the path. In the write handlers for estimates and issue comments, the view code fetched Estimate, EstimatePoint, and Issue objects with a bare primary-key lookup (e.g., Estimate.objects.filter(pk=estimate_id).first() and EstimatePoint.objects.filter(pk=estimate_point_id).first()), so an attacker who supplies a valid foreign estimate_id or issue_id from another tenant satisfies the permission check for their own workspace while the query returns the victim tenant's row. The list, retrieve, and destroy handlers in the same viewsets already include workspace__slug=slug and project_id=project_id filters in their queries, which is why the vendor describes the defect as an internal inconsistency rather than a design-wide failure. The fix (PR #9286, commit 971c2aadb4e848d70676b4f58b94bc7992dfe5fc) adds workspace__slug and project_id predicates to those primary-key lookups and returns HTTP 404 'Estimate not found' / 'Estimate point not found' when the scoped object does not exist, making cross-tenant object references indistinguishable from nonexistent ones.
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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:L/SC:N/SI:N/SA:N
Network endpoint, low complexity, and only a basic authenticated account needed (PR:L, not PR:N) to cross tenant boundaries, giving high confidentiality and integrity impact with limited availability effect.
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, two endpoint families fail to verify that nested resource identifiers belong to the workspace and project named in the URL. An authenticated user can read or modify estimates from another workspace through PATCH /api/workspaces/{slug}/projects/{project_id}/estimates/{estimate_id}/, and can inject comments into an issue from another workspace through POST /api/workspaces/{slug}/projects/{project_id}/issues/{issue_id}/comments/. ProjectEntityPermission verifies membership in the workspace and project from the URL, but estimate_id and issue_id are fetched by primary key without confirming the same scope. The list, retrieve, and destroy handlers correctly scope their queries, demonstrating the inconsistency. This issue is fixed in 1.4.0.
Technical POC Analysis
The bug class is CWE-639 (Authorization Bypass Through User-Controlled Key), i.e.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Plane, the open-source project and issue-tracking platform, contains a cross-workspace access control flaw that lets a user with an account in any single workspace read and modify estimates and post comments on issues belonging to entirely different workspaces on the same deployment. For organizations running Plane as a shared or multi-tenant instance - including self-hosted deployments serving multiple teams or external customers - this breaks the workspace boundary that customers and internal stakeholders assume protects their project and planning data. With no vendor patch currently available, leadership should treat workspace isolation as unreliable until remediation is deployed.
No vendor-released patch identified at time of analysis. Interim mitigations: isolate Plane deployments so mutually untrusted or customer-facing workspaces do not share a single instance; restrict account provisioning to vetted users and disable open self-registration; enforce network and IdP-level access controls; log, alert on, and rate-limit calls to the estimate and comment API handlers; and monitor for anomalous cross-workspace object ID access until the fixed Plane release (1.4.0 per vendor advisory / PR #9286) can be deployed.
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.
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
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
Plane prior to 1.4.0 allows an authenticated workspace member to bypass project-level authorization and join any project
Stored cross-site scripting in Plane prior to 1.4.0 lets an authenticated low-privilege workspace member - including a G
Stored cross-site scripting in Plane (versions up to and including 1.3.1) allows any authenticated user - including a br
EUVD-2026-92488
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB