Skip to content
Heist/ feed
Back to feed
High

Plane: Broken Access Control - joinProject GraphQL mutation allows self-join into private (secret) projects

Type: advisorySources: OSV

Plane is an open-source project management tool. Prior to 1.4.0, the GraphQL joinProject mutation lets any workspace member add themselves to any project in that workspace including network=0 (secret/private) projects they were never invited to and grants them a full Member role (read + write). The resolver checks only workspace-level membership/role and never checks the target project's visibility (network). This collapses project-level tenant isolation within a workspace: a low-privilege member can read and modify confidential data in every private project. This issue is fixed in 1.4.0.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-105632
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 07:21 UTC · Revision 1

Source evidence

Plane: Broken Access Control - joinProject GraphQL mutation allows self-join into private (secret) projects

core-osv · Original source

Published 5 Oct 2026, 17:57 UTC

Plane is an open-source project management tool. Prior to 1.4.0, the GraphQL joinProject mutation lets any workspace member add themselves to any project in that workspace including network=0 (secret/private) projects they were never invited to and grants them a full Member role (read + write). The resolver checks only workspace-level membership/role and never checks the target project's visibility (network). This collapses project-level tenant isolation within a workspace: a low-privilege member can read and modify confidential data in every private project. This issue is fixed in 1.4.0.

osv:CVE-2026-105632
Complete source record
{
  "id": "cdf76d02baee4f714fdea0b9aeb05b744798edb0678bdc08cc43a03bf171cf90",
  "url": "https://osv.dev/vulnerability/CVE-2026-105632",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Plane: Broken Access Control - joinProject GraphQL mutation allows self-join into private (secret) projects",
    "summary": "Plane is an open-source project management tool. Prior to 1.4.0, the GraphQL joinProject mutation lets any workspace member add themselves to any project in that workspace including network=0 (secret/private) projects they were never invited to and grants them a full Member role (read + write). The resolver checks only workspace-level membership/role and never checks the target project's visibility (network). This collapses project-level tenant isolation within a workspace: a low-privilege member can read and modify confidential data in every private project. This issue is fixed in 1.4.0.",
    "evidence": "osv:CVE-2026-105632",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-105632",
      "aliases": [
        "CVE-2026-105632",
        "GHSA-45hc-q4mw-jhxm"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:L/SC:N/SI:N/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/makeplane/plane",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "917b23a6c16d93fc00cef67900eff2755e8b13f7"
                },
                {
                  "fixed": "e1ef42023ab66b5e722a8750e1bc5ba0d413a3ee"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "1.4.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "e1ef42023ab66b5e722a8750e1bc5ba0d413a3ee"
                      }
                    ],
                    "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-105632.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:26.946538635Z",
      "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-105632.json",
        "https://github.com/makeplane/plane/security/advisories/GHSA-45hc-q4mw-jhxm",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-105632",
        "https://github.com/makeplane/plane/commit/e1ef42023ab66b5e722a8750e1bc5ba0d413a3ee",
        "https://github.com/makeplane/plane/pull/9333"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-284"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/105xxx/CVE-2026-105632.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-105632",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 493339,
  "published_at": "2026-10-05T17:57:22.672+00:00"
}