Quantum Secular Labs / Blog / Advisories

CVE-2017-2292: Puppet Mcollective: Insecure deserialization

CVE-2017-2292 is rated critical with a CVSS v3.0 base score of 9.0 and affects Puppet Mcollective. Per its scoring, it can be exploited over the network, without any user interaction.

Vulnerability description

Versions of MCollective prior to 2.10.4 deserialized YAML from agents without calling safe_load, allowing the potential for arbitrary code execution on the server. The fix for this is to call YAML.safe_load on input. This has been tested in all Puppet-supplied MCollective plugins, but there is a chance that third-party plugins could rely on this insecure behavior.

Severity breakdown

CVSS v3.0 9.0: CVSS:3.0/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:L

  • Attack vector: Network. Exploitable remotely over the network, with no need for local or physical access.
  • Attack complexity: Low. No special conditions; the attack can be repeated reliably.
  • Privileges required: High. Administrative-level privileges are needed.
  • User interaction: None. No action from any user is needed.
  • Scope: Changed. Impact reaches beyond the vulnerable component to other resources.
  • Confidentiality impact: High. Total loss of confidentiality; sensitive data can be fully disclosed.
  • Integrity impact: High. Total loss of integrity; data or system state can be fully modified.
  • Availability impact: Low. Reduced performance or intermittent interruption.

Underlying weakness

CWE-502: Deserialization of Untrusted Data

The product deserializes untrusted data without sufficiently ensuring that the resulting data will be valid.

Affected products

  • Puppet Mcollective: up to and including 2.10.3

References