Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach endpoint passing input to node-convert
-
DeliverySubmit filename/format with shell metacharacters
-
ExploitBreak out of ImageMagick exec string
-
ExecutionInjected OS command runs via child_process.exec
-
ImpactExecute 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 |
| 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 |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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 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
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
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.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
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.
Articles & Coverage 1
Executive ViewAI
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.
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
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-95148
GHSA-qgrr-fcmp-xm5c
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB