V2: Coder's subdomain workspace app routing trusts unauthenticated X-Forwarded-Host header, enabling cross-app data access (CVE-2026-55430)
### 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 line | Patched version | |---|---| | 2.34 | [v2.34.2](https://github.com/coder/coder/releases/tag/v2.34.2) | | 2.33 | [v2.33.8](https://github.com/coder/coder/releases/tag/v2.33.8) | | 2.32 | [v2.32.7](https://github.com/coder/coder/releases/tag/v2.32.7) | | 2.29 (ESR) | [v2.29.17](https://github.com/coder/coder/releases/tag/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!
AI Analysis
Technical Summary
The workspace app proxy in github.com/coder/coder/v2 resolves the target app from httpapi.RequestHost(), which prioritizes the X-Forwarded-Host header over the actual Host header. Because no middleware strips or validates this header and it is not restricted by browsers, client-side JavaScript can set it in fetch() calls. When subdomain app routing (wildcard hostname) is enabled and the upstream proxy does not remove X-Forwarded-Host, an attacker controlling a shared workspace app can send requests with a forged X-Forwarded-Host pointing to a victim's private app. The server routes based on this attacker-controlled header but authorizes using the victim's session cookie scoped to the wildcard domain, allowing the attacker to read private app responses. The vulnerability is fixed by trusting X-Forwarded-Host only from configured trusted proxies and otherwise using the verified request host. The fix is backported to all supported release lines including 2.34.2, 2.33.8, 2.32.7, and 2.29.17.
Potential Impact
An attacker who controls a shared workspace app can exploit this vulnerability to read private app data of other users by forging the X-Forwarded-Host header. This leads to unauthorized disclosure of sensitive information scoped to subdomain app routing environments. The attack requires specific deployment conditions: subdomain app routing enabled and no upstream proxy stripping the X-Forwarded-Host header. The vulnerability does not affect availability or integrity but results in a confidentiality breach.
Mitigation Recommendations
A fix is available and has been backported to all supported release lines: 2.34.2, 2.33.8, 2.32.7, and 2.29.17. Users should upgrade to these versions or later. As a workaround, deploy an upstream reverse proxy that strips or overwrites the X-Forwarded-Host header on untrusted requests to prevent exploitation. The fix ensures that X-Forwarded-Host is trusted only from configured trusted proxies and otherwise uses the verified request host for routing.
V2: Coder's subdomain workspace app routing trusts unauthenticated X-Forwarded-Host header, enabling cross-app data access (CVE-2026-55430)
Description
### 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 line | Patched version | |---|---| | 2.34 | [v2.34.2](https://github.com/coder/coder/releases/tag/v2.34.2) | | 2.33 | [v2.33.8](https://github.com/coder/coder/releases/tag/v2.33.8) | | 2.32 | [v2.32.7](https://github.com/coder/coder/releases/tag/v2.32.7) | | 2.29 (ESR) | [v2.29.17](https://github.com/coder/coder/releases/tag/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!
CVSS v3.1
Score 5.8medium
Affected software
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The workspace app proxy in github.com/coder/coder/v2 resolves the target app from httpapi.RequestHost(), which prioritizes the X-Forwarded-Host header over the actual Host header. Because no middleware strips or validates this header and it is not restricted by browsers, client-side JavaScript can set it in fetch() calls. When subdomain app routing (wildcard hostname) is enabled and the upstream proxy does not remove X-Forwarded-Host, an attacker controlling a shared workspace app can send requests with a forged X-Forwarded-Host pointing to a victim's private app. The server routes based on this attacker-controlled header but authorizes using the victim's session cookie scoped to the wildcard domain, allowing the attacker to read private app responses. The vulnerability is fixed by trusting X-Forwarded-Host only from configured trusted proxies and otherwise using the verified request host. The fix is backported to all supported release lines including 2.34.2, 2.33.8, 2.32.7, and 2.29.17.
Potential Impact
An attacker who controls a shared workspace app can exploit this vulnerability to read private app data of other users by forging the X-Forwarded-Host header. This leads to unauthorized disclosure of sensitive information scoped to subdomain app routing environments. The attack requires specific deployment conditions: subdomain app routing enabled and no upstream proxy stripping the X-Forwarded-Host header. The vulnerability does not affect availability or integrity but results in a confidentiality breach.
Mitigation Recommendations
A fix is available and has been backported to all supported release lines: 2.34.2, 2.33.8, 2.32.7, and 2.29.17. Users should upgrade to these versions or later. As a workaround, deploy an upstream reverse proxy that strips or overwrites the X-Forwarded-Host header on untrusted requests to prevent exploitation. The fix ensures that X-Forwarded-Host is trusted only from configured trusted proxies and otherwise uses the verified request host for routing.
Technical Details
- Gcve Source
- db.gcve.eu
- Osv Id
- GHSA-5g4w-3vw9-478w
- Osv Schema Version
- 1.4.0
- Aliases
- ["CVE-2026-55430"]
- Ecosystems
- ["Go"]
- Database Specific Severity
- MODERATE
- Cvss Version
- 3.1
Threat ID: 6a4c340327e9c797195f5f40
Added to database: 07/06/2026, 23:02:27 UTC
Last enriched: 07/06/2026, 23:12:34 UTC
Last updated: 07/31/2026, 19:22:59 UTC
Views: 30
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.