Skip to content
Heist/ feed
Back to feed
High

Plane: Stored XSS via SVG attachment served inline on the application origin (account takeover)

Type: advisorySources: OSV

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.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-105630
Confirmed fixed CVEs
Not specified
Updated in this feed
7 Nov 2026, 12:41 UTC · Revision 1

Source evidence

Plane: Stored XSS via SVG attachment served inline on the application origin (account takeover)

core-osv · Original source

Published 5 Oct 2026, 17:54 UTC

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.

osv:CVE-2026-105630
Complete source record
{
  "id": "2a2121deb53082f7cfcc31f0b2f07cdffaba61283ad82af78a20b141ff396a7b",
  "url": "https://osv.dev/vulnerability/CVE-2026-105630",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Plane: Stored XSS via SVG attachment served inline on the application origin (account takeover)",
    "summary": "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.",
    "evidence": "osv:CVE-2026-105630",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-105630",
      "aliases": [
        "CVE-2026-105630",
        "GHSA-ch8j-vr4r-qf6h"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/makeplane/plane",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "917b23a6c16d93fc00cef67900eff2755e8b13f7"
                },
                {
                  "fixed": "9dff20e04808286acb372119d88c666b802b1d50"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "1.4.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "9dff20e04808286acb372119d88c666b802b1d50"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "917b23a6c16d93fc00cef67900eff2755e8b13f7"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v1.4.0"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v1.3.1",
            "v1.3.0",
            "v1.2.3",
            "v1.2.2",
            "v1.2.1",
            "v1.2.0",
            "v1.1.0",
            "v1.0.0",
            "v0.28.0",
            "v0.27.1",
            "v0.27.0",
            "v0.26.1",
            "v0.26.0",
            "v0.25.3",
            "v0.25.2",
            "v0.25.1",
            "v0.25.0",
            "v0.24.0",
            "v0.23.1",
            "v0.23.0",
            "v0.22-dev",
            "v0.21-dev",
            "v0.20-dev",
            "v0.19-dev",
            "v0.18-dev",
            "v0.17-dev",
            "v0.16-dev",
            "v0.15.4-dev",
            "v0.15.3-hotfix",
            "v0.15.2-dev",
            "v0.15.1-dev",
            "v0.15-dev",
            "v0.14.2-dev",
            "v0.14.1-dev",
            "v0.14-dev",
            "v0.13.2-dev",
            "v0.13.1-dev",
            "v0.13-dev",
            "v0.12.2-dev",
            "v0.12.1-dev",
            "v0.12-dev",
            "v0.11-dev",
            "v0.10-dev",
            "v0.9-dev",
            "v0.8-dev",
            "v0.7.1-dev",
            "v0.7-dev",
            "v0.6-dev",
            "v0.5-dev",
            "v0.4-dev",
            "v0.3.1-dev",
            "v0.1-dev"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-105630.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:50.778745736Z",
      "provider": "osv",
      "references": [
        "https://github.com/makeplane/plane/releases/tag/v1.4.0",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/105xxx/CVE-2026-105630.json",
        "https://github.com/makeplane/plane/security/advisories/GHSA-ch8j-vr4r-qf6h",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-105630",
        "https://github.com/makeplane/plane/commit/9dff20e04808286acb372119d88c666b802b1d50",
        "https://github.com/makeplane/plane/pull/9312"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-434",
          "CWE-616",
          "CWE-79"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/105xxx/CVE-2026-105630.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-105630",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 519317,
  "published_at": "2026-10-05T17:54:01.999+00:00"
}