/

CVE-2026-104973

Severity:

HIGH RISK

(7.6)

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

CVE-2026-104973

Deferred

Vulnerability type

Category:

Server-Side Request Forgery

CWE:

CWE-918

Impact:

Unauthorized access to internal network resources

Severity:

HIGH RISK

(7.6)

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

Plane versions before 1.4.0 can be vulnerable to server-side request forgery in webhook delivery because the destination is resolved again when a request is sent without validating the resulting IP address. An attacker who can control or influence a webhook destination may use DNS rebinding to redirect requests to internal services that should be inaccessible.

Plane versions before 1.4.0 can be vulnerable to server-side request forgery in webhook delivery because the destination is resolved again when a request is sent without validating the resulting IP address. An attacker who can control or influence a webhook destination may use DNS rebinding to redirect requests to internal services that should be inaccessible.

Affected context

The issue occurs in Plane's webhook delivery workflow when a webhook URL is validated at creation time but resolved independently during delivery. Deployments are at greater risk when users or integrations can register webhook destinations, DNS responses can change between validation and delivery, and the delivery worker can reach sensitive internal services.

The issue occurs in Plane's webhook delivery workflow when a webhook URL is validated at creation time but resolved independently during delivery. Deployments are at greater risk when users or integrations can register webhook destinations, DNS responses can change between validation and delivery, and the delivery worker can reach sensitive internal services.

Exploit preconditions

  • Attack surface: Outbound HTTP requests made by the webhook delivery task
  • Required access: Ability to create or influence a webhook destination, subject to application authorization
  • Trigger point: Webhook delivery after the destination is resolved by the background task
  • Why exploitation is possible: The IP validated during webhook creation is not necessarily the IP used during delivery, allowing DNS rebinding to bypass the earlier SSRF check
  • Attack surface: Outbound HTTP requests made by the webhook delivery task
  • Required access: Ability to create or influence a webhook destination, subject to application authorization
  • Trigger point: Webhook delivery after the destination is resolved by the background task
  • Why exploitation is possible: The IP validated during webhook creation is not necessarily the IP used during delivery, allowing DNS rebinding to bypass the earlier SSRF check

Why this happens

The vulnerability results from applying an SSRF validation decision at one point in time while performing a separate DNS resolution at request time. Because the later resolved address is not checked against the same internal-network restrictions, an attacker-controlled hostname may change from an apparently permitted address to a private, loopback, link-local, or otherwise restricted destination. This is a CWE-918 condition caused by an incomplete validation boundary and a time-of-check/time-of-use gap.

The vulnerability results from applying an SSRF validation decision at one point in time while performing a separate DNS resolution at request time. Because the later resolved address is not checked against the same internal-network restrictions, an attacker-controlled hostname may change from an apparently permitted address to a private, loopback, link-local, or otherwise restricted destination. This is a CWE-918 condition caused by an incomplete validation boundary and a time-of-check/time-of-use gap.

Potential impact

  • Requests may reach internal administrative or cloud metadata services
  • Sensitive response data could be exposed if webhook responses are processed or returned
  • Internal service availability or configuration could be affected
  • Network segmentation controls may be weakened from the webhook worker's position
  • Credentials or tokens accessible to reachable services could be targeted
  • Requests may reach internal administrative or cloud metadata services
  • Sensitive response data could be exposed if webhook responses are processed or returned
  • Internal service availability or configuration could be affected
  • Network segmentation controls may be weakened from the webhook worker's position
  • Credentials or tokens accessible to reachable services could be targeted

General mitigation guidance

Mitigation generally focuses on enforcing destination safety at the moment of connection rather than relying only on webhook creation-time checks.

Common defensive patterns include:

  • Resolve and validate destination addresses immediately before connecting
  • Re-check every resolved address and reject private, loopback, link-local, multicast, and other restricted ranges
  • Prevent DNS rebinding across redirects, retries, and connection attempts
  • Use an outbound proxy or egress policy with an explicit allowlist of permitted destinations
  • Restrict webhook worker network access and runtime privileges
  • Avoid exposing sensitive response bodies or credentials to webhook integrations
  • Apply consistent validation to all webhook delivery paths

Mitigation generally focuses on enforcing destination safety at the moment of connection rather than relying only on webhook creation-time checks.

Common defensive patterns include:

  • Resolve and validate destination addresses immediately before connecting
  • Re-check every resolved address and reject private, loopback, link-local, multicast, and other restricted ranges
  • Prevent DNS rebinding across redirects, retries, and connection attempts
  • Use an outbound proxy or egress policy with an explicit allowlist of permitted destinations
  • Restrict webhook worker network access and runtime privileges
  • Avoid exposing sensitive response bodies or credentials to webhook integrations
  • Apply consistent validation to all webhook delivery paths

How teams detect issues like this

Detection approaches commonly include:

  • Static analysis and code review checks for URL validation performed separately from connection-time DNS resolution
  • Review signals such as direct DNS lookups followed by HTTP requests without address revalidation
  • Tests covering rebinding, redirects, IPv4 and IPv6 representations, and private address ranges
  • Network monitoring for webhook workers making connections to internal, loopback, link-local, or metadata-service addresses
  • Egress firewall and service-mesh policies that alert on or block unauthorized destinations
  • Automated security review tools that identify SSRF-prone URL-fetching patterns

Detection approaches commonly include:

  • Static analysis and code review checks for URL validation performed separately from connection-time DNS resolution
  • Review signals such as direct DNS lookups followed by HTTP requests without address revalidation
  • Tests covering rebinding, redirects, IPv4 and IPv6 representations, and private address ranges
  • Network monitoring for webhook workers making connections to internal, loopback, link-local, or metadata-service addresses
  • Egress firewall and service-mesh policies that alert on or block unauthorized destinations
  • Automated security review tools that identify SSRF-prone URL-fetching patterns

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-whh3-5g95-4qhc
github.comgithub.com/cthackers/adm-zip/security/advisories/GHSA-j5f4-cc29-5x44

Frequently asked

questions

It may be exploitable through the application's webhook functionality when an attacker can create or influence a webhook destination and the delivery worker can reach restricted network resources.

The attacker generally needs permission to register or modify a webhook, or another way to control a destination used by the delivery workflow. The exact requirement depends on Plane's authorization and integration configuration.

Validate the destination at connection time, check every resolved address against a denylist or explicit allowlist, and enforce outbound network restrictions independently of application-level checks.

Treat webhook URLs as untrusted input, test DNS rebinding and redirect behavior, centralize SSRF protections, and use least-privilege egress policies for background workers.

It may be exploitable through the application's webhook functionality when an attacker can create or influence a webhook destination and the delivery worker can reach restricted network resources.

The attacker generally needs permission to register or modify a webhook, or another way to control a destination used by the delivery workflow. The exact requirement depends on Plane's authorization and integration configuration.

Validate the destination at connection time, check every resolved address against a denylist or explicit allowlist, and enforce outbound network restrictions independently of application-level checks.

Treat webhook URLs as untrusted input, test DNS rebinding and redirect behavior, centralize SSRF protections, and use least-privilege egress policies for background workers.

Find out what's already
exploitable in your codebase.