/

CVE-2026-110649

Severity:

CRITICAL RISK

(9.8)

OS Command Injection (CWE-78) in Stills Media Paths

CVE-2026-110649

Deferred

Vulnerability type

Category:

OS Command Injection

CWE:

CWE-78

Impact:

Remote Code Execution

Severity:

CRITICAL RISK

(9.8)

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

Stills contains an OS command injection vulnerability in processing workflows that pass media file paths to external utilities. An attacker who can supply or influence a crafted media filename may execute shell commands with the privileges of the Node.js process when ffmpeg, ffprobe, gifsicle, or convert is invoked.

Stills contains an OS command injection vulnerability in processing workflows that pass media file paths to external utilities. An attacker who can supply or influence a crafted media filename may execute shell commands with the privileges of the Node.js process when ffmpeg, ffprobe, gifsicle, or convert is invoked.

Affected context

The issue occurs in Stills deployments that process attacker-influenced media paths through external command-line tools. Risk is present when filenames are incorporated into shell commands without robust argument separation or neutralization, particularly where untrusted users can upload, rename, or otherwise control media files.

The issue occurs in Stills deployments that process attacker-influenced media paths through external command-line tools. Risk is present when filenames are incorporated into shell commands without robust argument separation or neutralization, particularly where untrusted users can upload, rename, or otherwise control media files.

Exploit preconditions

  • Attack surface: Media-processing functionality that invokes ffmpeg, ffprobe, gifsicle, or convert
  • Required access: Ability to provide or influence a media file path or filename processed by Stills
  • Trigger point: Execution of an external media utility using the attacker-controlled path
  • Why exploitation is possible: Shell metacharacters in the path may be interpreted as command syntax instead of remaining data
  • Attack surface: Media-processing functionality that invokes ffmpeg, ffprobe, gifsicle, or convert
  • Required access: Ability to provide or influence a media file path or filename processed by Stills
  • Trigger point: Execution of an external media utility using the attacker-controlled path
  • Why exploitation is possible: Shell metacharacters in the path may be interpreted as command syntax instead of remaining data

Why this happens

The vulnerability results from constructing or invoking shell commands with media paths that are not safely separated from command syntax. Shell expansion constructs such as command substitution can cause attacker-controlled filename content to be executed by the operating system. This maps to CWE-78: Improper Neutralization of Special Elements used in an OS Command, where untrusted input reaches a command interpreter without adequate protection.

The vulnerability results from constructing or invoking shell commands with media paths that are not safely separated from command syntax. Shell expansion constructs such as command substitution can cause attacker-controlled filename content to be executed by the operating system. This maps to CWE-78: Improper Neutralization of Special Elements used in an OS Command, where untrusted input reaches a command interpreter without adequate protection.

Potential impact

  • Execution of arbitrary operating system commands
  • Compromise of the Stills application process
  • Access to files and environment data available to Node.js
  • Modification or deletion of application data
  • Potential credential theft, persistence, or lateral movement
  • Execution of arbitrary operating system commands
  • Compromise of the Stills application process
  • Access to files and environment data available to Node.js
  • Modification or deletion of application data
  • Potential credential theft, persistence, or lateral movement

General mitigation guidance

Mitigation generally focuses on ensuring that media paths remain data throughout the processing pipeline.

Common defensive patterns include:

  • Invoke utilities directly with structured argument arrays rather than through a shell
  • Apply strict path handling and reject unexpected control characters or shell metacharacters
  • Resolve paths against controlled directories and prevent unintended traversal
  • Use allowlisted utility options and avoid dynamically assembled command strings
  • Run media-processing workers with least privilege and restricted filesystem and network access
  • Treat uploaded filenames and metadata as untrusted regardless of their source

Mitigation generally focuses on ensuring that media paths remain data throughout the processing pipeline.

Common defensive patterns include:

  • Invoke utilities directly with structured argument arrays rather than through a shell
  • Apply strict path handling and reject unexpected control characters or shell metacharacters
  • Resolve paths against controlled directories and prevent unintended traversal
  • Use allowlisted utility options and avoid dynamically assembled command strings
  • Run media-processing workers with least privilege and restricted filesystem and network access
  • Treat uploaded filenames and metadata as untrusted regardless of their source

How teams detect issues like this

Organizations can look for:

  • Static analysis findings involving shell execution APIs, command-string concatenation, or interpolated media paths
  • Code review signals such as template literals or string concatenation passed to child-process or shell APIs
  • Tests using filenames containing shell metacharacters to verify that they remain literal arguments
  • Runtime monitoring for unexpected child processes, command interpreters, or unusual utility arguments
  • Policy enforcement requiring direct process execution with separated arguments and approved executable paths

Automated security and code-review tools may help identify unsafe command construction patterns.

Organizations can look for:

  • Static analysis findings involving shell execution APIs, command-string concatenation, or interpolated media paths
  • Code review signals such as template literals or string concatenation passed to child-process or shell APIs
  • Tests using filenames containing shell metacharacters to verify that they remain literal arguments
  • Runtime monitoring for unexpected child processes, command interpreters, or unusual utility arguments
  • Policy enforcement requiring direct process execution with separated arguments and approved executable paths

Automated security and code-review tools may help identify unsafe command construction patterns.

Sources

SourceLink
github.comgithub.com/shahkashani/stills/blob/66d5def1265b817d84524473a2813e4781dcbd80/lib/content/video.js#L58-L60
github.comgithub.com/shahkashani/stills/blob/66d5def1265b817d84524473a2813e4781dcbd80/lib/stills/frames.js#L106-L108
github.comgithub.com/shahkashani/stills/commit/51ba953983ba99915331607bf8530e6089952253
github.comgithub.com/shahkashani/stills/commit/5694b3b0dcd2da342f4f0497244129d4c9eb73bc
github.comgithub.com/shahkashani/stills/pull/29
github.comgithub.com/shahkashani/stills/pull/30
vulncheck.comvulncheck.com/advisories/stills-before-25.24.2-os-command-injection-via-media-file-names

Frequently asked

questions

It can be remotely exploitable when a reachable Stills feature accepts or processes media files whose names or paths are controlled by an attacker. Actual exposure depends on deployment architecture and access controls.

The attacker generally needs the ability to upload, rename, select, or otherwise influence a media path that reaches the vulnerable processing workflow.

Execute media utilities without a shell, pass paths as separate arguments, and enforce controlled path validation before processing.

Treat filenames as untrusted input, prohibit dynamic shell command construction, apply least privilege to workers, and include shell-metacharacter tests and static analysis in development pipelines.

It can be remotely exploitable when a reachable Stills feature accepts or processes media files whose names or paths are controlled by an attacker. Actual exposure depends on deployment architecture and access controls.

The attacker generally needs the ability to upload, rename, select, or otherwise influence a media path that reaches the vulnerable processing workflow.

Execute media utilities without a shell, pass paths as separate arguments, and enforce controlled path validation before processing.

Treat filenames as untrusted input, prohibit dynamic shell command construction, apply least privilege to workers, and include shell-metacharacter tests and static analysis in development pipelines.

Find out what's already
exploitable in your codebase.