Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege Plane user
-
DeliveryObtain/enumerate victim workspace issue UUIDs
-
ExploitPOST UUIDs to cycle-issues endpoint
-
ExecutionEndpoint skips workspace validation
-
ImpactVictim issues removed from their cycle
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 an authenticated account (PR:L) on the target Plane instance and control of a cycle to which issues can be added; the attacker must also supply valid victim issue UUIDs in the request body, which the vulnerable endpoint failed to scope to the caller's workspace/project. Realistic exploitation therefore depends on a multi-tenant or shared Plane deployment (multiple workspaces on one instance) and on the attacker obtaining or enumerating victim issue UUIDs - UUIDs are not easily guessable, which meaningfully limits opportunistic abuse. Single-tenant self-hosted instances with no untrusted users face negligible risk. Affects versions prior to 1.4.0. |
| Impact | This is a cross-tenant authorization flaw (CWE-639, IDOR) in Plane's cycle-issues endpoint, confirmed by the vendor advisory GHSA-22g9-9xfv-q3fr and the fixing code in PR #9269. The supplied CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N, 6.5 Medium) is internally consistent with the description: network-reachable, low complexity, requires an authenticated low-privilege account (PR:L), no user interaction, and high integrity impact (destructive cross-tenant write) with no confidentiality or availability loss. No EPSS score, KEV listing, or public POC exploit was provided in the intelligence, so there is no public exploit identified at time of analysis and no evidence of active exploitation - this is not confirmed actively exploited. The real-world priority is moderate rather than urgent: exploitation requires a valid authenticated account on the same Plane instance and knowledge of victim issue UUIDs, which limits opportunistic mass exploitation, but the impact (silently corrupting another tenant's cycle data) is serious for shared or SaaS-style multi-tenant deployments. Note the input Tag labels this 'Authentication Bypass,' which is inaccurate - CWE-639 and the diff show this is a broken object-level authorization (IDOR) issue, not an authentication bypass, since the attacker is already authenticated. |
| Exploit ScenarioDerived | An authenticated low-privilege user on a shared Plane instance creates or controls a cycle in their own workspace, then calls the cycle-issues endpoint supplying issue UUIDs belonging to a victim workspace. Because the endpoint does not validate that the UUIDs belong to the caller's workspace, the victim's issues are reassigned to the attacker's cycle and removed from the victim's cycle, silently corrupting cross-tenant data. No public exploit code was identified; only the vendor fix diff is available. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 05, 2026
Cross-tenant issue manipulation in Plane (open-source project management tool) before 1.4.0 lets an authenticated user add issues from any workspace into a cycle they control by supplying arbitrary issue UUIDs, and when a victim issue already belongs to another cycle the operation reassigns it, silently removing it from the victim's cycle. The flaw is a user-controlled-key authorization bypass (CWE-639/IDOR) in the cycle-issues endpoint, scored CVSS 6.5 (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N) because it requires a valid account (PR:L) and requires the attacker to know or enumerate victim issue UUIDs, which are not trivially guessable and constrain opportunistic abuse. Vendor-released patch: 1.4.0. No public exploit identified at time of analysis; realistic impact is concentrated on multi-tenant or shared Plane deployments where untrusted users share an instance.
RemediationAI
Upgrade Plane to 1.4.0 or later - the vendor-released patch (release tag v1.4.0, fixing PR #9269, commit 81d9873d7f1cf1d1252ed53c12dd33696be73a89, advisory https://github.com/makeplane/plane/security/advisories/GHSA-22g9-9xfv-q3fr) adds workspace__slug and project_id scoping to the cycle, module, relation, and sub-issue creation paths, so partial application is insufficient - apply the full upstream change rather than only the cycle.py hunk. Where immediate upgrade is not possible, reduce the attack surface by keeping the instance single-tenant or restricting workspace membership to fully trusted users, since exploitation requires an authenticated account and knowledge of victim issue UUIDs; disabling or firewalling the affected API surfaces (the cycle-issues and issue-relation endpoints and any API-token-based programmatic access that can reach them) removes the exposed queryset paths, at the cost of breaking legitimate cycle/module/relation management through those routes. Audit historical cycle and module membership for issues that disappeared from unrelated workspaces to detect prior exploitation, and rotate any API tokens issued to untrusted or external integrators. Note that UUID unguessability is a speed bump, not a control - UUIDs leak through exports, webhooks, integrations, and logs, so treat the patch as mandatory on any multi-tenant deployment.
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 application whose API views accept a workspace slug, project ID, and object ID, then act on the submitted issue identifiers. The vulnerable handlers built querysets with Issue.issue_objects.filter(pk__in=new_issues) without constraining the result to the caller's workspace or project, so a body-supplied UUID from any tenant resolved to a real Issue object and was processed. CWE-639 (Authorization Bypass Through User-Controlled Key) describes exactly this: the security decision is driven by an attacker-controlled identifier, and the missing server-side ownership check turns the primary key into an authorization bypass. The fix in PR #9269 (commit 81d9873d) applies defense in depth across several related endpoints - cycle issue creation (apps/api/plane/api/views/cycle.py and apps/api/plane/app/views/cycle/issue.py), module issue creation, issue relations (apps/api/plane/app/views/issue/relation.py), and sub-issues (apps/api/plane/app/views/issue/sub_issue.py) - by re-querying Issue.issue_objects with workspace__slug=slug (and, where the object type cannot legitimately cross projects, project_id=project_id) and then using only the resulting validated ID list. Relations are scoped to workspace only because they may legitimately span projects within a workspace; cycle, module, and sub-issue operations add project scoping because those containers are project-bound. Any deployment where a primary key from one tenant could be accepted in another tenant's request context is exposed, which is why the affected CPE is the broad makeplane:plane pattern.
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:N/I:H/A:N
Network-reachable REST endpoint (AV:N/AC:L), requires a valid authenticated low-privilege account (PR:L), no UI; destructive cross-tenant write gives I:H with no read (C:N) or availability (A:N) impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Plane is an open-source project management tool. Prior to 1.4.0, the cycle-issues endpoint accepts issue UUIDs in the request body without validating that they belong to the caller's workspace. An authenticated user can add issues from any workspace to a cycle they control. If a victim issue is already assigned to a cycle, the operation removes it from the victim's cycle, causing a destructive cross-tenant write. This issue is fixed in 1.4.0.
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-92491
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB