Skip to main content

Coder EUVDEUVD-2026-42136

| CVE-2026-55430 MEDIUM
Insufficient Verification of Data Authenticity (CWE-345)
2026-07-06 https://github.com/coder/coder GHSA-5g4w-3vw9-478w
6.8
CVSS 3.1 · NVD
Share

Severity by source

NVD PRIMARY
6.8 MEDIUM
AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:N/A:N
vuln.today AI
5.8 MEDIUM

Requires network access but stacked conditions (subdomain routing, no proxy stripping, victim interaction) justify AC:H; attacker needs a shared app account (PR:L); scope changes as routing crosses user-app trust boundaries.

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

Primary rating from NVD.

CVSS VectorNVD

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

Lifecycle Timeline

3
CVSS changed
Jul 08, 2026 - 19:52 NVD
5.8 (MEDIUM) 6.8 (MEDIUM)
CVSS changed
Jul 08, 2026 - 19:52 NVD
5.8 (MEDIUM) 6.8 (MEDIUM)
Analysis Generated
Jul 06, 2026 - 22:21 vuln.today

DescriptionNVD

Summary

The workspace app proxy resolves the target app from httpapi.RequestHost() which prefers the X-Forwarded-Host header over the real Host header. No middleware strips X-Forwarded-Host before routing and the header is not browser-forbidden so client-side JavaScript can set it on fetch() calls.

> Note: Practical exploitation requires subdomain app routing (wildcard hostname) enabled, a victim who visits the attacker's shared app and a deployment whose upstream proxy does not strip X-Forwarded-Host.

Impact

App session cookies are scoped to the wildcard parent domain so the browser attaches them to any app subdomain. An attacker who controls a shared workspace app can serve JavaScript that sends same-site requests with a forged X-Forwarded-Host pointing at a victim's private app. The server routes by the attacker-controlled header but authorizes with the victim's cookie which lets the attacker read the victim's private app responses. Subdomain app routing must be enabled and no upstream proxy may strip X-Forwarded-Host.

Patches

The fix trusts X-Forwarded-Host only from configured trusted proxies and otherwise resolves the routing host from the verified request host.

The fix was backported to all supported release lines:

Release linePatched version
2.34v2.34.2
2.33v2.33.8
2.32v2.32.7
2.29 (ESR)v2.29.17

Workarounds

Place an upstream reverse proxy that strips or overwrites X-Forwarded-Host on untrusted requests.

Resources

  • Fix: #26204

Credits

Coder would like to thank Anthropic's Security Team (ANT-2026-22435) for independently disclosing this issue!

AnalysisAI

Cross-boundary information disclosure in Coder's workspace app proxy allows an attacker who controls a shared workspace app to read a victim user's private app responses by forging the X-Forwarded-Host header. The proxy trusts this client-supplied header for routing decisions while simultaneously authorizing the request with the victim's own session cookie - which the browser attaches to any subdomain because cookies are scoped to the wildcard parent domain - enabling the attacker to steer responses from private apps back through their own JavaScript. Exploitation requires subdomain app routing (wildcard hostname) to be enabled and the victim to visit the attacker's shared app; no public exploit code or CISA KEV listing has been identified at time of analysis.

Technical ContextAI

Coder is a self-hosted remote development environment (Go package pkg:go/github.com_coder_coder_v2) that proxies browser access to workspace applications via a shared subdomain namespace. The vulnerable function httpapi.RequestHost() implements an X-Forwarded-Host preference over the real Host header - a common pattern for reverse-proxy-aware applications - but no middleware strips this header from untrusted client connections before it reaches the routing layer. Because Coder issues app session cookies scoped to the wildcard parent domain (e.g., *.coder.example.com), any subdomain - including attacker-controlled shared apps - receives those cookies on outbound requests. CWE-345 (Insufficient Verification of Data Authenticity) captures the root cause: the proxy fails to verify that the routing hint originates from a trusted upstream rather than from the end client. The X-Forwarded-Host header is not browser-forbidden (unlike some headers), meaning standard Fetch API calls from JavaScript can set it freely, making this exploitable purely from client-side script without any special browser exploitation.

RemediationAI

The primary fix is to upgrade to a patched release: v2.34.2, v2.33.8, v2.32.7, or v2.29.17 (ESR), all available at https://github.com/coder/coder/releases. The fix changes the routing logic to trust X-Forwarded-Host only when it originates from configured trusted proxies, falling back to the verified request Host header for all other connections. For deployments that cannot immediately upgrade, the documented workaround is to place an upstream reverse proxy (nginx, Caddy, Traefik, etc.) that explicitly strips or overwrites the X-Forwarded-Host header on all requests from untrusted clients before they reach Coder; note this workaround requires the reverse proxy to be in the request path for all app-subdomain traffic and does not protect deployments where Coder is directly internet-facing. The upstream fix PR is available at https://github.com/coder/coder/pull/26204.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise Server 16.1 Affected
SUSE Linux Enterprise Server for SAP applications 16.1 Affected
SUSE Linux Enterprise Module for Package Hub 15 SP5 Affected
SUSE Linux Enterprise Module for Package Hub 15 SP6 Affected
openSUSE Leap 15.5 Affected

Share

EUVD-2026-42136 vulnerability details – vuln.today

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