Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessLocate internet-exposed Plane community deployment
-
DeliveryRead publicly-known default SECRET_KEY/LIVE_SERVER_SECRET_KEY
-
ExploitForge Django-signed session or reset token
-
ExecutionBypass live-service auth and authenticate as admin
-
ImpactCompromise accounts, sessions, and project data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Credential externalization
MITRE ATT&CK
2 techniques across 2 tactics: Persistence, Credential Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that the target was deployed using the deployments/aio/community/ or deployments/cli/community/ manifests AND that the operator never overrode the shipped SECRET_KEY (default '60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5') or LIVE_SERVER_SECRET_KEY (default 'htbqvBJAgpm9bzvf3r4urJer0ENReatceh'). The top-level setup.sh randomizes secrets ONLY for the development Docker Compose path, so aio/cli community installs retain the shared production secrets by default. Limiting factors that reduce real-world exposure: instances deployed via the dev Compose path, instances where an operator explicitly set unique secrets, and instances upgraded to 1.4.0 (which auto-generates and persists a random key on first boot) are NOT exploitable; reachability also requires the instance to be network-accessible to the attacker. |
| Impact | All exploitability signals point in the same direction and reinforce a genuinely high priority for the affected population. The supplied CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N) describes a network-reachable, low-complexity, unauthenticated flaw, and CWE-798 (use of hard-coded credentials) makes that plausible because the SECRET_KEY and LIVE_SERVER_SECRET_KEY defaults are literally published in the shipped manifests and now visible in the fix commit/diff - anyone can read them without research effort, which justifies AC:L. However, the raw 9.8 overstates the UNIVERSAL risk: exploitation is strictly conditional on the operator having deployed the aio or cli community manifests AND never overriding the secrets, so this behaves less like a blanket remote RCE and more like an insecure-default that silently affects a subset of self-hosted instances. No EPSS score, KEV listing, or SSVC decision data was provided in the input, so automatable/technical-impact framing cannot be derived; their ABSENCE is not evidence of low risk, only missing telemetry. The 'source code evidence' is the vendor patch diff, NOT a weaponized exploit, so this is not confirmed active exploitation. Net: a real, high-priority issue for anyone running unmodified Plane community Docker deployments, but the real-world blast radius is gated by configuration rather than being every Plane install. |
| Exploit ScenarioDerived | An attacker identifies an internet-reachable Plane instance that was stood up from the deployments/aio/community/ or deployments/cli/community/ manifests, then uses the publicly-known default SECRET_KEY to forge a Django-signed session or token (e.g. a password-reset or auth cookie) and authenticates as an existing user or administrator. Separately, the known LIVE_SERVER_SECRET_KEY lets the attacker bypass live-service authentication on the same unchanged deployment. No public proof-of-concept exploit was provided - the GitHub source evidence is the remediation patch, not attack code. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 05, 2026
Unauthenticated remote attackers can forge Django-signed session cookies, CSRF tokens, and password-reset tokens, and bypass live-service authentication, against Plane installations that shipped with publicly known default secrets. Plane versions prior to 1.4.0 distributed fixed SECRET_KEY (60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5) and LIVE_SERVER_SECRET_KEY (htbqvBJAgpm9bzvf3r4urJer0ENReatceh) values in the deployments/aio/community/ and deployments/cli/community/ manifests, while the top-level setup.sh randomized secrets only for the development Docker Compose path, leaving AIO and CLI community deployments with shared production secrets by default. Rated CVSS 9.8 (AV:N/AC:L/PR:N/UI:N, C/I/A:H) and classified CWE-798; no public exploit identified at time of analysis, although the default key values are published in the vendor repository and are therefore trivially usable by anyone who reads it. Exposure is limited to network-reachable instances deployed via those community manifests whose operators never overrode the secrets; deployments created through the development Compose path, operator-hardened installs with unique secrets, and instances upgraded to 1.4.0 are not exploitable.
RemediationAI
Vendor-released patch: 1.4.0 - upgrade to Plane v1.4.0 (https://github.com/makeplane/plane/releases/tag/v1.4.0), which corresponds to the fix merged in pull request https://github.com/makeplane/plane/pull/9291 (commit https://github.com/makeplane/plane/commit/1acc69e816a9a8789032bf711aa9a3c12fcd285c) and per vendor advisory GHSA-cmwv-pjmw-8483; on first boot the patched start.sh auto-generates and persists random SECRET_KEY and LIVE_SERVER_SECRET_KEY values, and common.py emits a critical log if a known insecure or placeholder value is detected, so monitor logs for that warning to confirm the environment is clean. If immediate upgrade is not possible, the primary compensating control is to set unique high-entropy values for both SECRET_KEY and LIVE_SERVER_SECRET_KEY in the deployment's plane.env / variables.env (for example openssl rand -hex 32 or python3 -c "from django.utils.crypto import get_random_secret_key; print(get_random_secret_key())") and restart the affected containers, since the flaw is exploitable only while the public defaults remain in place; the trade-off is that rotating SECRET_KEY invalidates all existing Django sessions, signed cookies, pending password-reset links, and any other Django-signed data, forcing every user to re-authenticate. A short-term containment option is to restrict network access to the Plane web and live-service endpoints (reverse-proxy allowlists or VPN-only exposure), which reduces reachability but does not remove the underlying weakness and can disrupt legitimate remote users. Until the secrets are rotated or the upgrade is applied, treat authentication and session integrity on the affected deployment as untrusted.
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
The root cause is CWE-798 (Use of Hard-coded Credentials) in Docker deployment manifests rather than in application logic per se. Django's SECRET_KEY is the master cryptographic salt used by django.core.signing for signing session cookies, CSRF tokens, password-reset tokens, and other signed values; if it is known, an attacker can compute valid HMAC signatures offline and mint arbitrary authenticated sessions or privileged tokens without ever knowing a password. LIVE_SERVER_SECRET_KEY separately authenticates the Plane live-service (real-time collaboration) tier, so its disclosure allows unauthenticated access to that service on unchanged community deployments. Because the AIO and CLI community manifests shipped literal default values, every unmodified install derived from those templates shares the same secrets, making exploitation a matter of copying the published string rather than brute force. The vendor fix (apps/api/plane/settings/common.py in pull request #9291) switches SECRET_KEY resolution to os.environ.get("SECRET_KEY") or get_random_secret_key() so an explicitly empty variable is treated as unset, and adds a critical log when the key equals the old public default or the 'change-this-key-on-deployment' placeholder; start.sh now generates or restores a persisted random key on first boot, the variables.env templates were reduced to placeholders, and deployments/cli/community/docker-compose.yml dropped its ${VAR:-default} fallbacks so a missing secret fails loudly instead of silently defaulting to a public value. The CPE cpe:2.3:a:makeplane:plane:*:*:*:*:*:*:*:* covers all Plane releases at the CPE level, with 1.4.0 as the first fixed version.
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
Publicly-published default keys give AC:L and PR:N over the network (AV:N); forging admin sessions yields full account takeover, so C/I/A all High.
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, the deployments/aio/community/ and deployments/cli/community/ manifests provide fixed, publicly known SECRET_KEY and LIVE_SERVER_SECRET_KEY defaults that remain active when operators do not override them. The top-level setup.sh randomizes secrets only for the development Docker Compose path, leaving unchanged aio and cli community deployments with shared production secrets. Knowledge of SECRET_KEY enables attackers to forge Django-signed values and compromise accounts or sessions. Knowledge of LIVE_SERVER_SECRET_KEY bypasses live-service authentication on unchanged community deployments. This issue is fixed in 1.4.0.
Articles & Coverage 3
Technical POC Analysis
CWE-798: Use of Hard-coded Credentials.
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 project management platform, shipped fixed, publicly documented secret keys in its AIO and CLI community deployment manifests, meaning any network-reachable instance built from those defaults can be impersonated by an unauthenticated attacker who simply reads the public repository. This undermines the platform's core access controls: session cookies, CSRF protections, and password-reset tokens can be forged, giving an intruder the identity and privileges of legitimate users and full read/write access to the project, roadmap, and issue data those users can reach. Leadership should treat this as a trust and data-integrity exposure rather than a routine bug, because the affected instances are production-facing and the default secrets cannot be fixed by configuration alone.
No vendor-released patch identified at time of analysis. Interim mitigations: replace the shipped default SECRET_KEY and LIVE_SERVER_SECRET_KEY with unique, high-entropy values on every affected instance; invalidate all existing sessions and password-reset/CSRF tokens after rotation; limit network exposure of AIO/CLI community deployments to trusted networks or VPN; and monitor authentication and audit logs for forged-token activity until an upgrade to Plane 1.4.0 or later is available.
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-
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
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-92597
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB