Skip to main content

node-convert CVE-2026-107703

| EUVDEUVD-2026-95148 CRITICAL
OS Command Injection (CWE-78)
2026-10-08 VulnCheck GHSA-qgrr-fcmp-xm5c
9.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Reach endpoint passing input to node-convert
  2. Delivery
    Submit filename/format with shell metacharacters
  3. Exploit
    Break out of ImageMagick exec string
  4. Execution
    Injected OS command runs via child_process.exec
  5. Impact
    Execute commands as Node.js process user

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 a consuming application pass attacker-influenced data into node-convert's filepath or convertTo arguments, which the library concatenates into an ImageMagick command executed via child_process.exec(); injecting shell metacharacters or a single quote escapes the command. The practical limiting factor is this dependency on the host application exposing those parameters to untrusted input and having ImageMagick/the vulnerable call path reachable - in deployments that pass only trusted/internally-fixed values, the flaw is not remotely triggerable. No authentication, user interaction, or non-default configuration is required at the library level itself (PR:N/UI:N), and all versions through 1.0.0 are affected.

Impact

The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H, score 9.3) frames this as a trivially exploitable, unauthenticated remote command-execution flaw with full confidentiality, integrity and availability impact - a worst-case profile for a code-execution bug. However, this is a severity figure that assumes the consuming application forwards attacker-controlled input directly into the vulnerable filepath/convertTo parameters; node-convert is a library, so real-world exploitability depends entirely on how downstream applications wire user input into it. A proof-of-concept gist (R3tro16) is referenced, so public exploit tradecraft exists, satisfying the 'publicly available exploit code exists' signal. The flaw is NOT in CISA KEV and no EPSS score was provided in the input, so there is no evidence of active or widespread exploitation - the risk is driven by exploit availability and impact, not by observed attacks. SSVC-style reading: technical impact is Total (RCE), and the injection is Automatable where input is reachable, but exploitation status is only 'PoC' not 'Active'. Net: genuinely high technical severity, but the practical priority is gated by the tiny deployment footprint of this obscure npm package - treat as high-severity-but-narrow-blast-radius rather than a widespread emergency.

Exploit ScenarioDerived

An application uses @enmaso/node-convert to convert user-uploaded images and passes the user-supplied filename or target format into the library's filepath/convertTo arguments. An attacker submits a value containing shell metacharacters or a single quote (e.g. a crafted filename like x.png'; id #), which breaks out of the ImageMagick command string that node-convert builds for child_process.exec(). A public PoC gist demonstrates the injection, and because AC is low and no user interaction or authentication is required at the library boundary, the injected OS commands execute with the Node.js process privileges.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
No patch listed yet 1.8% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 08, 2026

OS command injection in @enmaso/node-convert through 1.0.0 lets remote, unauthenticated attackers execute arbitrary operating-system commands with the privileges of the Node.js process by placing shell metacharacters or a single quote into the filepath or convertTo arguments that convert.js concatenates into an ImageMagick command executed via child_process.exec(). The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H, score 9.3) and the independently assessed CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) both frame this as full-impact code execution, but practical exploitation requires a consuming application to pass attacker-influenced data into those two parameters and to have the vulnerable call path (and ImageMagick) reachable - deployments that only pass trusted or internally fixed values are not remotely triggerable. All versions through 1.0.0 are affected, and no public exploit code has been identified at time of analysis.

RemediationAI

No vendor-released patch was identified at time of analysis, and the CPE wildcard indicates that no version of @enmaso/node-convert through 1.0.0 contains a fix, so remediation must be driven by the consuming application. The primary options are: replace or vendor the library with a corrected implementation that calls child_process.execFile() or spawn() with shell:false and a discrete argument array (this eliminates shell interpretation entirely, at the cost of losing any shell features the original command may have relied on, which for a single ImageMagick conversion is usually none); or patch the installed copy of convert.js to stop string-interpolating filepath and convertTo and to pass them as array elements. If neither is possible, enforce strict allow-listing of filepath and convertTo at the call site - reject values containing quotes, semicolons, pipes, ampersands, backticks, $, newlines, or path-traversal sequences - and resolve/confine paths to an expected directory; the trade-off is that legitimate filenames containing unusual characters may be rejected and validation must be applied at every call site, not only one. Additionally, run the conversion with least privilege (a dedicated low-privilege user, or a sandboxed container/namespace with a read-only filesystem and no network) so that post-exploitation impact is bounded, and monitor the Node.js process for unexpected child-process spawns or shell invocations. Dependency hygiene is important here: audit npm/package-lock trees for @enmaso/node-convert and transitive consumers, and treat the package as unmaintained until an upstream fix appears. Reference material for the exact vulnerable code and disclosure is at github.com/enmaso/node-convert (convert.js lines 4-15 at commit 143e4d7), the VulnCheck advisory at vulncheck.com/advisories/enmaso-node-convert-through-1.0.0-os-command-injection-via-filepath-and-convertto, and the reporter's gist at gist.github.com/R3tro16/5a508fcfddfb0dfe66a0a53437ede74c.

Affected VersionsENISA

@enmaso/node-convert 0 ≤1.0.0

Affected Packages

euvd enmaso_node_convert 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 root cause is CWE-78 (Improper Neutralization of Special Elements used in an OS Command), a classic command-injection pattern in a Node.js package. In convert.js (lines 4-15 of the repository) the library builds an ImageMagick command line string from caller-supplied values and hands it to child_process.exec(), which by default spawns a shell (/bin/sh -c) rather than executing a binary directly. Because the filepath and convertTo arguments are interpolated into that string without escaping, quoting, or argument-array separation, any shell metacharacter (;, |, &&, backticks, $()) - or a single quote that breaks out of the surrounding quote context - is interpreted by the shell and yields arbitrary command execution under the Node.js process identity, typically the application server's user. The correct implementation would use child_process.execFile()/spawn() with shell:false and a discrete argument array, or apply strict allow-listing to both parameters. The CPE entry cpe:2.3:a:enmaso:@enmaso/node-convert:*:*:*:*:*:*:*:* uses a wildcard version, consistent with the advisory's statement that every release through 1.0.0 is vulnerable; the package is a small npm library whose only meaningful functionality is wrapping ImageMagick conversions, so there is no configuration or authentication layer between the caller and the vulnerable command construction.

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

Library builds a shell command from unsanitized input and runs it via exec(), yielding unauthenticated RCE with full C/I/A when the consuming app exposes the arguments; scope unchanged as code runs as the Node process.

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

@enmaso/node-convert through 1.0.0 contains an OS command injection vulnerability in convert.js that allows attackers to execute shell commands via unsanitized filepath and convertTo arguments. Attackers can inject shell metacharacters or a single quote into the ImageMagick command run by child_process.exec() to execute operating system commands with Node.js process privileges.

Executive ViewAI

Why It Matters

The @enmaso/node-convert library (through version 1.0.0) contains a critical OS command injection vulnerability that could allow unauthenticated remote attackers to execute arbitrary commands on servers running applications that pass untrusted input to the filepath or convertTo parameters. No public exploit identified at time of analysis, and exploitation requires specific application data flows, but a successful attack would grant full control of the affected Node.js process, potentially leading to data breach or lateral movement. With no vendor-released patch identified at time of analysis, affected organizations must immediately assess their exposure and implement mitigations.

Business Impact: Severe
Compensating Controls

Input validation to reject shell metacharacters (e.g., ;, |, &, $, `, ', ") in filepath and convertTo parameters; avoid passing untrusted data to these parameters; run Node.js process with least privilege; use child_process.execFile instead of exec if code can be modified; network segmentation; monitor for vendor patch.

Threat Intelligence Overview

EPSS Score
1.8%
Top 22% exploitable
Prevalence
Rare
obscure single-maintainer npm package, no meaningful enterprise footprint
Data Quality
5 sources
Confidence: Medium

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 1.8%
Patch available No
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
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
Very High
Technical Impact
Total

Priority Score

48
Low Medium High Critical
KEV: 0
EPSS: +2
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