Skip to main content

Plane CVE-2026-104975

| EUVDEUVD-2026-92530 HIGH
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-10-05 GitHub_M
7.1
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Access published board via public anchor
  2. Exploit
    Call /api/public asset endpoint with foreign FileAsset ID
  3. Execution
    Bypass workspace-only scoping lacking project_id/membership check
  4. Impact
    Read, 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

plane < 1.4.0

Affected Packages

euvd plane fix: 1.4.0

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

Vendor (GitHub_M) PRIMARY 7.1 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
vuln.today AI 8.2 HIGH

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.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
Low
Availability
None

Lifecycle Timeline

2
Patch available
Oct 05, 2026 - 19:02 EUVD
CVE Published
Oct 05, 2026 - 17:44 cve.org
HIGH 7.1

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.3%
Top 83% exploitable
Prevalence
Low
niche self-hosted open-source project-management tool, limited production footprint
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

More in Plane

View all
CVE-2026-46558 HIGH POC
8.3 Jun 10

Cross-workspace authorization bypass in Plane (makeplane) prior to version 1.3.1 allows any authenticated user of one wo

CVE-2023-2268 HIGH POC
7.5 Jul 15

Plane version 0.7.1 allows an unauthenticated attacker to view all stored server files of all users. Rated high severity

CVE-2026-105636 CRITICAL
9.9 Oct 05

Authenticated users who can create a workspace in Plane can force the application's background worker to fetch internal-

CVE-2026-105641 CRITICAL
9.8 Oct 05

Unauthenticated remote attackers can forge Django-signed session cookies, CSRF tokens, and password-reset tokens, and by

CVE-2026-105639 CRITICAL
9.8 Oct 05

Workspace invitation hijacking in Plane prior to 1.4.0 lets an unauthenticated attacker take over a pending workspace in

CVE-2024-47830 MEDIUM POC
5.8 Oct 11

Plane is an open-source project management tool. Rated medium severity (CVSS 5.8), this vulnerability is remotely exploi

CVE-2026-111869 MEDIUM POC
5.5 Oct 18

Plane (makeplane/plane) through version 1.4.2 makes security decisions based on the client-supplied X-Forwarded-For head

CVE-2026-105637 CRITICAL
9.6 Oct 05

Improper authorization in Plane before 1.4.0 lets an authenticated workspace Guest hijack file assets from other project

CVE-2026-105640 CRITICAL
9.1 Oct 05

Account takeover in Plane (makeplane) versions prior to 1.4.0 allows remote unauthenticated attackers to log in as exist

CVE-2026-105638 CRITICAL
9.1 Oct 05

Brute-forceable magic-code email login in Plane versions prior to 1.4.0 allows unauthenticated remote attackers to guess

CVE-2026-104976 HIGH
8.7 Oct 05

Server-side request forgery in Plane, the open-source project management tool, allows a low-privilege user of a connecte

CVE-2026-104966 HIGH
8.7 Oct 05

Authenticated cross-workspace access control bypass in Plane (makeplane/plane) before version 1.4.0 lets any user with a

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy