When making REST api calls, the puppet master takes YAML from an untrusted
client, deserializes it, and then calls methods on the resulting object. A YAML
payload can be crafted to cause the deserialization to construct an instance of
any class available in the ruby process, which allows an attacker to execute
code contained in the payload.
- Resolved in Puppet 2.7.22, 3.2.2
- Resolved in Puppet Enterprise 2.8.2
Credit to Ben Murphy for the responsible disclosure of this vulnerability.