/

CVE-2026-104977

Severity:

HIGH RISK

(7.7)

Server-Side Request Forgery (CWE-918) in Plane Unfurling

CVE-2026-104977

Deferred

Vulnerability type

Category:

Server-Side Request Forgery

CWE:

CWE-918

Impact:

Internal Network Access and Information Disclosure

Severity:

HIGH RISK

(7.7)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

An incomplete SSRF fix in Plane's work-item link unfurling allows an authenticated project member to make the server request attacker-selected internal URLs. Response content may be exposed through the generated link title or favicon, potentially revealing cloud metadata and other internal information.

An incomplete SSRF fix in Plane's work-item link unfurling allows an authenticated project member to make the server request attacker-selected internal URLs. Response content may be exposed through the generated link title or favicon, potentially revealing cloud metadata and other internal information.

Affected context

The vulnerability occurs in Plane deployments that use work-item link unfurling with an incomplete SSRF defense. It becomes risky when an authenticated project member can submit links that cause the application server to make outbound requests and return portions of the response as preview metadata.

The vulnerability occurs in Plane deployments that use work-item link unfurling with an incomplete SSRF defense. It becomes risky when an authenticated project member can submit links that cause the application server to make outbound requests and return portions of the response as preview metadata.

Exploit preconditions

  • Attack surface: Work-item link unfurling or preview generation
  • Required access: An authenticated project member account
  • Trigger point: Submission or processing of an attacker-controlled link
  • Network condition: The Plane server must be able to reach the selected internal or external target
  • Why exploitation is possible: Server-side requests are insufficiently restricted, and response content can be reflected in link titles or favicon data
  • Attack surface: Work-item link unfurling or preview generation
  • Required access: An authenticated project member account
  • Trigger point: Submission or processing of an attacker-controlled link
  • Network condition: The Plane server must be able to reach the selected internal or external target
  • Why exploitation is possible: Server-side requests are insufficiently restricted, and response content can be reflected in link titles or favicon data

Why this happens

The underlying flaw is insufficient validation and destination enforcement for server-side URL fetching. The application accepts attacker-influenced URLs for link metadata retrieval without reliably preventing requests to loopback addresses, private network ranges, link-local services, or cloud metadata endpoints. This behavior maps to CWE-918: Server-Side Request Forgery, where a server is induced to make requests on behalf of an attacker.

The underlying flaw is insufficient validation and destination enforcement for server-side URL fetching. The application accepts attacker-influenced URLs for link metadata retrieval without reliably preventing requests to loopback addresses, private network ranges, link-local services, or cloud metadata endpoints. This behavior maps to CWE-918: Server-Side Request Forgery, where a server is induced to make requests on behalf of an attacker.

Potential impact

  • An attacker may access internal HTTP services reachable from the Plane server
  • Cloud instance metadata or temporary credentials could be disclosed
  • Internal service responses could be exposed through link preview fields
  • Network topology and service details could be revealed
  • Compromised credentials could enable further unauthorized access
  • An attacker may access internal HTTP services reachable from the Plane server
  • Cloud instance metadata or temporary credentials could be disclosed
  • Internal service responses could be exposed through link preview fields
  • Network topology and service details could be revealed
  • Compromised credentials could enable further unauthorized access

General mitigation guidance

Mitigation generally focuses on enforcing a strict outbound request policy for link unfurling.

Common defensive patterns include:

  • Allowing only approved URL schemes, ports, domains, and destination classes
  • Blocking loopback, private, link-local, multicast, and cloud metadata address ranges
  • Resolving hostnames and validating every resulting IP address before connecting
  • Rechecking destinations across redirects and disabling unnecessary redirects
  • Limiting response size, content types, timeouts, and outbound network privileges
  • Returning only minimal, sanitized preview metadata rather than arbitrary response content
  • Isolating unfurling workers from sensitive internal networks and metadata services
  • Applying least-privilege identity permissions and network egress controls

Mitigation generally focuses on enforcing a strict outbound request policy for link unfurling.

Common defensive patterns include:

  • Allowing only approved URL schemes, ports, domains, and destination classes
  • Blocking loopback, private, link-local, multicast, and cloud metadata address ranges
  • Resolving hostnames and validating every resulting IP address before connecting
  • Rechecking destinations across redirects and disabling unnecessary redirects
  • Limiting response size, content types, timeouts, and outbound network privileges
  • Returning only minimal, sanitized preview metadata rather than arbitrary response content
  • Isolating unfurling workers from sensitive internal networks and metadata services
  • Applying least-privilege identity permissions and network egress controls

How teams detect issues like this

Organizations can look for SSRF risks through:

  • Static analysis of URL-fetching code and HTTP client usage
  • Code review signals such as user-controlled URLs passed to server-side request libraries
  • Tests covering private, loopback, link-local, redirecting, and DNS-rebinding destinations
  • Network monitoring for application requests to internal ranges or cloud metadata endpoints
  • Egress policies that alert on unexpected destinations and protocols
  • Automated security review tools that identify missing URL and IP-range validation

Organizations can look for SSRF risks through:

  • Static analysis of URL-fetching code and HTTP client usage
  • Code review signals such as user-controlled URLs passed to server-side request libraries
  • Tests covering private, loopback, link-local, redirecting, and DNS-rebinding destinations
  • Network monitoring for application requests to internal ranges or cloud metadata endpoints
  • Egress policies that alert on unexpected destinations and protocols
  • Automated security review tools that identify missing URL and IP-range validation

Sources

SourceLink
github.comgithub.com/makeplane/plane/commit/04622ce1188c4680951f0001e35efb342fe51615
github.comgithub.com/makeplane/plane/pull/9163
github.comgithub.com/makeplane/plane/releases/tag/v1.4.0
github.comgithub.com/makeplane/plane/security/advisories/GHSA-hhj8-7hv6-m74r

Frequently asked

questions

Yes. An attacker generally needs only authenticated project-member access and the ability to submit a link processed by the server-side unfurling feature.

The described attack requires an authenticated project member account. The attacker does not necessarily need direct network access to the internal target because the Plane server performs the request.

Apply strict destination allowlisting, block private and metadata address ranges, validate resolved IPs and redirects, and minimize the response data returned to users.

Treat all user-supplied URLs as untrusted, enforce outbound network policies, isolate fetcher services, apply least privilege, and continuously test SSRF defenses against internal and cloud-specific targets.

Yes. An attacker generally needs only authenticated project-member access and the ability to submit a link processed by the server-side unfurling feature.

The described attack requires an authenticated project member account. The attacker does not necessarily need direct network access to the internal target because the Plane server performs the request.

Apply strict destination allowlisting, block private and metadata address ranges, validate resolved IPs and redirects, and minimize the response data returned to users.

Treat all user-supplied URLs as untrusted, enforce outbound network policies, isolate fetcher services, apply least privilege, and continuously test SSRF defenses against internal and cloud-specific targets.

Find out what's already
exploitable in your codebase.