easy-pdf-merge: OS command injection via merge function
Summary
The Node.js module easy-pdf-merge versions 0.1.0 through 0.2.6 passes source paths, destination path and the maxHeap option to child_process.exec(), which runs them through a shell. An attacker who can influence file names or options can inject shell metacharacters and execute arbitrary commands with the privileges of the Node.js process. The risk applies only if an application passes untrusted input to the module; the package is no longer maintained and no fixed version is available.
Affected
- easy-pdf-merge 0.1.0 through 0.2.6
- Default configuration is not affected; the flaw is triggered by untrusted input in source paths, destination path or maxHeap option
Fixed in
Unknown. No fixed release is available; the npm registry lists 0.2.6 as the latest version.
Workaround
- Do not pass user-supplied file names, paths or options to the module
- Use fixed or generated file names and validate paths against an allowlist
- Run the affected service with least privilege, in a container or sandbox, without access to secrets
Exploitation
- CISA SSVC: exploitation status 'poc', automatable: no, technical impact: total
- Not listed as known exploited; no exploitation in the wild found
- A proof of concept existed in 2020 (referenced in PR #28)
- EPSS 0.01497
Our recommendation
- Identify applications that depend on easy-pdf-merge, for example with 'npm ls easy-pdf-merge'
- Replace the package with a maintained PDF library, or remove it if no longer needed
- Until replaced, do not let untrusted users influence file names, paths or options
- Monitor the affected application for unexpected child processes
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- CVE-2020-37279 GitHub repository easy-pdf-merge github.com
- PDFMerger.js at v0.2.6 (vulnerable code) github.com
- VulnCheck advisory www.vulncheck.com
- OSV record CVE-2020-37279 osv.dev
- GitHub pull request #28 github.com
Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 31 Oct 2026, 04:41.
Original description (NVD)
easy-pdf-merge 0.1.0 through 0.2.6 contains an OS command injection vulnerability that allows attackers to execute commands by injecting shell metacharacters into source paths, destination path, or maxHeap option. Attackers can supply file names or options containing double quotes, semicolons, $() or backticks, which child_process.exec() runs through a shell with the Node.js process privileges.
NVD references (6)
- https://github.com/karuppiah7890/easy-pdf-merge
- https://github.com/karuppiah7890/easy-pdf-merge/blob/v0.2.6/source/lib/PDFMerger.js#L71-L75
- https://github.com/karuppiah7890/easy-pdf-merge/pull/28
- https://github.com/karuppiah7890/easy-pdf-merge/pull/45
- https://www.vulncheck.com/advisories/easy-pdf-merge-0.1.0-through-0.2.6-os-command-injection-via-merge-functi…
- https://github.com/karuppiah7890/easy-pdf-merge/pull/28
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.
Affected? We can help.
We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.
