Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSubmit audio file with crafted name
-
DeliveryPath reaches convertToWavType()
-
ExploitMetacharacters interpolated into ffmpeg string
-
Executionshelljs exec() runs injected command
-
ImpactArbitrary code execution as Node.js process
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 | Requires an application using nodejs-whisper (≤0.3.1) to pass an attacker-controlled file path or filename into convertToWavType() (or the transcription entry points that call it); the attacker-supplied name must contain shell metacharacters such as $() command substitution or a closing double-quote, which are interpolated into the ffmpeg command string run via shelljs exec(). Exploitation also requires ffmpeg to be installed and invocable on the host. Limiting factors: the attacker must be able to influence the filename/path string reaching the function, so applications that sanitize, canonicalize, or server-generate audio paths are not exposed; there is no authentication or user-interaction requirement in the library itself, and code runs with the Node.js process privileges. |
| Impact | This is a genuine high-priority defect for anyone embedding the library, though its blast radius is bounded by the product's niche footprint. The input CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) and the confirmed root cause - unsanitized interpolation of a file path into a shell string executed via shelljs exec() - justify the 9.3 'critical' rating and are corroborated by the source-code diff in PR #259, which replaces shell.exec() with argv-array execFileSync(). However, the AV:N/PR:N rating is contingent on the consuming application forwarding attacker-controlled filenames to convertToWavType(); nodejs-whisper is a library, so exploitability depends on how downstream applications wire untrusted input, meaning the 'network/unauthenticated' framing holds only for apps that accept user-supplied audio paths. No EPSS score, KEV listing, or SSVC decision data was provided, and no public exploit is referenced - so there is no public exploit identified at time of analysis and no evidence of active exploitation. The combination of a confirmed, mechanically-simple injection plus an available vendor patch means remediation should be straightforward and prioritized for affected integrators, but the absence of KEV/EPSS signals and the library's limited deployment suggest this is a real-but-not-widespread risk rather than a mass-exploitation event. |
| Exploit ScenarioDerived | An application built on nodejs-whisper accepts an uploaded or user-named audio file and passes its path to convertToWavType(). An attacker names the file so it contains shell metacharacters (e.g. a $() command substitution or a closing double-quote), which is interpolated into the ffmpeg command and executed by shelljs, running arbitrary OS commands with the Node.js process's privileges. No public exploit is identified at time of analysis, but the technique is trivial given the confirmed code path. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 14, 2026
OS command injection in nodejs-whisper through 0.3.1 lets remote, unauthenticated attackers execute arbitrary operating-system commands with the privileges of the Node.js process by supplying a crafted audio file path. The vulnerable convertToWavType() function builds an ffmpeg command as a string, interpolating the caller-provided path between double quotes before handing it to shelljs exec(); a filename containing $() command substitution or a closing double quote breaks out of the quoted argument and is interpreted by the shell. An upstream fix exists in pull request #259, but no tagged patched release has been independently confirmed, and no public exploit code was identified at time of analysis - real-world exposure is limited to applications that pass attacker-influenced, unsanitized filenames into the transcription/convert entry points while ffmpeg is installed on the host.
RemediationAI
Apply the upstream fix in pull request https://github.com/ChetanXpro/nodejs-whisper/pull/259, which stops importing shelljs and replaces the interpolated shell.exec(command) calls with a runFfmpegConversion() helper that invokes child_process.execFileSync with ffmpeg arguments passed as a discrete argv array; upstream fix available (PR/commit); released patched version not independently confirmed, so verify whether a tagged npm release beyond 0.3.1 exists before relying on a version bump alone, and otherwise pin to a commit containing the patch. If you cannot upgrade immediately, the highest-value compensating control is to stop passing untrusted strings into convertToWavType(): never derive the ffmpeg input path from a user-supplied filename - copy or stream uploaded audio to a server-generated path (for example a UUID-based temp file) and pass only that canonicalized path, which fully removes the injection primitive but requires an extra file-handling step and changes how the library is called. As a secondary filter, reject filenames containing shell metacharacters ($, backticks, ;, |, &, ", ') before they reach the function; this is cheap but brittle because it depends on a denylist being complete and on every call site applying it. Because the injected command runs with the Node.js process privileges, run the transcription service under a low-privilege, containerized account and restrict its filesystem and network reachability to limit post-exploitation impact. Finally, if ffmpeg is not strictly required on the host (for example all input is already 16 kHz mono WAV), removing it from the runtime image removes the execution vector's precondition entirely.
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 flaw is a classic CWE-78 OS command injection rooted in shell-string construction rather than argument-array execution. nodejs-whisper's utils.ts (lines 58-59 and 76-77 in v0.3.1) assembles the command template ffmpeg -nostats -loglevel error -y -i "${inputFilePath}" -ar 16000 -ac 1 -c:a pcm_s16le "${outputFilePath}" and runs it through shelljs' exec(), which spawns a shell. Because the path is only wrapped in double quotes, metacharacters such as $(), backticks, or an embedded double quote are evaluated by the shell instead of being treated as literal filename data, giving the attacker command execution inside the Node.js process's context. The upstream patch replaces shelljs with child_process.execFileSync and passes ffmpeg's arguments as a discrete argv array (-nostats -loglevel error -y -i <path> -ar 16000 -ac 1 -c:a pcm_s16le <out>), which removes the shell entirely so metacharacters can never be interpreted. The affected component is tracked as CPE cpe:2.3:a:chetanxpro:nodejs-whisper:*:*:*:*:*:*:*:* - the wildcard reflects that the advisory covers all releases through 0.3.1. The underlying technology is audio pre-processing: any non-WAV input must be transcoded to 16 kHz mono PCM WAV before it can be handed to the Whisper speech-to-text model, and that transcode step is where the injection lives. The assessed CVSS:3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) confirms the attack is network-reachable, needs no authentication or user interaction, and stays within the same security scope, but full exploitation still depends on the embedding application forwarding an attacker-controlled path and on ffmpeg being present and invocable on the host.
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
Unsanitized path is interpolated into a shelljs command, giving reliable code execution; no privileges or interaction are required by the library itself, so AV:N/AC:L/PR:N/UI:N with full C/I/A impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
nodejs-whisper through 0.3.1 contains an OS command injection vulnerability in convertToWavType() that allows attackers to execute commands by supplying crafted audio file paths. Attackers can provide file names containing $() command substitution or closing quotes, which are interpolated into an ffmpeg command run via shelljs exec(), executing OS commands with Node.js process privileges.
Executive ViewAI
A critical command-injection flaw in the nodejs-whisper audio transcription library (versions through 0.3.1) allows an attacker who controls an audio filename to run arbitrary operating-system commands on the host at the privilege level of the Node.js process. Any product that exposes transcription or audio-conversion features to end users or untrusted file uploads - and runs ffmpeg on the same server - could be fully compromised, giving an intruder a foothold to read data, pivot into internal systems, or disrupt service. Because this library is typically embedded in customer-facing applications, leadership should treat it as a potential breach vector rather than a routine dependency update.
Apply vendor patch. Where a tagged patched release is not yet available, interim mitigations are to pin nodejs-whisper to the fix commit from upstream pull request #259, replace string-interpolated shell execution with argument-array execution such as execFile, strictly validate and canonicalize all caller-supplied audio paths (reject filenames containing shell metacharacters such as $, (), quotes, backticks, semicolons, and pipes), run the ffmpeg/Node.js worker under a least-privilege account in a sandboxed container with no unnecessary network access, and disable the transcription or conversion feature until the fix is confirmed.
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-101272
GHSA-2f48-3555-fpx6
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB