The Puppet Labs team has identified a security vulnerability in Puppet
version 2.6.0 and later.  The vulnerability allows, under certain
circumstances, authenticated Puppet nodes to be able to view or
manipulate resources on other Puppet 2.6.x nodes, including the Puppet
Master.

Versions prior to 2.6.0 are not vulnerable.

Puppet Labs is releasing Puppet 2.6.4 to address this issue.  Adding an
auth.conf configuration file if one is not present in your environment
will also provide protection from this issue.

$ cd /etc/puppet
$ wget --no-check-certificate
https://github.com/puppetlabs/puppet/raw/2.6.x/conf/auth.conf

The checksum of this file should be: c34e20b7904b66ea97328f1a3846a848

Detail
------

If a given node or server is missing an auth.conf file in /etc/puppet,
they may be vulnerable to information disclosure or resource
manipulation from authenticated Puppet nodes. In both cases the scope is
limited to the privileges of the remote Puppet process.

Minimum conditions for server

* Running 2.6.0, 2.6.1, 2.6.2, 2.6.3 or any other 2.6.x release missing
the auth.conf file
* Attacker has access to SSL credentials of another node.

Minimum conditions for client

* Running 2.6.0, 2.6.1, 2.6.2, 2.6.3 or any other 2.6.x release missing
auth.conf file
* Attacker has access to SSL credentials of another node.
* Puppet client is running as a daemon (not --onetime)
* Puppet configured in “listen” mode with --listen
* Attacker’s host is allowed to connect via namespaceauth.conf

Vulnerable Install Methods

* Install from gems
* Install from Mac packages
* Install from source
* Install from Solaris Blastwave packages

Not Vulnerable Install Methods

* Install from Debian debs
* Install from Red Hat RPMs

Note: If you remove auth.conf, you are vulnerable, regardless of install
method.

To determine if you are vulnerable you can execute the puppet resource
command, like so:

$ puppet resource -H attack.target.mydomain user puppet

Secured (auth.conf present):

(Attack against server requires puppetport specification, against client
does not, assuming default ports. )

$ puppet resource -H attack.target.mydomain user puppet --puppetport 8140
/usr/lib/ruby/1.8/puppet/indirector/rest.rb:57:in `deserialize': Error
403 on SERVER: Forbidden request: attack.host.mydomain (x.x.x.x) access
to /resource/user/ [search] authenticated  at line 93 (Net::HTTPError)

Insecure (auth.conf missing):

You get the user info:

$ puppet resource -H attack.target.mydomain user puppet
user { 'puppet':
    comment => 'Puppet configuration management daemon,,,',    uid => '104',
    gid => '107',
    home => '/var/lib/puppet',
    shell => '/bin/false',
    password => '*',
    ensure => 'present'
}

If you have any questions, comments or concerns about this issue please
email - secur...@puppetlabs.com.

Regards

James Turnbull

-- 
Puppet Labs - http://www.puppetlabs.com
C: 503-734-8571

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-us...@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to