Skip to main content

Coder CVE-2026-46354

CRITICAL
Improper Verification of Cryptographic Signature (CWE-347)
2026-05-19 https://github.com/coder/coder GHSA-6x44-w3xg-hqqf
9.1
CVSS 3.1 · Vendor: https://github.com/coder/coder
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Enumerate or obtain target vmId
  2. Delivery
    Obtain legitimate Azure IMDS certificate
  3. Exploit
    Forge PKCS#7 envelope with target vmId
  4. Install
    POST to unauthenticated azure-instance-identity endpoint
  5. C2
    Receive workspace agent session token
  6. Execute
    Exfiltrate Git SSH key and OAuth tokens
  7. Impact
    Pivot to developer repositories and external services

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
Exploitation Conditions

Target Coder v2 deployment must be running an unpatched version AND have workspaces configured with coder_agent.auth = "azure-instance-identity" - deployments using token authentication for agents do not expose the vulnerable POST /api/v2/workspaceagents/azure-instance-identity code path. The attacker must reach the Coder control plane over the network (AV:N) but needs no credentials or user interaction. The only practical prerequisite the vendor itself flags as a limiter is knowledge of the target workspace's vmId, a UUIDv4 that is not directly enumerable and typically requires reconnaissance or prior access to the Azure environment to discover. The attacker also needs any legitimate Azure IMDS leaf certificate, which is trivially obtainable from any Azure VM or from public Certificate Transparency logs.

Impact

CVSS 9.1 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N) aligns with the technical reality: network-reachable, unauthenticated, low complexity, high confidentiality and integrity impact (agent token grants access to SSH keys, OAuth tokens, secrets), and no availability impact. EPSS and KEV data were not provided in the input, so neither active-exploitation nor predicted-exploitation probability can be cited. The practical limiter is knowledge of a target vmId (a UUIDv4) - the vendor itself notes this typically requires prior access or reconnaissance, which tempers the otherwise pure AC:L rating. No public exploit identified at time of analysis, but the advisory documents the bypass technique in enough detail (forge PKCS#7 envelope with valid Azure cert + arbitrary content) that weaponization is straightforward for a motivated attacker. This is a real priority for any Coder deployment that uses azure-instance-identity authentication; deployments using token-based agent auth are not exposed by this specific flaw.

Exploit ScenarioDerived

An attacker spins up a throwaway Azure VM (or pulls any Azure IMDS leaf certificate from Certificate Transparency logs) and identifies a target Coder workspace's vmId through reconnaissance or prior low-privilege access. They craft a PKCS#7 envelope containing the legitimate Azure certificate plus a forged JSON payload {"vmId":"<target-uuid>"} without a valid signature over that content, then POST it to the unauthenticated /api/v2/workspaceagents/azure-instance-identity endpoint and receive the victim agent's session token, which they use to GET /workspaceagents/me/gitsshkey and /workspaceagents/me/external-auth to exfiltrate Git SSH private keys and plaintext GitHub/GitLab/Bitbucket OAuth tokens.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – May 19, 2026

Unauthenticated agent token theft in Coder v2 (self-hosted developer workspace platform) stems from azureidentity.Validate() verifying the PKCS#7 signer's certificate chain but skipping signature verification of the signed content itself. Remote attackers who know a target VM's vmId (a UUIDv4) can forge a PKCS#7 envelope containing a legitimate Azure certificate alongside attacker-controlled content and POST it to the unauthenticated /api/v2/workspaceagents/azure-instance-identity endpoint to receive the victim workspace agent's session token, which then unlocks Git SSH keys, OAuth tokens for GitHub/GitLab/Bitbucket, and workspace secrets. No public exploit identified at time of analysis, but the vulnerability is vendor-confirmed via GHSA-6x44-w3xg-hqqf and a detailed root-cause analysis with attack-path diagram is published.

RemediationAI

Vendor-released patches: upgrade to v2.33.3, v2.32.2, v2.31.12, v2.30.8, v2.29.13, or v2.24.5 depending on your release line (release notes linked from https://github.com/coder/coder/security/advisories/GHSA-6x44-w3xg-hqqf; underlying fix in PR https://github.com/coder/coder/pull/25286). If immediate upgrade is not possible, the vendor-recommended workaround is to reconfigure Azure templates away from Azure Instance Identity to token authentication by setting coder_agent.auth = "token" in the Terraform resource and injecting CODER_AGENT_TOKEN=${coder_agent.main.token} into the agent initialization script's environment; the side effect is that each agent now requires the control plane to provision and distribute a long-lived token, removing the automatic Azure-attested bootstrap and shifting token-rotation responsibility to operators. After upgrading, rotate any agent tokens, Git SSH keys, and OAuth tokens that may have been exposed prior to patching, since past exploitation would not leave obvious traces on the unauthenticated endpoint.

Affected Packages

go github.com/coder/coder no fix
go github.com/coder/coder/v2 fix: 2.24.5, 2.29.13, 2.30.8, 2.31.12, 2.32.2, 2.33.3

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in go

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Coder is an open-source self-hosted cloud development environment (pkg:go/github.com/coder/coder/v2) where workspace agents authenticate to the control plane. For Azure-hosted workspaces, agents present a PKCS#7-signed attestation from Azure Instance Metadata Service (IMDS) to bootstrap their session token. The flaw is a classic CWE-347 (Improper Verification of Cryptographic Signature): the original implementation called signer.Verify() on the certificate chain only, never validating that the PKCS#7 SignedData content was actually signed by the private key corresponding to the embedded certificate. The patch replaces go.mozilla.org/pkcs7 with github.com/smallstep/pkcs7 and uses VerifyWithChainAtTime, which performs both the cryptographic signature check over the content and the chain-of-trust check in a single call. Because any Azure IMDS certificate is reachable (it can be harvested from any Azure VM or pulled from Certificate Transparency logs), the cryptographic trust anchor effectively collapsed to attacker-controllable input.

Know when Jwt Attack gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (https://github.com/coder/coder) PRIMARY 9.1 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
SUSE CRITICAL

Primary rating from Vendor (https://github.com/coder/coder).

CVSS VectorVendor: https://github.com/coder/coder

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

DescriptionCVE.org

Summary

azureidentity.Validate() verifies that the PKCS#7 signer certificate chains to a trusted Azure CA but never verifies the PKCS#7 signature itself. An attacker can embed a legitimate Azure certificate alongside arbitrary content e.g. {"vmId":"<target>"} and the forged vmId will be accepted returning the victim workspace agent's session token.

No authentication is required. The attacker only needs to know a target VM's vmId which is a UUIDv4. > that's a practical limitation which would typically require prior access to be exploited

Root Cause

In unpatched Coder releases the signature over the PKCS#7 content is not validated - only the signing certificate is checked.

Impact

An attacker on any Azure VM or with access to a publicly available Azure IMDS certificate from CT logs can:

  1. Steal an agent session token by sending a forged PKCS#7 envelope to POST /api/v2/workspaceagents/azure-instance-identity which is unauthenticated.
  2. With the stolen token access:
  • Git SSH private key via GET /workspaceagents/me/gitsshkey: push to repositories and impersonate the workspace owner.
  • OAuth access tokens via GET /workspaceagents/me/external-auth: GitHub, GitLab, and Bitbucket tokens in plaintext.
  • Workspace secrets via the agent manifest: environment variables, file paths, and API keys.

Attack Path Diagram

<img width="5588" height="4176" alt="PKCS7_diagram (1)" src="https://github.com/user-attachments/assets/74e88a89-a995-450d-87ab-6feed03579a5" />

Affected Versions

All versions of Coder v2 are affected.

Patches

Fixed in #25286

The fix was backported to all supported release lines:

Workarounds

If unable to patch we recommend immediately reconfiguring any Azure templates to use token authentication rather than azure-instance-identity until the patch is released and you are fully upgraded.

  1. Modify the coder_agent.auth value to be token.
  2. Add CODER_AGENT_TOKEN=${coder_agent.main.token} to the set of environment variables for the Coder Workspace Agent initialization script.

Recognition

We'd like to thank Ben Tran of calif.io and Anthropic’s Security Team (ANT-2026-22445) for independently disclosing this issue!

Executive ViewAI

Why It Matters

Coder v2 self-hosted instances face unauthenticated token theft risk, exposing Git SSH keys, OAuth credentials, and workspace secrets. No public exploit identified at time of analysis, but the vulnerability is vendor-confirmed and affects all unpatched deployments, creating direct threats to developer identity and supply chain security.

Business Impact: Severe
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.0%
Top 93% exploitable
Threat Intel
1
1 source
Data Quality
4 sources
Confidence: Medium
NVD CVE.org EPSS GHSA Vendor GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Out-of-Cycle
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
Very High

Priority Score

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +46
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

Affected Products (CPE)CVE.org

pkg:go/github.com_coder_coder_v2
pkg:go/github.com_coder_coder_v2
pkg:go/github.com_coder_coder_v2
pkg:go/github.com_coder_coder_v2
pkg:go/github.com_coder_coder_v2
pkg:go/github.com_coder_coder_v2
pkg:go/github.com_coder_coder
CVE-2013-3900 MEDIUM
5.5 Dec 11

Why is Microsoft republishing a CVE from 2013? We are republishing CVE-2013-3900 in the Security Update Guide to update

CVE-2026-48558 CRITICAL POC
9.5 Jun 12

Authentication bypass in SimpleHelp 5.5.15 and prior (plus 6.0 pre-release builds) allows remote unauthenticated attacke

CVE-2026-5430 CRITICAL POC
10.0 Aug 06

Authentication bypass in WSO2 API Manager and related components (Universal Gateway, Traffic Manager, API Control Plane,

CVE-2025-59718 CRITICAL
9.8 Dec 09

Authentication bypass in Fortinet FortiOS, FortiProxy, and FortiSwitchManager allows unauthenticated remote attackers to

CVE-2025-25291 CRITICAL POC
9.3 Mar 12

ruby-saml provides security assertion markup language (SAML) single sign-on (SSO) for Ruby. Rated critical severity (CVS

CVE-2026-47304 CRITICAL POC
9.8 Jul 14

Security feature bypass in Microsoft .NET (shipped via Visual Studio 2022 17.12/17.14 and Visual Studio 2026 18.7) lets

CVE-2025-25292 CRITICAL POC
9.3 Mar 12

ruby-saml provides security assertion markup language (SAML) single sign-on (SSO) for Ruby. Rated critical severity (CVS

CVE-2022-25898 CRITICAL POC
9.8 Jul 01

The package jsrsasign before 10.5.25 are vulnerable to Improper Verification of Cryptographic Signature when JWS or JWT

CVE-2026-107722 CRITICAL POC
9.8 Oct 08

Authentication and authorization bypass in fast-jwt 6.2.0 through 6.2.4 (npm, NearForm) lets a remote, unauthenticated a

CVE-2024-42004 CRITICAL POC
9.8 Dec 18

A library injection vulnerability exists in Microsoft Teams (work or school) 24046.2813.2770.1094 for macOS. Rated criti

CVE-2024-41145 CRITICAL POC
9.8 Dec 18

A library injection vulnerability exists in the WebView.app helper app of Microsoft Teams (work or school) 24046.2813.27

CVE-2024-41138 CRITICAL POC
9.8 Dec 18

A library injection vulnerability exists in the com.microsoft.teams2.modulehost.app helper app of Microsoft Teams (work

Vendor StatusVendor

SUSE

Severity: Critical
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

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