Skip to main content

Plane EUVDEUVD-2026-92540

| CVE-2026-105628 HIGH
Server-Side Request Forgery (SSRF) (CWE-918)
2026-10-05 GitHub_M
7.6
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Authenticate via OAuth with controlled profile
  2. Delivery
    Set avatar_url to attacker redirect host
  3. Exploit
    Trigger server-side avatar fetch
  4. Execution
    Redirect to internal metadata endpoint
  5. Persist
    Response stored as avatar asset
  6. Impact
    Download asset to exfiltrate internal data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential Access

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

Exploitation Conditions

The Plane instance must be configured with OAuth-based authentication and have the avatar synchronization flow active, and the attacker must control the avatar_url field returned in their OAuth provider profile data. The server-side fetch performs no internal-IP validation and follows redirects by default (pre-1.4.0), so the attacker points avatar_url at a host that redirects to an internal target. Meaningful impact further requires that Plane's server can reach a sensitive internal endpoint (e.g., a cloud metadata service at 169.254.169.254 or an internal admin API) - so cloud-hosted deployments are most exposed. Limiting factors: an attacker needs a usable OAuth login to trigger the flow, instances not using OAuth avatar sync are unaffected, and environments with no reachable internal secrets yield little of value.

Impact

This is a legitimate but conditional risk, not a drop-everything emergency. The CVSS 3.1 base score of 7.6 (AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:L/A:N) reflects a network-reachable, low-complexity SSRF (CWE-918) whose scope change and C:H capture the real danger: fetching an internal-only resource such as a cloud metadata endpoint and exposing the response as a downloadable avatar asset, which can disclose IAM credentials or other internal data. However, several signals temper this. No EPSS score, no CISA KEV listing, and no public exploit were provided, so exploitation status is 'no public exploit identified at time of analysis' - the only public artifacts are the vendor patch (PR #9163, commit 04622ce, release v1.4.0) and the GHSA advisory, which confirm the flaw but are not weaponized exploit code. The NVD vector states PR:H (authenticated/high-privilege), yet the described mechanism only requires an attacker to control their own OAuth provider profile's avatar_url, which in practice is closer to PR:L (any user able to complete an OAuth login) - I flag this discrepancy for verification. Realistic impact is also gated on deployment: the payoff (metadata/credential theft) materializes mainly on cloud-hosted Plane instances with reachable internal services and OAuth avatar sync in use. Net: a real priority for self-hosted Plane operators on cloud infrastructure, but lower urgency where OAuth is unused or no sensitive internal endpoints are reachable.

Exploit ScenarioDerived

An attacker logs into a Plane instance via an OAuth provider whose profile they control, setting their avatar_url to a server they operate that 302-redirects to http://169.254.169.254/latest/meta-data/ (or another internal endpoint). Plane's avatar sync follows the redirect server-side with no internal-IP validation, uploads the fetched metadata/credential response as the user's avatar, and exposes it at /api/assets/v2/static/{asset_id}/, which the attacker then downloads to exfiltrate internal content. No public exploit code was identified, but the vendor patch and advisory precisely document the flow.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.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 05, 2026

Server-side request forgery in Plane (makeplane/plane) before 1.4.0 lets an authenticated user abuse the OAuth avatar synchronization flow to make the Plane server fetch internal-only resources and then retrieve the fetched bytes through the public /api/assets/v2/static/{asset_id}/ asset endpoint. The avatar_url value taken from the attacker's OAuth provider profile is fetched server-side without internal-IP validation and with redirects followed by default, so a public URL can be used to bounce the request to a cloud metadata service (169.254.169.254) or an internal admin API reachable from the Plane host. Vendor-released patch: 1.4.0 (advisory GHSA-cv9p-325g-wmv5); no public exploit identified at time of analysis. The exploitation conditions are real but conditional - OAuth-based authentication with avatar sync must be enabled and the server must be able to reach something sensitive internally - so cloud-hosted deployments are the most exposed, and this is a legitimate but conditional risk rather than a drop-everything emergency.

RemediationAI

Upgrade Plane to 1.4.0, the vendor-released patch version (release tag https://github.com/makeplane/plane/releases/tag/v1.4.0), which routes avatar fetches and webhook deliveries through a pinned, redirect-aware URL validator (see PR https://github.com/makeplane/plane/pull/9163, commit 04622ce1188c4680951f0001e35efb342fe51615, and advisory https://github.com/makeplane/plane/security/advisories/GHSA-cv9p-325g-wmv5). If immediate upgrade is not possible, the highest-value compensating control is egress restriction on the Plane API and background-worker containers: deny outbound traffic to RFC1918 ranges, loopback, and link-local 169.254.0.0/16, and allow only approved public destinations. The trade-off is operational - legitimate avatar/image hosts and any internal service Plane is intentionally integrated with must be explicitly allow-listed, and breakage shows up as failed avatar syncs or webhook deliveries rather than obvious errors. On AWS, enforcing IMDSv2 (HttpTokens=required) and lowering the hop limit blocks the most common metadata target even if the SSRF path is reached. Disabling OAuth avatar synchronization, or disabling OAuth login entirely where feasible, removes the trigger path but degrades user experience and does not close the sibling webhook SSRF vector. Because the upstream root cause also involved DNS rebinding and redirect-following, name-based blocklists or a one-time pre-fetch URL check are insufficient - any mitigation that validates a hostname without pinning the connection to the validated IP can be bypassed.

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

The root cause is CWE-918 (Server-Side Request Forgery) in Plane's OAuth login adapter (apps/api/plane/authentication/adapter/base.py, download_and_upload_avatar). Prior to 1.4.0 the code called requests.get(avatar_url, ...) directly on the avatar_url supplied by the OAuth provider's profile data, with no validation that the resolved destination was a public address, and with requests' default redirect-following behavior enabled. Because the fetched response is then stored as the user's avatar and served back through /api/assets/v2/static/{asset_id}/, the SSRF is not blind: the attacker can read the internal response body, turning the bug into an exfiltration primitive rather than a simple probe. Two sub-conditions make it work: (1) the target host must be reachable from the Plane API/worker container, and (2) the returned Content-Type must map to one of the accepted image extensions (jpg/png/gif/webp) - the patch still enforces that mapping, and a plain JSON metadata response may need a permissive target or a wrapper to satisfy it. The upstream fix introduces plane.utils.url_security.pinned_fetch_following_redirects, which resolves the hostname, validates the IP, pins the connection to that validated IP (closing the DNS-rebinding TOCTOU where the name is re-resolved between validation and use), re-validates every redirect hop up to a maximum of 5, and uses stream=True so the size cap actually bounds memory; the same change set also hardens webhook delivery (pinned_fetch, allow_redirects=False) in the related webhook SSRF cluster (GHSA-mq87-52pf-hm3h) and fixes a webhook context bug in apps/api/plane/app/views/webhook/base.py. The CPE cpe:2.3:a:makeplane:plane:*:*:*:*:*:*:*:* with a wildcard version confirms all releases prior to the fixed tag are in scope.

Know when Plane gets its next vulnerability

  • 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_M) PRIMARY 7.6 HIGH
AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:L/A:N
vuln.today AI 8.5 HIGH

Exploitation needs only an attacker-controlled OAuth login (PR:L, not PR:H); SSRF pivots to internal systems (S:C, C:H) and stores a file as avatar (I:L), with no availability impact.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

2
Patch available
Oct 05, 2026 - 19:02 EUVD
CVE Published
Oct 05, 2026 - 17:51 cve.org
HIGH 7.6

DescriptionCVE.org

Plane is an open-source project management tool. Prior to 1.4.0, Plane's OAuth avatar synchronization flow fetches avatar_url from provider user data through a server-side HTTP request without internal IP validation and follows redirects by default. An attacker can provide an avatar URL that redirects to an internal-only resource, such as a metadata endpoint, and Plane uploads the fetched response as a user avatar file. The object is then exposed through /api/assets/v2/static/{asset_id}/, allowing exfiltration of internally fetched content. This issue is fixed in 1.4.0.

Technical POC Analysis

CWE-918 (SSRF).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

A high-severity server-side request forgery flaw in the Plane project-management platform (makeplane/plane), affecting all versions before 1.4.0, lets the OAuth avatar-sync feature be abused as a proxy to reach systems that are not otherwise internet-facing, including cloud instance metadata services and internal administrative APIs. Because the fetched content can then be retrieved through a public asset endpoint, cloud-hosted Plane deployments risk exposing cloud credentials and providing a foothold for broader intrusion into the organization's environment. No public exploit code has been identified at time of analysis, and real-world exposure depends on whether OAuth avatar synchronization is enabled and whether the Plane host can reach sensitive internal services.

Business Impact: High
Compensating Controls

Apply vendor patch (Plane 1.4.0). Until the upgrade is complete: disable OAuth avatar synchronization, block outbound traffic from the Plane host to link-local (169.254.169.254), RFC1918, and internal admin addresses, enforce cloud IMDSv2, and restrict or monitor access to the public /api/assets/v2/static/{asset_id}/ asset endpoint.

Threat Intelligence Overview

EPSS Score
0.3%
Top 80% exploitable
Prevalence
Low
niche self-hosted open-source project management tool, modest production footprint
Data Quality
3 sources
Confidence: Low
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

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 HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

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

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

More in Plane

View all
CVE-2023-2268 HIGH POC
7.5 Jul 15

Plane version 0.7.1 allows an unauthenticated attacker to view all stored server files of all users. Rated high severity

CVE-2026-105636 CRITICAL
9.9 Oct 05

Authenticated users who can create a workspace in Plane can force the application's background worker to fetch internal-

CVE-2026-105641 CRITICAL
9.8 Oct 05

Unauthenticated remote attackers can forge Django-signed session cookies, CSRF tokens, and password-reset tokens, and by

CVE-2026-105639 CRITICAL
9.8 Oct 05

Workspace invitation hijacking in Plane prior to 1.4.0 lets an unauthenticated attacker take over a pending workspace in

CVE-2024-47830 MEDIUM POC
5.8 Oct 11

Plane is an open-source project management tool. Rated medium severity (CVSS 5.8), this vulnerability is remotely exploi

CVE-2026-105637 CRITICAL
9.6 Oct 05

Improper authorization in Plane before 1.4.0 lets an authenticated workspace Guest hijack file assets from other project

CVE-2026-105640 CRITICAL
9.1 Oct 05

Account takeover in Plane (makeplane) versions prior to 1.4.0 allows remote unauthenticated attackers to log in as exist

CVE-2026-105638 CRITICAL
9.1 Oct 05

Brute-forceable magic-code email login in Plane versions prior to 1.4.0 allows unauthenticated remote attackers to guess

CVE-2026-104976 HIGH
8.7 Oct 05

Server-side request forgery in Plane, the open-source project management tool, allows a low-privilege user of a connecte

CVE-2026-104966 HIGH
8.7 Oct 05

Authenticated cross-workspace access control bypass in Plane (makeplane/plane) before version 1.4.0 lets any user with a

CVE-2026-105632 HIGH
8.7 Oct 05

Plane prior to 1.4.0 allows an authenticated workspace member to bypass project-level authorization and join any project

CVE-2026-105630 HIGH
8.7 Oct 05

Stored cross-site scripting in Plane prior to 1.4.0 lets an authenticated low-privilege workspace member - including a G

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