Description
Coder allows organizations to provision remote development environments via Terraform. Prior to versions 2.29.7, 2.32.7, 2.33.8, and 2.34.2, `UpsertWorkspaceApp` overwrites an existing app's `agent_id` on a primary-key conflict and `insertAgentApp` accepts the app ID from the provisioner's `CompleteJob` payload without verifying it belongs to the workspace being built. `CompleteJob` runs under `dbauthz.AsProvisionerd` so the authorization layer does not block the cross-workspace upsert. Exploitation requires elevated access as a template author or external provisioner operator. The fix in versions 2.29.7, 2.32.7, 2.33.8, and 2.34.2 verifies that any existing `workspace_apps` row matching the supplied ID belongs to the workspace being built and rejects cross-workspace agent reassignment. No known workarounds are available.
Published: 2026-07-08
Score: 8.7 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability in Coder's workspace application upsert permits a privileged actor to reassign an agent from one workspace to another. This is a CWE‑639 Missing Authorization flaw, where the App endpoint overwrites an existing app's agent_id when a primary‑key conflict occurs, and the insertAgentApp routine accepts an app ID from the provisioner's CompleteJob payload without confirming it belongs to the workspace being built. Because the CompleteJob operation runs with dbauthz.AsProvisionerd permissions, the authorization layer does not detect the cross‑workspace assignment. An attacker with template author or external provisioner operator privileges can bind an agent from a different workspace. This results in privilege escalation and potential compromise of confidentiality, integrity, and availability of the target environment.

Affected Systems

Any Coder deployment running a version older than v2.29.7, v2.32.7, v2.33.8, or v2.34.2 is affected. Organizations that use Terraform or other provisioning tools to create remote development environments with Coder must ensure they upgrade accordingly. The flaw targets the coder:coder product and affects all workspaces provisioned by users with elevated provisioner roles.

Risk and Exploitability

The flaw carries a CVSS score of 8.7, indicating high severity, while the EPSS score is less than 1%, suggesting low likelihood of widespread exploitation at present. It is not listed in the CISA KEV catalog, so no publicly known exploits exist yet. The likely attack vector involves a malicious or compromised Terraform provider or direct API calls made with provisioner credentials. Once from another workspace, they can run arbitrary commands as that workspace, effectively escalating privileges and controlling the target environment.

Generated by OpenCVE AI on July 26, 2026 at 18:41 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade to Coder v2.29.7, v2.32.7, v2.33.8, v2.34.2, or a newer release that validates workspace ownership during upsert when a provisioner supplies an app ID; reject cross‑workspace app IDs.
  • Restrict cross‑workspace provisioning capabilities and monitor for unusual workspace‑app changes.
  • Audit Terraform provider configurations to ensure provisioner scripts cannot supply arbitrary app IDs, and enforce least‑privilege on provisioner roles.

Generated by OpenCVE AI on July 26, 2026 at 18:41 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-9rjw-3gwp-f59v Coder's workspace app upsert allows cross-workspace agent rebinding via user-controlled app ID
History

Wed, 08 Jul 2026 15:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 08 Jul 2026 01:45:00 +0000

Type Values Removed Values Added
First Time appeared Coder
Coder coder
Vendors & Products Coder
Coder coder

Wed, 08 Jul 2026 00:15:00 +0000

Type Values Removed Values Added
Description Coder allows organizations to provision remote development environments via Terraform. Prior to versions 2.29.7, 2.32.7, 2.33.8, and 2.34.2, `UpsertWorkspaceApp` overwrites an existing app's `agent_id` on a primary-key conflict and `insertAgentApp` accepts the app ID from the provisioner's `CompleteJob` payload without verifying it belongs to the workspace being built. `CompleteJob` runs under `dbauthz.AsProvisionerd` so the authorization layer does not block the cross-workspace upsert. Exploitation requires elevated access as a template author or external provisioner operator. The fix in versions 2.29.7, 2.32.7, 2.33.8, and 2.34.2 verifies that any existing `workspace_apps` row matching the supplied ID belongs to the workspace being built and rejects cross-workspace agent reassignment. No known workarounds are available.
Title Coder's workspace app upsert allows cross-workspace agent rebinding via user-controlled app ID
Weaknesses CWE-639
References
Metrics cvssV3_1

{'score': 8.7, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-07-08T14:41:39.988Z

Reserved: 2026-06-16T21:59:57.017Z

Link: CVE-2026-55429

cve-icon Vulnrichment

Updated: 2026-07-08T14:41:36.491Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-26T18:45:03Z

Weaknesses
  • CWE-639

    Authorization Bypass Through User-Controlled Key