Skip to main content

Plane EUVDEUVD-2026-101616

| CVE-2026-102985 MEDIUM
Missing Authorization (CWE-862)
2026-10-14 security-advisories@github.com
6.5
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as project guest or member
  2. Exploit
    Send PATCH with is_active:false, omit role
  3. Execution
    Bypass misplaced object-level authz check
  4. Impact
    Deactivate project admin and take over project

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires an authenticated account with at least guest or member role in the target Plane project (PR:L); it is not remote-unauthenticated. Concretely, the attacker PATCHes ProjectMemberViewSet.partial_update at the project members endpoint with a body containing is_active (e.g. {"is_active": false}) while deliberately omitting the 'role' field, because all authorization guards lived inside the 'if "role" in request.data' branch and is_active was writable via ProjectMemberSerializer(fields='__all__'); this deactivates any member including admins. Separately, ProjectMemberPreferenceEndpoint.patch trusts the member_id path value, so any project member can overwrite another member's preferences. No non-default configuration or feature flag is needed - this affects default deployments of Plane 1.3.1 and earlier. Limiting factors: the attacker must already possess valid project membership, and the flaw is fixed in 1.4.0.

Impact

This is a genuine but moderate-priority issue, best characterized as a broken object-level authorization (BOLA/IDOR) flaw rather than the 'Authentication Bypass' the input tag suggests - the attacker must already be an authenticated low-privilege project member. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N = 6.5) is internally consistent with the description: network-reachable, low-complexity, requires low privileges (an existing guest/member account), no user interaction, and high integrity impact (deactivating a project administrator enables effective project takeover; cross-member preference tampering). No EPSS score, KEV listing, or public POC is present in the supplied data, so there is no evidence of active or widespread exploitation - the realistic signal is a low-privilege insider or a compromised member account. The one notable tension is that the vendor's GHSA regression tests describe guest-driven admin deactivation and 'take over the project,' which is an integrity/availability-of-access consequence, yet the base vector sets A:N; the admin-takeover framing could arguably justify some availability impact, but NVD's I:H-only scoring is defensible since the primary effect is unauthorized state mutation. Treat as an authenticated privilege-escalation/tampering bug: prioritize for any Plane deployment with untrusted or numerous project members, lower priority for small trusted single-tenant installs.

Exploit ScenarioDerived

A user holding only a guest or member role in a Plane project sends a crafted PATCH to the project member endpoint containing {"is_active": false} while omitting the 'role' field, which skips the authorization guard and deactivates a project administrator, letting the attacker seize control of the project. The same account can also PATCH the preferences endpoint with another member's member_id to overwrite that member's preferences. No public exploit is identified, but the vendor's fix commit and its regression tests (GHSA-25gg-cxm8-g7h9) fully disclose the request shape, making reproduction straightforward.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 14, 2026

Missing object-level authorization in Plane 1.3.1 and earlier lets any authenticated project guest or member deactivate other project members - including administrators - by sending a PATCH that includes is_active while omitting the role field, and separately allows cross-member tampering with ProjectMemberPreference records via a trusted member_id path parameter. Exploitation requires a valid low-privilege account already enrolled in the target project (CVSS PR:L, network reachable, no user interaction), and results in high integrity impact with no confidentiality or availability loss scored; no public exploit code has been identified at time of analysis and the issue is not in CISA KEV. The flaw is fixed in Plane 1.4.0.

RemediationAI

Vendor-released patch: upgrade Plane to 1.4.0, which is the version named in the release notes and in the vendor advisory for this issue. The fix is captured in commit dc9d80b2d2a499b967f0b541e083b283f463719f and pull request makeplane/plane#9367, and the patched build is published at https://github.com/makeplane/plane/releases/tag/v1.4.0; the authoritative advisory is https://github.com/makeplane/plane/security/advisories/GHSA-25gg-cxm8-g7h9. If immediate upgrade is not feasible, compensating controls should target the two vulnerable paths: because exploitation requires an existing project membership, immediately audit and prune low-trust guest/member accounts from sensitive projects and restrict who can be added as a member (this reduces the attacker pool but does not eliminate the risk from legitimate members). Additionally, block or alert on PATCH requests to /api/workspaces/{slug}/projects/{project_id}/members/{pk}/ whose JSON body contains is_active but not role, and monitor ProjectMemberPreference update requests for member_id values that do not match the authenticated user - both can be enforced at a reverse proxy or WAF, with the trade-off that legitimate admin-driven member deactivation requests may also be filtered, so the rule should be scoped to non-admin roles or run in log-only mode first. Since no patched-version downgrade path exists, backporting the guard from the referenced commit into the deployed 1.3.x branch is the most reliable stopgap; note that no vendor-published workaround is documented, so these controls are operator-side mitigations rather than supported fixes.

Affected VersionsENISA

plane < 1.4.0

Affected Packages

euvd plane fix: 1.4.0

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

Plane is an open-source Django REST Framework project management application. The root cause is CWE-862 (Missing Authorization): in ProjectMemberViewSet.partial_update, every permission guard lived inside the if "role" in request.data: branch, while is_active remained writable through the ProjectMemberSerializer(fields="__all__"). A request body that omits role therefore skips all role-escalation checks and still flips is_active, enabling a guest (project role 5) or member (role 15) to deactivate a peer or even a project admin. The companion endpoint ProjectMemberPreferenceEndpoint.patch likewise trusted the member_id path value without verifying that the caller owns that membership, permitting preference overwrite across members. The upstream fix mirrors the existing role block and destroy() logic: is_active changes now require project-admin or workspace-admin privileges and cannot be applied to a member whose role is equal to or higher than the requester's. Note that while the input tag reads 'Authentication Bypass,' the vulnerability is more accurately a broken object-level authorization (BOLA/IDOR) flaw - the attacker must already be authenticated and hold project membership; no authentication control is actually bypassed. The patch adds regression tests under apps/api/plane/tests/contract/app/test_project_member_is_active_authz.py covering guest-deactivates-admin, member-deactivates-admin, and guest-deactivates-peer scenarios.

Know when the next one hits your stack

  • 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

Vendor (github) PRIMARY 6.5 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
vuln.today AI 6.5 MEDIUM

Authenticated low-privilege member (PR:L) sends a simple network API request (AV:N/AC:L) to mutate another member's state; high integrity impact, no confidentiality or availability loss by base scoring.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
High
Availability
None

Lifecycle Timeline

1
Patch available
Oct 14, 2026 - 21:18 EUVD

DescriptionCVE.org

Plane is an open-source project management tool. In 1.3.1 and earlier, ProjectMemberViewSet.partial_update places its authorization checks inside the role update branch, so a guest or member can omit role and change another ProjectMember record's is_active field, including deactivating a project administrator. ProjectMemberPreferenceEndpoint.patch separately trusts the member_id path value and lets a project member overwrite another member's preferences. These missing object-level authorization checks permit membership disruption and cross-member preference tampering. The vulnerability is fixed in 1.4.0.

Threat Intelligence Overview

EPSS Score
0.3%
Top 81% exploitable
Prevalence
Medium
popular self-hosted open-source PM tool, moderate real-world footprint
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy