Command Injection Affecting madge package, versions <4.0.1
Threat Intelligence
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-MADGE-1082875
- published 9 Mar 2021
- disclosed 5 Mar 2021
- credit Alessio Della Libera (d3lla)
Introduced: 5 Mar 2021
CVE-2021-23352 Open this link in a new tabHow to fix?
Upgrade madge
to version 4.0.1 or higher.
Overview
madge is a Madge is a developer tool for generating a visual graph of your module dependencies, finding circular dependencies, and give you other useful info.
Affected versions of this package are vulnerable to Command Injection. It is possible to specify a custom Graphviz path via the graphVizPath
option parameter which when the .image()
, .svg()
or .dot()
functions are called, is executed by the childprocess.exec
function.
PoC
1. install `madge` module: `npm i madge`
2. run the following poc.js:
// Example taken from: https://github.com/pahen/madge#svg
const madge = require('madge');
madge('..', {graphVizPath: "touch HELLO;"})
.then((res) => res.svg())
.then((writtenImagePath) => {
console.log('Image written to ' + writtenImagePath);
});