Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain low-privilege/Guest workspace account
-
DeliveryUpload SVG attachment with attacker Content-Type
-
ExploitShare asset-download link with admin victim
-
ExecutionVictim opens same-origin inline SVG
-
PersistEmbedded JavaScript executes in app context
-
ImpactSteal session and take over account
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires (1) the default self-hosted deployment where Plane assets are served by MinIO from the same origin as the application - a configuration that segregates assets onto a separate origin or CDN neutralizes the same-origin script execution; (2) a valid authenticated account with at least low-privilege/Guest workspace membership able to create issue or generic attachments; and (3) user interaction - a victim (e.g., a workspace administrator) must open the attacker-supplied asset-download link, which serves the SVG with Content-Disposition: inline. The attack hinges on the server retaining the attacker-controlled image/svg+xml Content-Type on upload. These factors - authenticated upload access, dependence on the default MinIO same-origin setup, and required victim interaction - meaningfully limit exploitation below a fully unauthenticated drive-by, though SVGs with onload handlers or embedded <script> make the payload trivial once conditions are met. |
| Impact | This is a genuine, well-corroborated medium-to-high priority for anyone running self-hosted Plane, though not a drop-everything emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:R/S:C) describes a network-reachable, low-complexity stored XSS that requires only low-privilege authentication (a Guest workspace member suffices) but does require a victim to open the malicious link, and the scope change (S:C) plus C:H/I:H reflects that code executing in the app origin can hijack a session up to and including an administrator - yielding the 8.7 base score. Exploitation status is 'no public exploit identified at time of analysis': the input provides no EPSS score, no CISA KEV listing, and no POC flag, so there is no evidence of active or widespread exploitation despite the high CVSS. The signals are internally consistent (no conflict between the network vector and the description), and the fix is confirmed by a vendor GHSA advisory, a merged PR with a code diff, a commit, and the v1.4.0 release. The main caveats that lower real-world urgency: exploitation depends on the default self-hosted MinIO deployment where assets share the app origin (a hardened/separate-origin or CDN asset setup breaks the same-origin execution), and it requires both a valid low-privilege account and successful social engineering of a victim to open the attachment. Net: treat as a real priority for default MinIO self-hosted installs, lower for installs that already segregate the asset origin. |
| Exploit ScenarioDerived | An attacker who holds any low-privilege account - even a Guest - on a self-hosted Plane workspace uploads a crafted image/svg+xml file containing embedded JavaScript as an issue or generic attachment, which preserves the attacker's Content-Type. They share the asset-download link with a workspace administrator; when the admin opens it, the presigned URL serves the SVG inline from the app's own origin, executing the script in the Plane security context and allowing session theft and account takeover. No public exploit code is identified at time of analysis, but the mechanism is straightforward and the fixing diff publicly documents the exact vector. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 05, 2026
Stored cross-site scripting in Plane prior to 1.4.0 lets an authenticated low-privilege workspace member - including a Guest - upload an image/svg+xml file as a generic or issue attachment that is later served with Content-Disposition: inline, so the embedded SVG JavaScript runs in the Plane application's origin under the default self-hosted MinIO deployment. The assessed vector (CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N, 8.7) shows the attacker must be authenticated (PR:L) and a victim, such as a workspace administrator, must open the asset-download link (UI:R), after which session compromise can lead to full account takeover. No public exploit identified at time of analysis, and no confirmed active exploitation (CISA KEV); vendor-released patch: 1.4.0.
RemediationAI
Upgrade to Plane 1.4.0 or later (vendor-released patch: 1.4.0), which forces Content-Disposition: attachment for script-capable MIME types (image/svg+xml, text/javascript, application/javascript, text/html, application/xhtml+xml, text/xml, application/xml) across all asset-download views; the fix is available via PR https://github.com/makeplane/plane/pull/9312, commit https://github.com/makeplane/plane/commit/9dff20e04808286acb372119d88c666b802b1d50, and the 1.4.0 release, with full details in advisory https://github.com/makeplane/plane/security/advisories/GHSA-ch8j-vr4r-qf6h. Because the patch also neutralizes assets uploaded before it was applied, there is no need to purge existing attachments, though administrators may optionally audit or delete stored image/svg+xml assets. If immediate upgrading is not possible, deploy the strongest compensating control: migrate MinIO asset serving to a separate origin or CDN hostname so attacker-supplied SVG cannot execute in the application's origin - this neutralizes the same-origin requirement but requires DNS/proxy and storage configuration changes and may break inline asset rendering. Alternatively, block or strip image/svg+xml (and other script-capable types) on upload at the reverse proxy or application layer, or rewrite their responses to Content-Disposition: attachment; both approaches may degrade legitimate SVG icon/image rendering and do not fix assets already stored. Restricting attachment creation to trusted workspace members reduces exposure but does not eliminate the flaw, since the assessed vector requires only low-privilege/Guest upload access and victim interaction.
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-79 (Improper Neutralization of Input During Web Page Generation), expressed here as stored XSS. Plane stores attachment metadata in asset.attributes, including the client-supplied MIME type, and its asset-download endpoints (apps/api/plane/api/views/asset.py, apps/api/plane/app/views/asset/v2.py, and apps/api/plane/space/views/asset.py) mint S3/MinIO presigned URLs by calling storage.generate_presigned_url(object_name=asset.asset.name, filename=asset.attributes.get("name")) without constraining disposition. Because the attacker-controlled "image/svg+xml" Content-Type is preserved on upload, the object is served as active content; combined with the default self-hosted MinIO configuration that serves asset URLs from the same origin as the Plane application, an SVG containing onload handlers or an embedded <script> executes JavaScript in the application's origin and can read the victim's session. The upstream fix (PR #9312, commit 9dff20e04808286acb372119d88c666b802b1d50) introduces a SCRIPT_CAPABLE_MIME_TYPES frozenset in plane/settings/common.py covering image/svg+xml, text/javascript, application/javascript, text/html, application/xhtml+xml, text/xml, and application/xml, and forces disposition="attachment" for those MIME types in every asset-download view while leaving inline disposition for benign types. This mitigates both new uploads and assets stored before the restriction was added.
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:R/S:C/C:H/I:H/A:N
Low-privilege Guest can upload (PR:L), victim must open the link (UI:R), payload executes in the app origin crossing the asset/app boundary (S:C) enabling session takeover (C:H/I:H), no availability impact (A:N).
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, an authenticated low-privilege workspace member, including a Guest, can upload an image/svg+xml file as a generic or issue attachment. The file retains the attacker-controlled Content-Type, and the asset-download endpoint creates a presigned URL with Content-Disposition: inline. In the default self-hosted MinIO deployment, the asset URL is served from the same origin as the Plane application, allowing embedded SVG JavaScript to execute in the application's security context. A victim, including a workspace administrator, who opens the link can have the session compromised through stored XSS, leading to account takeover. This issue is fixed in 1.4.0.
Technical POC Analysis
CWE-79 (stored XSS); the advisory also tags CWE-434.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A stored cross-site scripting flaw in the self-hosted Plane project management platform (versions prior to 1.4.0) allows any authenticated workspace member - including low-privilege Guests - to upload a malicious SVG attachment that executes in the Plane application origin when a colleague, such as a workspace administrator, opens the download link. Because the injected code runs with the platform's own session context, a successful attack can result in full account takeover of privileged users and exposure of the workspace data those accounts can reach. Organizations running self-hosted Plane with the default MinIO storage configuration should treat this as a high-priority remediation item, since the only prerequisites are a legitimate low-privilege account and a single user click.
Apply vendor patch.
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
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
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
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 (versions up to and including 1.3.1) allows any authenticated user - including a br
EUVD-2026-92543
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB