Plane: ORM Field Injection via Unvalidated `order_by` Parameter (Including Unauthenticated Path)
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 sourcePublished 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"
}