{"id":"CVE-2026-111451","kind":"vulnerability","aliases":["CVE-2026-111451"],"related":[],"title":"Wheels CLI: unvalidated inputs allow shell commands and file overwrites","description":"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.","summary":"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.","severity":"high","cvss":7.8,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["cfml","ci","mcp","package","self-hosted","wheels"],"not_affected_if":["no-untrusted-inputs","versions-outside-4.0.0-4.1.1"],"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.\n- Look for generated scaffold show views or admin views created on 4.1.0 or later that output unencoded display properties.\n- 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`.\n- Apply the documented edit to existing generated scaffold show and admin views that output unencoded display properties.\n- Review deploy pipelines that pass branch names, CI variables or package values into release, version or rollback arguments.","status":"open","published_at":"2026-10-16T04:18:31+00:00","first_seen_at":"2026-10-23T21:57:12+00:00","triaged_at":"2026-10-25T03:10:22+00:00","updated_at":"2026-10-25T03:10:22+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-25T03:10:22Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade the Wheels CLI to `4.1.2`.\n- Apply the documented edit to existing generated scaffold show and admin views that output unencoded display properties.\n- Review deploy pipelines that pass branch names, CI variables or package values into release, version or rollback arguments.","reach":"unknown","title":"Wheels CLI: unvalidated inputs allow shell commands and file overwrites","impact":"high","summary":"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.","category":"package","nicknames":[],"who_cares":["wheels","cfml","ci","self-hosted","mcp"],"confidence":0.7,"needs_auth":"unknown","worst_case":"Shell commands run on deploy hosts and CI runners; stored XSS in views.","analyst_note":"Sources list only the NVD entry; check the Wheels project release notes for 4.1.2 and the documented view edit, and confirm which inputs and auth levels are required for the shell injection.","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.\n- Look for generated scaffold show views or admin views created on 4.1.0 or later that output unencoded display properties.\n- Check whether deploy release, version or rollback values come from CI variables, branch names or untrusted input.","needs_analyst":true,"not_affected_if":["versions-outside-4.0.0-4.1.1","no-untrusted-inputs"],"who_is_affected":"Teams that run the Wheels CLI for deploys, builds, package management or code generation, especially where inputs come from CI variables, branch names, third-party packages or an AI agent via MCP tools. Applications whose generated views were created on 4.1.0 or later are exposed to stored XSS until edited.","user_interaction":"unknown","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.00073,"input_tokens":3508,"output_tokens":759,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-111451':13A,16A '-2026':12A,15A '4.0.0':27B,82C '4.1.0':178C '4.1.1':29B,84C '4.1.2':207C 'admin':182C 'affect':209C 'agent':54B,159C 'ai':53B,158C 'allow':5A 'also':166C,212C 'attack':43B 'branch':48B,153C 'build':116C 'caller':90C 'caller-suppli':89C 'cfml':17B,143C 'ci':18B,46B,67B,113C,151C 'cli':2A,26B,81C,162C 'code':146C 'command':7A,62B,102C,196C 'content':38B,95C 'control':45B 'cve':11A,14A 'delet':69B,123C 'deploy':35B,64B,96C,104C 'destroy':120C 'display':170C 'document':215C 'edit':216C 'escap':34B,88C 'execut':100C,142C 'exist':208C 'extract':127C 'file':9A,72B,125C,132C 'fix':205C 'generat':40B,78B,133C,145C,173C,181C,210C 'handl':192C 'host':23B,65B,105C 'id':191C 'inject':74B,141C 'input':4A,147C 'insuffici':85C 'may':148C 'mcp':19B,57B,164C 'name':41B,49B,134C,154C 'origin':149C 'outsid':137C 'overwrit':10A,71B,129C 'packag':20B,37B,50B,94C,117C,126C,155C 'path':121C 'permit':184C 'process':190C,202C 'process-id':189C 'project':139C 'properti':171C 'release/version/rollback':97C 'relev':167C 'remov':118C 'requir':213C 'run':60B 'runner':68B,114C 'rustcfml':194C 'scaffold':174C 'self':22B 'self-host':21B 'server':195C 'shell':6A,61B,101C 'show':175C 'sinc':177C 'ssh':108C 'stale':188C 'store':75B,185C 'suppli':91C 'termin':199C 'tool':58B,165C 'unencod':169C 'unintend':124C 'unrel':201C 'unvalid':3A 'use':55B,160C 'user':109C 'valid':32B,86C 'valu':36B,92C,98C 'variabl':47B,152C 'vendor':131C 'view':79B,176C,183C,211C 'wheel':1A,24B,25B,80C 'write':136C 'xss':76B,186C","nicknames":[],"mitigations":[],"who_affected":"Teams that run the Wheels CLI for deploys, builds, package management or code generation, especially where inputs come from CI variables, branch names, third-party packages or an AI agent via MCP tools. Applications whose generated views were created on 4.1.0 or later are exposed to stored XSS until edited.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-16T04:18:31+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","cvss_by":"cve@mitre.org","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-111451","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-111451","severity":null,"published_at":"2026-10-16T04:18:31+00:00","modified_at":"2026-10-16T16:17:04+00:00","first_seen_at":"2026-10-23T21:57:12+00:00","fetched_at":"2026-10-23T22:28:54+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}