Skip to content
Heist/ feed
Back to feed
Medium

Plane: ORM Field Injection via Unvalidated `order_by` Parameter (Including Unauthenticated Path)

Type: advisorySources: OSV

Plane is an open-source project management tool. Prior to 1.4.0, multiple issue-listing endpoints, including unauthenticated public deploy boards handled by IssueListSpaceEndpoint in apps/api/plane/space/views/issue.py, pass the user-controlled order_by parameter through order_issue_queryset in apps/api/plane/utils/order_queryset.py to Django's order_by without allowlist validation. An attacker can use double-underscore relationship traversal to reference arbitrary related model fields, revealing database schema details through errors and potentially disclosing field values through differential ordering. This issue is fixed in version 1.4.0.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-102988
Confirmed fixed CVEs
Not specified
Updated in this feed
5 Nov 2026, 23:55 UTC · Revision 1

Source evidence

Plane: ORM Field Injection via Unvalidated `order_by` Parameter (Including Unauthenticated Path)

core-osv · Original source

Published 13 Oct 2026, 15:30 UTC

Plane is an open-source project management tool. Prior to 1.4.0, multiple issue-listing endpoints, including unauthenticated public deploy boards handled by IssueListSpaceEndpoint in apps/api/plane/space/views/issue.py, pass the user-controlled order_by parameter through order_issue_queryset in apps/api/plane/utils/order_queryset.py to Django's order_by without allowlist validation. An attacker can use double-underscore relationship traversal to reference arbitrary related model fields, revealing database schema details through errors and potentially disclosing field values through differential ordering. This issue is fixed in version 1.4.0.

osv:CVE-2026-102988
Complete source record
{
  "id": "64f944e82bef0ff389500b8ffed0af5f39666701cb1e093e25327b06281d4997",
  "url": "https://osv.dev/vulnerability/CVE-2026-102988",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Plane: ORM Field Injection via Unvalidated `order_by` Parameter (Including Unauthenticated Path)",
    "summary": "Plane is an open-source project management tool. Prior to 1.4.0, multiple issue-listing endpoints, including unauthenticated public deploy boards handled by IssueListSpaceEndpoint in apps/api/plane/space/views/issue.py, pass the user-controlled order_by parameter through order_issue_queryset in apps/api/plane/utils/order_queryset.py to Django's order_by without allowlist validation. An attacker can use double-underscore relationship traversal to reference arbitrary related model fields, revealing database schema details through errors and potentially disclosing field values through differential ordering. This issue is fixed in version 1.4.0.",
    "evidence": "osv:CVE-2026-102988",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-102988",
      "aliases": [
        "CVE-2026-102988",
        "GHSA-2r95-c453-vxmr"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/makeplane/plane",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "917b23a6c16d93fc00cef67900eff2755e8b13f7"
                },
                {
                  "fixed": "cc3eb974f1142146ddfedf7126cd4dfd376d32d1"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "1.4.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "cc3eb974f1142146ddfedf7126cd4dfd376d32d1"
                      }
                    ],
                    "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-102988.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:45.254140646Z",
      "provider": "osv",
      "references": [
        "https://github.com/makeplane/plane/releases/tag/v1.4.0",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/102xxx/CVE-2026-102988.json",
        "https://github.com/makeplane/plane/security/advisories/GHSA-2r95-c453-vxmr",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-102988",
        "https://github.com/makeplane/plane/commit/cc3eb974f1142146ddfedf7126cd4dfd376d32d1",
        "https://github.com/makeplane/plane/pull/9292"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-943"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/102xxx/CVE-2026-102988.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-102988",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 513249,
  "published_at": "2026-10-13T15:30:42.543+00:00"
}