Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify target email with pending invite
-
DeliverySelf-register account using target's email
-
ExploitEnumerate invitations via /api/users/me/workspaces/invitations/
-
ExecutionExtract leaked join token from serializer
-
ImpactAccept invitation and join workspace as target
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires (1) a pending WorkspaceMemberInvite already existing for an email address the attacker knows or can guess, and (2) the instance permitting open self-signup that creates an authenticated User row without an out-of-band email-ownership check (the pre-1.4.0 default signup flow). The attacker then uses GET /api/users/me/workspaces/invitations/, which returns invites matching request.user.email and - via WorkSpaceMemberInviteSerializer fields='__all__' - exposes the token protecting the join endpoint. LIMITING FACTORS: the target email must have an outstanding, unaccepted invitation; instances using SSO/IdP-gated or admin-approved registration (rather than open self-signup) break the email-squat primitive; and the realized impact is capped by the invited role rather than guaranteed admin. |
| Impact | The input assigns CVSS 9.8 (AV:N/AC:L/PR:N/UI:N/C:H/I:H/A:H), framing this as a critical network-exploitable flaw. Examining the underlying mechanism, the core defect is an authorization/exposure chain (CWE-200): open self-signup mints a logged-in session for any email without ownership verification, and WorkSpaceMemberInviteSerializer with fields='__all__' leaks the invitation token, enabling an email-squatting attacker to hijack a pending workspace invitation. PR:N is justified because the attacker holds no credential before signup, yet real-world risk is materially gated by a precondition the CVSS vector does not capture: a pending WorkspaceMemberInvite must already exist for the targeted email, so this is opportunistic/targeted against invited-but-unregistered users rather than mass-exploitable against arbitrary accounts. No EPSS score, no KEV listing, and no public POC were provided - only the vendor fix (PR #9297 source diff). The 9.8 'high-CVSS' rating is therefore somewhat inflated versus practical risk: it is a genuine pre-auth workspace-takeover primitive worth prompt patching for any internet-exposed self-hosted Plane instance, but exploitation is bounded by invitation state and by whether open signup is enabled, so it leans targeted rather than wormable. The claimed A:H also assumes the hijacked invitation grants a privileged (e.g., admin) role; for a lower invited role, availability/integrity impact would be correspondingly lower. |
| Exploit ScenarioDerived | An attacker learns that victim@corp.com was invited to a Plane workspace but has not yet registered. The attacker self-registers an account using victim@corp.com (open signup creates an authenticated session with no ownership check), calls GET /api/users/me/workspaces/invitations/ to enumerate the pending invite and read its leaked join token, then accepts the invitation - silently joining the workspace at the victim's invited role. No public exploit code was identified at time of analysis, though the fixing PR diff publicly documents the vulnerable code path. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 05, 2026
Workspace invitation hijacking in Plane prior to 1.4.0 lets an unauthenticated attacker take over a pending workspace invitation by registering an account with a victim's email address. Because the signup flow creates a logged-in User row for any submitted address without an out-of-band ownership check and User.email is unique, the attacker can call GET /api/users/me/workspaces/invitations/ to enumerate invites matching that address, read the acceptance token exposed by WorkSpaceMemberInviteSerializer (fields = "all"), and then accept the invitation - joining the target workspace at the invited role. CVSS 3.1 scores this 9.8 (AV:N/AC:L/PR:N/UI:N/C:H/I:H/A:H); no public exploit code or CISA KEV entry was identified at time of analysis, and exploitation depends on a live pending invitation plus an instance that permits open self-signup.
RemediationAI
Vendor-released patch: 1.4.0 - upgrade Plane to v1.4.0 (https://github.com/makeplane/plane/releases/tag/v1.4.0) or later; the fix is carried in PR https://github.com/makeplane/plane/pull/9297 and commit 6220ba990b2276a1a1979d1d5df68f650b8b47ad, per advisory GHSA-4vj8-p63v-8p24. If immediate upgrade is not possible, disable open self-signup and require an identity-provider/SSO-gated or admin-approved registration flow, which removes the email-squat primitive - the trade-off being that legitimate new users then need an out-of-band provisioning step. As a secondary compensating control, review outstanding unaccepted workspace invitations and cancel or re-issue them so no harvestable token is left pending; this reduces exposure but does not fix the missing email-ownership check on signup. Blocking or restricting GET /api/users/me/workspaces/invitations/ at the reverse proxy also removes the token-disclosure step, but it degrades the normal invitation experience for legitimate invitees and is not a substitute for patching.
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-based open-source project management platform whose API layer runs on Django REST Framework under apps/api. The tagged root cause class is CWE-200 (information exposure), but the practical exploit chain is an identity-binding/authorization failure. Pre-1.4.0 signup does not verify that the registrant controls the submitted email address, while the User model enforces email uniqueness - so an attacker can claim any unregistered address, including one belonging to an invitee. The invitations listing endpoint filters WorkspaceMemberInvite records by request.user.email, and the serializer applied there, WorkSpaceMemberInviteSerializer, was declared with fields = "all", which includes the token field that protects the join endpoint as well as invite_link. The attacker therefore obtains both the invite record and the secret needed to redeem it. The fix (PR 9297 / commit 6220ba990b2276a1a1979d1d5df68f650b8b47ad) introduces WorkSpaceMemberInvitePublicSerializer, a read-only serializer that intentionally omits token and invite_link, switches the GET endpoint to it, and adds an authenticated-session plus email-match check on the accept endpoint so the accepting user must be the invited person. CPE cpe:2.3:a:makeplane:plane:*:*:*:*:*:*:*:* covers all builds before the 1.4.0 release.
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:N/UI:N/S:U/C:H/I:H/A:H
PR:N since the attacker self-registers with no prior credential; AV:N/AC:L for a remote API call; C/I/A:H reflect full workspace access assuming a privileged invited role, though impact drops for lower roles.
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 signup flow creates a logged-in User row for any submitted email without an out-of-band ownership check, while User.email is unique=True. The authenticated user can call GET /api/users/me/workspaces/invitations/, which returns each WorkspaceMemberInvite whose email matches request.user.email. WorkSpaceMemberInviteSerializer uses fields = "all", exposing the token that protects the invitation join endpoint. An unauthenticated attacker who knows a target's email can register an account using that address, enumerate pending invitations, and accept an invitation as the target, joining a workspace at the invited role. The term pre-auth describes the attacker's initial state: the attacker has no credential before signup, while the enumeration and join requests use the session created by that signup. This issue is fixed in 1.4.0.
Technical POC Analysis
CWE-200, Exposure of Sensitive Information to an Unauthorized Actor.
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 management platform, prior to version 1.4.0 contains an unauthenticated workspace invitation hijacking flaw that lets an attacker join an organization's workspace by registering with a victim's email address. Any organization running a vulnerable Plane instance with open self-signup enabled and pending invitations is at risk of unauthorized workspace access, exposing project data and enabling tampering with internal workflows. Leadership should prioritize immediate mitigation because no vendor patch is currently available and the attack requires no credentials or user interaction.
Disable open self-signup, enforce out-of-band email ownership verification before invitation acceptance, restrict invitation creation to trusted administrators, monitor and block enumeration of the workspace invitations endpoint, and audit workspace membership for unauthorized joins.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
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
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
Authenticated cross-workspace access control bypass in Plane (makeplane/plane) before version 1.4.0 lets any user with a
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-92595
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB