CVE-2026-55438: Coder: CORS bypass via workspace subdomain proxy

GHSA-5wg6-jmq2-53pw MEDIUM PoC AVAILABLE
Published July 6, 2026
CISO Take

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.

Sources: NVD GitHub Advisory CISA KEV ATLAS

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?

Reconnaissance
An authenticated attacker identifies a target victim's Coder username and confirms subdomain-based wildcard workspace app routing is enabled.
AML.T0087
Malicious URL crafting
The attacker builds a subdomain URL encoding their own workspace UUID alongside the victim's username, exploiting the mismatch between UUID-based resolution and username-trusting CORS checks.
Social engineering delivery
The attacker sends the crafted link to the victim, who clicks it while already authenticated to Coder.
AML.T0011.003
Cross-origin data exfiltration
The victim's browser issues a credentialed cross-origin request that the spoofed CORS check approves, letting the attacker's JavaScript read and exfiltrate the victim's workspace app data.
AML.T0025

What systems are affected?

Package Ecosystem Vulnerable Range Patched
Anthropic Python go >= 2.34.0, < 2.34.2 2.34.2
3.8K 5.2K dependents Pushed 2d ago 90% patched ~11d to patch Full package profile →

Do you use Anthropic Python? You're affected.

How severe is it?

CVSS 3.1
5.8 / 10
EPSS
0.1%
chance of exploitation in 30 days
Higher than 5% of all CVEs
Exploitation Status
Exploit Available
Exploitation: MEDIUM
Sophistication
Moderate
Exploitation Confidence
medium
Public PoC indexed (trickest/cve)
Composite signal derived from CISA KEV, VulnCheck KEV, CISA SSVC, EPSS, Metasploit, Exploit-DB, trickest/cve, Nuclei templates, and inthewild.io exploitation reports.

What is the attack surface?

AV AC PR UI S C I A
AV Network
AC High
PR Low
UI Required
S Changed
C High
I None
A None

What should I do?

1 step
  1. 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?

Decision Track
Exploitation none
Automatable No
Technical Impact partial

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:

EU AI Act
Article 15 - Accuracy, robustness and cybersecurity
ISO 42001
A.6.2.6 - Security controls for AI system environments

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

training pipelinesagent frameworksmodel serving

MITRE ATLAS Techniques

AML.T0011.003 Malicious Link
AML.T0025 Exfiltration via Cyber Means

Compliance Controls Affected

EU AI Act: Article 15
ISO 42001: A.6.2.6

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

Timeline

Published
July 6, 2026
Last Modified
July 8, 2026
First Seen
July 7, 2026

Related Vulnerabilities