Wheels CLI: OS command injection, path traversal and code injection
Summary
Wheels CLI 4.0.0 through 4.1.1 does not validate or escape caller-supplied values, such as deploy release, version and rollback arguments, package names and generator names. An attacker who can influence these inputs, for example through CI variables, branch names, packages or an AI agent using the CLI's MCP tools, can run shell commands on deploy hosts and CI runners, delete or overwrite files, and inject executable CFML into generated code. Generated scaffold and admin views also lack HTML encoding, which enables stored cross-site scripting.
Affected
- Wheels CLI 4.0.0 through 4.1.1
- Generated scaffold show views since 4.1.0 and generated admin views in affected versions
Fixed in
- Wheels CLI 4.1.2
- Existing affected generated views require a manual edit documented in the release notes
Workaround
- Do not pass untrusted values (e.g. branch names) to wheels deploy --release, --version or rollback.
- Do not expose the Wheels MCP server to agents that handle untrusted content.
- Review package names and generator arguments before running them.
Exploitation
- CISA SSVC: exploitation none, automatable no.
- No public proof-of-concept or evidence of exploitation found at time of research.
Our recommendation
- Upgrade Wheels CLI to 4.1.2 on developer machines, CI runners and deploy hosts.
- Until the upgrade, stop passing untrusted values into deploy, generate, package and destroy commands.
- Run CI and deploy jobs with least privilege and review the SSH accounts used for deployments.
- Regenerate admin views with wheels generate admin <Model> --force after reviewing diffs, and apply the documented edit to existing scaffold show views.
- Check deployed applications for stored XSS exposure.
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- GitHub Security Advisory GHSA-cghp-86c6-6fjc github.com
- Wheels release v4.1.2 github.com
- Wheels pull request 3916 github.com
- CVE record mirror (Vulners) vulners.com
Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 1 Nov 2026, 23:53.
Original description (NVD)
Wheels CLI 4.0.0 through 4.1.1 insufficiently validates or escapes caller-supplied values and package contents. Deploy release/version/rollback values can execute shell commands on deploy hosts as the SSH user and on the CI runner during builds. Package removal and destroy paths can delete unintended files; package extraction can overwrite other vendor files; generator names can write outside the project or inject executable CFML into generated code. Inputs may originate from CI variables, branch names, packages or an AI agent using the CLI's MCP tools. Also relevant are unencoded display properties in generated scaffold show views since 4.1.0 and in generated admin views, permitting stored XSS, and stale process-ID handling in RustCFML server commands that can terminate an unrelated process. This is fixed in 4.1.2; existing affected generated views also require the documented edit.
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.
Affected? We can help.
We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.
