npm · launch-editor
launch-editor: escapeCmdArgs() omits % escaping on Windows
launch-editor did not escape % on Windows when passing an argument to cmd. When an environment variable contained a malicious value, it was possible that that content to be executed.
Only apps that match all of the following conditions are affected:
& or %Unlike .sh files, .bat / .cmd files on Windows cannot be called directly using child_process.spawn and requires passing them as an argument of cmd.exe. To do so, launch-editor escapes the arguments passed to cmd.exe. But launch-editor did not escape % which is used for environment variables.
Because launch-editor checks if the argument matches an existing filename, the attack requires the attacker to be able to place a file.
&calc.exe to %ENV%) and call launchEditor with something%ENV%.~-38%calc.exe), they can call launchEditor with something %CMDCMDLINE:~-38%calc.exe.%CD% and the subcommand (e.g. &calc.exe ), they can call launchEditor with ./%CD%Is your project exposed to this? Stateward checks every dependency on every pull request and flags it only if your code actually reaches it.
Check my repoSources: CISA KEV (public domain), OSV.dev & GitHub Advisory Database (CC-BY-4.0), FIRST EPSS, NVD/CWE (public domain). Served live from the Stateward advisory database.