CVE-2026-55438: Coder: CORS bypass via workspace subdomain proxy
GHSA-5wg6-jmq2-53pw MEDIUM PoC AVAILABLEA flaw in Coder's subdomain-based workspace app proxy let an authenticated user bypass the same-owner CORS check by crafting a subdomain that encodes their own workspace UUID alongside a victim's username, tricking the CORS middleware into trusting the unverified username instead of the resolved owner. If a signed-in victim visits the attacker's crafted URL, the attacker's JavaScript can issue credentialed cross-origin requests to the victim's workspace apps and read the responses -- exposing whatever the victim's AI/ML dev workspace serves, from notebooks to model artifacts to embedded API keys. With 5,435 downstream dependents on github.com/coder/coder/v2, no public exploit or Nuclei template, no CISA KEV listing, and no EPSS score available, opportunistic exploitation is currently low-likelihood, but the confidentiality impact (CVSS 5.8, C:H) is real anywhere subdomain-based wildcard app routing is enabled. Patch immediately to 2.34.2, 2.33.8, 2.32.7, or 2.29.17 (ESR) -- there is no workaround -- and until patched, monitor CORS/access logs for cross-origin requests where the subdomain username doesn't match the resolved workspace owner.
What is the risk?
Medium severity (CVSS 3.1: 5.8, AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:N/A:N). Exploitation requires an authenticated attacker account, high attack complexity (crafting the correct UUID/username subdomain encoding), and victim user interaction (visiting a malicious link), so this is not a mass-exploitable or wormable bug. Impact is confidentiality-only but high: a successful attack fully exposes whatever the victim's workspace app returns, with no integrity or availability effect. Risk is elevated specifically for organizations that (a) run Coder with subdomain-based wildcard workspace app routing enabled, and (b) host sensitive AI/ML assets -- datasets, model weights, credentials, internal tooling -- inside developer workspace apps reachable this way. No public exploit, Nuclei template, CISA KEV entry, or EPSS score exists yet, so the realistic threat vector is a targeted, phishing-style attack from an already-authenticated insider or contractor account against a specific victim rather than opportunistic scanning.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| Anthropic Python | go | >= 2.34.0, < 2.34.2 | 2.34.2 |
Do you use Anthropic Python? You're affected.
How severe is it?
What is the attack surface?
What should I do?
1 step-
Upgrade immediately to the patched release for your line: 2.34.2, 2.33.8, 2.32.7, or 2.29.17 (ESR) -- there is no vendor workaround, so patching is the only fix. If immediate patching isn't possible, consider temporarily disabling subdomain-based wildcard workspace app routing (path-based routing is not affected by this specific bypass) to remove the attack surface. Audit Coder access/CORS logs for cross-origin requests to workspace app subdomains where the Origin header's username segment doesn't match the resolved workspace owner -- this is the signature of exploitation attempts. Rotate any credentials or API keys reachable through workspace apps during the vulnerable window, and remind users not to click untrusted Coder workspace links while authenticated.
What does CISA's SSVC say?
Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-55438?
A flaw in Coder's subdomain-based workspace app proxy let an authenticated user bypass the same-owner CORS check by crafting a subdomain that encodes their own workspace UUID alongside a victim's username, tricking the CORS middleware into trusting the unverified username instead of the resolved owner. If a signed-in victim visits the attacker's crafted URL, the attacker's JavaScript can issue credentialed cross-origin requests to the victim's workspace apps and read the responses -- exposing whatever the victim's AI/ML dev workspace serves, from notebooks to model artifacts to embedded API keys. With 5,435 downstream dependents on github.com/coder/coder/v2, no public exploit or Nuclei template, no CISA KEV listing, and no EPSS score available, opportunistic exploitation is currently low-likelihood, but the confidentiality impact (CVSS 5.8, C:H) is real anywhere subdomain-based wildcard app routing is enabled. Patch immediately to 2.34.2, 2.33.8, 2.32.7, or 2.29.17 (ESR) -- there is no workaround -- and until patched, monitor CORS/access logs for cross-origin requests where the subdomain username doesn't match the resolved workspace owner.
Is CVE-2026-55438 actively exploited?
Proof-of-concept exploit code is publicly available for CVE-2026-55438, increasing the risk of exploitation.
How to fix CVE-2026-55438?
Upgrade immediately to the patched release for your line: 2.34.2, 2.33.8, 2.32.7, or 2.29.17 (ESR) -- there is no vendor workaround, so patching is the only fix. If immediate patching isn't possible, consider temporarily disabling subdomain-based wildcard workspace app routing (path-based routing is not affected by this specific bypass) to remove the attack surface. Audit Coder access/CORS logs for cross-origin requests to workspace app subdomains where the Origin header's username segment doesn't match the resolved workspace owner -- this is the signature of exploitation attempts. Rotate any credentials or API keys reachable through workspace apps during the vulnerable window, and remind users not to click untrusted Coder workspace links while authenticated.
What systems are affected by CVE-2026-55438?
This vulnerability affects the following AI/ML architecture patterns: training pipelines, agent frameworks, model serving.
What is the CVSS score for CVE-2026-55438?
CVE-2026-55438 has a CVSS v3.1 base score of 5.8 (MEDIUM). The EPSS exploitation probability is 0.15%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0011.003 Malicious Link AML.T0025 Exfiltration via Cyber Means Compliance Controls Affected
What are the technical details?
Original Advisory
### Summary Coder's subdomain-based workspace app proxy allowed the same-owner CORS check to be bypassed. When a workspace-name subdomain segment parsed as a UUID, the workspace was resolved by ID without confirming the URL's username matched the real owner, while the CORS middleware trusted the unverified username in the hostname. > **Note:** Practical exploitation requires subdomain app routing (wildcard hostname) enabled and a victim who visits the attacker's crafted app URL while authenticated. ### Impact An authenticated user could craft a subdomain encoding their own workspace UUID and a victim's username. If the victim visited the attacker's URL, the attacker's JavaScript could issue credentialed cross-origin `fetch()` requests to the victim's workspace apps and read the responses, exfiltrating data accessible through those apps. ### Patches The fix validates the subdomain username against the resolved workspace's actual owner and bases the same-owner CORS decision on the authoritative owner identity. 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 None. ### Resources - Fix: #26086, #26085 ### Credits Coder would like to thank Anthropic's Security Team (ANT-2026-22434) for independently disclosing this issue!
Exploitation Scenario
An attacker who already holds a valid, low-privilege Coder account creates their own workspace and notes its UUID. They craft a URL using the subdomain-based app routing pattern, substituting the victim's username into the hostname while pointing the workspace-ID segment at their own workspace UUID -- exploiting the fact that the backend resolves the workspace by UUID (ignoring the username) while the CORS middleware trusts the unverified username in the hostname as the 'owner'. The attacker sends this link to a target AI/ML engineer via email, Slack, or a compromised ticket/PR comment, socially engineering them into clicking it while already authenticated to Coder. The victim's browser, still holding valid session cookies, issues a credentialed fetch() from the attacker's page origin to the victim's real workspace app; because the same-owner CORS check is fooled, the response is returned to the attacker's JavaScript, letting them read notebook contents, environment variables, API tokens, or partial model outputs exposed by the victim's dev workspace app.
Weaknesses (CWE)
CWE-346 — Origin Validation Error: The product does not properly verify that the source of data or communication is valid.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:N/A:N References
Timeline
Related Vulnerabilities
CVE-2026-27775 8.8 Gitea: cached permission check allows repo takeover
Same package: anthropic CVE-2026-54449 8.8 LangBot: RCE via arbitrary STDIO MCP command
Same package: anthropic CVE-2026-7574 8.7 Claude Desktop: VM integrity bypass enables RCE
Same package: anthropic CVE-2026-55429 8.7 Coder: cross-workspace agent hijack via app ID reuse
Same package: anthropic CVE-2026-67428 8.5 Flyto2 Core: SSRF via unvalidated URLs in agent tools
Same package: anthropic