/

CVE-2026-103473

Severity:

HIGH RISK

(8.1)

Command Injection (CWE-78) in Deno Windows Runtime

CVE-2026-103473

Awaiting Analysis

Vulnerability type

Category:

OS Command Injection

CWE:

CWE-78

Impact:

Arbitrary Command Execution

Severity:

HIGH RISK

(8.1)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

A high-severity command injection vulnerability in Deno on Windows affects node:child_process when shell execution is enabled and untrusted arguments are supplied. Because arguments may be escaped for the wrong shell type, an attacker could cause arbitrary operating system commands to run with the privileges of the Deno process.

Affected context

The issue occurs in Deno applications running on Windows that use node:child_process with the shell option and incorporate untrusted or insufficiently validated arguments. Risk depends on whether attacker-controlled data reaches a shell-backed process invocation and on the permissions available to the Deno process.

Exploit preconditions

  • Attack surface: Deno's node:child_process APIs on Windows
  • Required access: Ability to influence arguments passed to a child-process invocation, typically through an application-controlled input path
  • Trigger point: Starting a child process with shell execution enabled
  • Why exploitation is possible: Argument escaping is performed for an incompatible shell type, allowing shell metacharacters or command syntax to be interpreted by the actual shell

Why this happens

The vulnerability results from a mismatch between the shell assumed by the argument-escaping logic and the shell that processes the command on Windows. This can cause data treated as an argument by application code to be reinterpreted as shell syntax. The behavior maps to CWE-78: Improper Neutralization of Special Elements used in an OS Command, commonly known as OS command injection.

Potential impact

  • An attacker may execute arbitrary operating system commands
  • The attacker could access or modify data available to the Deno process
  • Application credentials or environment secrets may be exposed
  • The host could be altered or used for further attacks
  • Service availability could be affected

General mitigation guidance

Mitigation generally focuses on removing unnecessary shell interpretation and reducing the amount of untrusted data that reaches process-launching APIs.

Common defensive patterns include:

  • Prefer direct executable and argument APIs that do not invoke a shell
  • Avoid enabling shell execution for inputs influenced by users or external systems
  • Use fixed command and argument allowlists instead of constructing command strings
  • Validate inputs against strict type, format, and length constraints
  • Keep untrusted data separate from executable command structure
  • Run Deno processes with the minimum operating-system privileges and access they require
  • Apply operating-system and container isolation where appropriate

How teams detect issues like this

Organizations can identify this weakness through:

  • Static analysis rules for node:child_process calls using shell options
  • Searches for command strings or process arguments assembled from request, file, or environment data
  • Code review checks for shell execution combined with concatenation or interpolation
  • Policy enforcement that requires approved process-launching wrappers or argument allowlists
  • Runtime monitoring of unusual child-process creation and command interpreter activity

Automated code review and security scanning tools may help flag potentially unsafe shell invocation patterns.

Sources

SourceLink
github.comgithub.com/denoland/deno
github.comgithub.com/denoland/deno/blob/0c071246a412575e07423263404a5d13e7ed6aa2/ext/node/polyfills/internal/child_process.ts#L1339
github.comgithub.com/denoland/deno/blob/0c071246a412575e07423263404a5d13e7ed6aa2/ext/node/polyfills/internal/child_process.ts#L1499
github.comgithub.com/denoland/deno/pull/36772
vulncheck.comvulncheck.com/advisories/deno-2.7.0-through-2.9.7-command-injection-via-node-child-process

Frequently asked

questions

It can be remotely exploitable when a network-facing Deno application passes attacker-controlled data to a shell-enabled child-process call. Exploitability depends on the application's input flow and deployment exposure.

An attacker generally needs a way to influence the arguments or command-related inputs used by the vulnerable process invocation. Direct access to the Windows host is not necessarily required if an application exposes a suitable input path.

Avoid shell execution and invoke a fixed executable directly with separately specified, validated arguments. When shell use is unavoidable, tightly constrain accepted values and keep process privileges minimal.

Treat command arguments as security-sensitive data, prohibit untrusted string interpolation into shell commands, use approved process-launching abstractions, and include shell-invocation checks in code review and automated security policies.

Find out what's already
exploitable in your codebase.