This part of the release notes:

https://puppet.com/docs/puppet/5.4/release_notes.html#fips-support

"When running Puppet 5.4.0 on a FIPS-enabled platform, Puppet modifies its 
default digest_algorithm and supported_checksum_types settings to exclude MD5, 
which is not a FIPS-compliant algorithm. By default, Puppet on FIPS uses SHA256 
when managing file resources, including filebuckets. This behavior also affects 
values returned by the fqdn_rand function."

I happened to read that as only affecting FIPS-enabled hosts given the start of 
the paragraph. NB, FIPS:

https://en.wikipedia.org/wiki/Federal_Information_Processing_Standards

At any rate, continuing. Nothing up the left sleeve, nothing up the right 
sleeve:

[root@puppetmaster1 ~]# facter fips_enabled
false

[root@puppetmaster1 ~]# cat /tmp/x.pp 
$a = fqdn_rand(60, 'abcd')
$b = fqdn_rand(60, 'bcde')
$c = fqdn_rand(60, 'cdef')
$d = fqdn_rand(60, 'defg')

notice("a is ${a}")
notice("b is ${b}")
notice("c is ${c}")
notice("d is ${d}")

With every open source puppet version from 5.0.0 to 5.3.5 (I checked with each 
one):

[root@puppetmaster1 ~]# puppet --version
5.3.5
[root@puppetmaster1 ~]# puppet apply /tmp/x.pp
Notice: Scope(Class[main]): a is 59
Notice: Scope(Class[main]): b is 33
Notice: Scope(Class[main]): c is 44
Notice: Scope(Class[main]): d is 16
Notice: Compiled catalog for puppetmaster1.me.com in environment production in 
0.06 seconds
Notice: Applied catalog in 0.20 seconds

And with the latest open source puppet:

[root@puppetmaster1 ~]# puppet --version
5.4.0
[root@puppetmaster1 ~]# puppet apply /tmp/x.pp
Notice: Scope(Class[main]): a is 43
Notice: Scope(Class[main]): b is 27
Notice: Scope(Class[main]): c is 8
Notice: Scope(Class[main]): d is 40
Notice: Compiled catalog for puppetmaster1.me.com in environment production in 
0.05 seconds
Notice: Applied catalog in 0.24 seconds

Going down the list of PUP tickets mentioning fqdn_rand(), PUP-8141 jumped out 
at me.

https://tickets.puppetlabs.com/browse/PUP-8141
https://github.com/puppetlabs/puppet/pull/6445/files

>From the fqdn_rand.rb diff, lightly edited:

-    seed = Digest::MD5.hexdigest([self['::fqdn'],max,args].join(':')).hex
+    # We are consciously not using different hash algs based on fips mode here
+    # since the randomness is not guaranteed to be predictable for a given node
+    # It just needs to be unique for a given node
+    seed = Digest::SHA256.hexdigest([self['::fqdn'],max,args].join(':')).hex

That handily explains that.

We have no fqdn_rand() usage where this change would cause unexpected behaviour 
so I'm a bit more relaxed now. Those were not the usual resources modified 
during a puppet-agent rpm update.

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/20180226180407.6vi6ivrp4d72vbqn%40iniquitous.heresiarch.ca.
For more options, visit https://groups.google.com/d/optout.

Reply via email to