Coder: PKCS#7 signature bypass in Azure instance identity allows unauthenticated agent token theft
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 2.33.3, 2.32.2, 2.31.12, 2.30.8, 2.29.13, and 1 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: yes
- Technical impact: total
Summary
Coder allows organizations to provision remote development environments via Terraform. In versions prior tp 2.24.5, 2.29.13, 2.30.8, 2.31.12, 2.32.2, and 2.33.3, `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. Versions 2.24.5, 2.29.13, 2.30.8, 2.31.12, 2.32.2, and 2.33.3 patch the issue. As a workaround, reconfigure any Azure templates to use token authentication rather than `azure-instance-identity`.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: yes · Technical impact: total
- Record last updated
Affected versions
- coder coder
From 2.33.0-rc.0 · fixed in 2.33.3; From 2.32.0-rc.0 · fixed in 2.32.2; From 2.31.0 · fixed in 2.31.12; From 2.30.0 · fixed in 2.30.8; From 2.29.0 · fixed in 2.29.13; fixed in 2.24.5
- github.com/coder/coderGo
All versions
- github.com/coder/coder/v2Go
fixed in 2.24.5; From 2.29.0 · fixed in 2.29.13; From 2.30.0 · fixed in 2.30.8; From 2.31.0 · fixed in 2.31.12; From 2.32.0-rc.0 · fixed in 2.32.2; From 2.33.0-rc.0 · fixed in 2.33.3
- github.com/coder/coder/v2Go
From 2.33.0-rc.0 · fixed in 2.33.3
- github.com/coder/coder/v2Go
From 2.32.0-rc.0 · fixed in 2.32.2
- github.com/coder/coder/v2Go
From 2.31.0 · fixed in 2.31.12
- github.com/coder/coder/v2Go
From 2.30.0 · fixed in 2.30.8
- github.com/coder/coder/v2Go
From 2.29.0 · fixed in 2.29.13
- github.com/coder/coder/v2Go
fixed in 2.24.5
- github.com/coder/coderGo
through 0.27.3