Skip to main content

nodejs-whisper CVE-2026-110644

| EUVDEUVD-2026-101272 CRITICAL
OS Command Injection (CWE-78)
2026-10-14 VulnCheck GHSA-2f48-3555-fpx6
9.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Submit audio file with crafted name
  2. Delivery
    Path reaches convertToWavType()
  3. Exploit
    Metacharacters interpolated into ffmpeg string
  4. Execution
    shelljs exec() runs injected command
  5. Impact
    Arbitrary 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.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 2.7% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

nodejs-whisper 0 ≤0.3.1

Affected Packages

euvd nodejs_whisper no fix

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

Vendor (VulnCheck) PRIMARY 9.3 CRITICAL
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
vuln.today AI 9.8 CRITICAL

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.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
2.7%
Top 14% exploitable
Prevalence
Low
niche npm wrapper around whisper.cpp, limited production footprint
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 2.7%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Total

Priority Score

49
Low Medium High Critical
KEV: 0
EPSS: +3
CVSS: +46
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

OS command injection occurs when an application passes unsanitized user input directly into system shell commands.

CVE-2025-68613 HIGH POC
8.8 Dec 19

Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation

CVE-2024-41713 CRITICAL POC
9.1 Oct 21

A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could

CVE-2024-55591 CRITICAL POC
9.8 Jan 14

FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote

CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2014-7205 CRITICAL POC
10.0 Oct 08

Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t

CVE-2025-59528 CRITICAL POC
10.0 Sep 22

Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete

CVE-2017-14849 HIGH POC
7.5 Sep 28

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc

CVE-2017-5941 CRITICAL POC
9.8 Feb 09

An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner

CVE-2014-0224 HIGH POC
7.4 Jun 05

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

CVE-2014-3744 HIGH POC
7.5 Oct 23

Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi

CVE-2014-9566 HIGH POC
7.5 Mar 10

Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin

CVE-2013-4660 MEDIUM POC
6.8 Jun 28

The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy