---
id: "CVE-2026-111451"
kind: "vulnerability"
aliases: ["CVE-2026-111451"]
title: "Wheels CLI: unvalidated inputs allow shell commands and file overwrites"
severity: "high"
cvss: 7.8
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["cfml", "ci", "mcp", "package", "self-hosted", "wheels"]
not_affected_if: ["no-untrusted-inputs", "versions-outside-4.0.0-4.1.1"]
published_at: "2026-10-16T04:18:31+00:00"
first_seen_at: "2026-10-23T21:57:12+00:00"
updated_at: "2026-10-25T03:10:22+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-111451", "first_seen_at": "2026-10-23T21:57:12+00:00"}]
---

# Wheels CLI: unvalidated inputs allow shell commands and file overwrites

Wheels CLI 4.0.0 through 4.1.1 does not validate or escape deploy values, package contents and generator names. An attacker who controls CI variables, branch names, packages or an AI agent using the MCP tools can run shell commands on deploy hosts or CI runners, delete or overwrite files, and inject stored XSS into generated views.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Run `wheels --version` (or check the Wheels CLI version in the CLI package) and see whether it falls in 4.0.0 through 4.1.1.
- Look for generated scaffold show views or admin views created on 4.1.0 or later that output unencoded display properties.
- Check whether deploy release, version or rollback values come from CI variables, branch names or untrusted input.

## Fix

- Upgrade the Wheels CLI to `4.1.2`.
- Apply the documented edit to existing generated scaffold show and admin views that output unencoded display properties.
- Review deploy pipelines that pass branch names, CI variables or package values into release, version or rollback arguments.

## Timeline

- 2026-10-23T21:57:12+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-111451

## From the sources

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.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
