davewasmer / devcert

Local HTTPS development made easy
1.28k stars 75 forks source link

Fix remote execution vulnerability by switching from execSync to execFileSync #55

Closed zetlen closed 4 years ago

zetlen commented 4 years ago

Changes

Fixes

Currently the run() command in utils.js does not sanitize its input, and other modules invoke run() with string-concatenated arguments including user input.

A downstream dependency that uses devcert with public input might unwittingly permit remote execution on their servers by passing shell commands.

This PR changes all "shell commands" to use Node child_process.execFileSync, which can only invoke specific executables with an array of arguments, rather than passing a full string to a shell to be evaluated.