CVE-2016-9587 Ansible is vulnerable to an improper input validation in Ansible's handling of data sent from client systems

Medium 6.6 Published Updated

An attacker controlling a managed client can send malicious facts to the Ansible server, leading to arbitrary code execution with server privileges.

Exploited in the wild
Not known
Login needed
An administrator
Attackable
Over the internet
Victim action needed
Not needed
Fix
Available

What is CVE-2016-9587?

CVE-2016-9587 is a medium-severity code injection vulnerability in Redhat Openstack, published on 24 Apr 2018. An attacker needs administrator access to exploit it, with no action from the victim.

Official description

Ansible before versions 2.1.4, 2.2.1 is vulnerable to an improper input validation in Ansible's handling of data sent from client systems. An attacker with control over a client system being managed by Ansible and the ability to send facts back to the Ansible server could use this flaw to execute arbitrary code on the Ansible server using the Ansible server privileges.

Weakness: CWE-20

Which versions are affected by CVE-2016-9587?

5 open source packages ship an affected version, including ansible. It affects 3 products.

PackageAffectedFixed in
ansible PyPIAll versions2.1.4.0, 2.2.1.0
ansible PyPIAll versions2.1.4.0
ansible PyPIAll versions2.1.4.0
ansible PyPIFrom 2.2.0.02.2.1.0
ansible PyPIFrom 2.2.0.02.2.1.0
Linux distribution packages (35)
ansible Red Hat:openshift:3.2::el7All versions0:2.2.1.0-2.el7
atomic-openshift-utils Red Hat:openshift:3.2::el7All versions0:3.2.53-1.git.0.2fefc17.el7
openshift-ansible Red Hat:openshift:3.2::el7All versions0:3.2.53-1.git.0.2fefc17.el7
openshift-ansible-docs Red Hat:openshift:3.2::el7All versions0:3.2.53-1.git.0.2fefc17.el7
openshift-ansible-filter-plugins Red Hat:openshift:3.2::el7All versions0:3.2.53-1.git.0.2fefc17.el7
openshift-ansible-lookup-plugins Red Hat:openshift:3.2::el7All versions0:3.2.53-1.git.0.2fefc17.el7
openshift-ansible-playbooks Red Hat:openshift:3.2::el7All versions0:3.2.53-1.git.0.2fefc17.el7
openshift-ansible-roles Red Hat:openshift:3.2::el7All versions0:3.2.53-1.git.0.2fefc17.el7
ansible Red Hat:openshift:3.3::el7All versions0:2.2.1.0-2.el7
atomic-openshift-utils Red Hat:openshift:3.3::el7All versions0:3.3.67-1.git.0.7c5da0c.el7
openshift-ansible Red Hat:openshift:3.3::el7All versions0:3.3.67-1.git.0.7c5da0c.el7
openshift-ansible-callback-plugins Red Hat:openshift:3.3::el7All versions0:3.3.67-1.git.0.7c5da0c.el7
openshift-ansible-docs Red Hat:openshift:3.3::el7All versions0:3.3.67-1.git.0.7c5da0c.el7
openshift-ansible-filter-plugins Red Hat:openshift:3.3::el7All versions0:3.3.67-1.git.0.7c5da0c.el7
openshift-ansible-lookup-plugins Red Hat:openshift:3.3::el7All versions0:3.3.67-1.git.0.7c5da0c.el7
openshift-ansible-playbooks Red Hat:openshift:3.3::el7All versions0:3.3.67-1.git.0.7c5da0c.el7
openshift-ansible-roles Red Hat:openshift:3.3::el7All versions0:3.3.67-1.git.0.7c5da0c.el7
ansible Red Hat:openshift:3.4::el7All versions0:2.2.1.0-2.el7
atomic-openshift-utils Red Hat:openshift:3.4::el7All versions0:3.4.67-1.git.0.14a0b4d.el7
openshift-ansible Red Hat:openshift:3.4::el7All versions0:3.4.67-1.git.0.14a0b4d.el7
openshift-ansible-callback-plugins Red Hat:openshift:3.4::el7All versions0:3.4.67-1.git.0.14a0b4d.el7
openshift-ansible-docs Red Hat:openshift:3.4::el7All versions0:3.4.67-1.git.0.14a0b4d.el7
openshift-ansible-filter-plugins Red Hat:openshift:3.4::el7All versions0:3.4.67-1.git.0.14a0b4d.el7
openshift-ansible-lookup-plugins Red Hat:openshift:3.4::el7All versions0:3.4.67-1.git.0.14a0b4d.el7
openshift-ansible-playbooks Red Hat:openshift:3.4::el7All versions0:3.4.67-1.git.0.14a0b4d.el7
openshift-ansible-roles Red Hat:openshift:3.4::el7All versions0:3.4.67-1.git.0.14a0b4d.el7
ansible Red Hat:openstack:10::el7All versions0:2.2.1.0-1.el7
ansible Red Hat:rhscon:2::el7All versions0:2.2.1.0-1.el7
ceph-ansible Red Hat:rhscon:2::el7All versions0:2.1.9-1.el7scon
ceph-installer Red Hat:rhscon:2::el7All versions0:1.2.2-1.el7scon
python-passlib Red Hat:rhscon:2::el7All versions0:1.6.5-1.1.el7
ansible Red Hat:storage:3.1:server:el7All versions0:2.2.1.0-2.el7
gdeploy Red Hat:storage:3.1:server:el7All versions0:2.0.1-8.el7rhgs
python-passlib Red Hat:storage:3.1:server:el7All versions0:1.6.5-1.el7
python2-passlib Red Hat:storage:3.1:server:el7All versions0:1.6.5-1.el7

Products include Ansible Ansible, Redhat Ansible, Redhat Openstack.

How do I fix CVE-2016-9587?

Upgrade ansible to a fixed version for your release line: 2.1.4.0 or 2.2.1.0.

Upgrade, and never evaluate templates, expressions or code built from user input. More about Code injection.

Is CVE-2016-9587 being exploited?

There is no known exploitation of CVE-2016-9587 in the wild and no public exploit code.

Public exploit code: 1 Exploit-DB entry.

Sources

Also known as ALPINE-CVE-2016-9587, DEBIAN-CVE-2016-9587, GHSA-m956-frf4-m2wr, PYSEC-2018-39, RHSA-2017:0195, RHSA-2017:0260 and 3 more.

Is CVE-2016-9587 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free