Docker arbitrary container run Medium

You are not sanitizing user input that is used as an argument for the Docker image. We recommend that you sanitize user input before passing it to a function call.

Detector ID
python/docker-arbitrary-container-run@v1.0
Category
Common Weakness Enumeration (CWE) external icon

Noncompliant example

1@app.route('/someUrl')
2def docker_arbitrary_container_run_noncompliant():
3    client = docker.from_env()
4    img = request.args.get("image")
5    # Noncompliant: Unsanitised user input is passed to `run`.
6    client.containers.run(img, 'echo non compliant')

Compliant example

1@app.route('/someUrl')
2def docker_arbitrary_container_run_compliant():
3    client = docker.from_env()
4    img = os.environ["image"]
5    # Compliant: Input from environment variable is passed to `run`.
6    client.containers.run(img, 'echo hello world')