Red Hat Satellite engineering is moving the tracking of its product development work on Satellite to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "Satellite project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs will be migrated starting at the end of May. If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "Satellite project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/SAT-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 1785117 - [RFE] Add functionality in foreman logging to hash-out or mark as [FILTERED] the password in /var/log/foreman-maintain/foreman-maintain.log and /var/log/foreman-installer/satellite.log file
Summary: [RFE] Add functionality in foreman logging to hash-out or mark as [FILTERED] ...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Satellite
Classification: Red Hat
Component: Installation
Version: 6.6.0
Hardware: x86_64
OS: Linux
unspecified
medium
Target Milestone: 6.8.0
Assignee: Lukas Zapletal
QA Contact: Devendra Singh
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2019-12-19 08:05 UTC by Kaushik Sajjan Agarwal
Modified: 2023-09-18 00:19 UTC (History)
5 users (show)

Fixed In Version: foreman-2.0.0-0
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
: 1847951 (view as bug list)
Environment:
Last Closed: 2020-10-27 12:59:35 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Foreman Issue Tracker 28553 0 Normal Closed Foreman debug gathers --password 'xyz' 2021-01-18 13:10:18 UTC
Red Hat Product Errata RHSA-2020:4366 0 None None None 2020-10-27 12:59:51 UTC

Description Kaushik Sajjan Agarwal 2019-12-19 08:05:39 UTC
Description of problem:
    -  Satellite log files (/var/log/foreman-maintain/foreman-maintain.log and /var/log/foreman-installer/satellite.log) captures password in plain text:

      /var/log/foreman-maintain/foreman-maintain.log
      [33m/usr/share/candlepin/cpdb --update --database '//localhost/candlepin' --user 'candlepin' --password 'XXXXXXXXXXXXXXXXXXX' finished successfully!

      /var/log/foreman-installer/satellite.log
      Example entries:
      [DEBUG 2019-12-15T11:xx:54 main]  Executing: 'keytool -list -keystore /etc/candlepin/certs/amqp/candlepin.jks -storepass XXXXXXXXXXXXXXXXXX -alias amqp-client'
      [DEBUG 2019-12-15T11:29:54 main]  /Stage[main]/Certs::Candlepin/Exec[import client certificate into Candlepin keystore]: 'openssl pkcs12 -export -name amqp-client -in /etc/pki/katello/certs/java-client.crt -inkey /etc/pki/katello/private/java-client.key -out /tmp/keystore.p12 -passout file:/etc/pki/katello/keystore_password-file && keytool -importkeystore -destkeystore /etc/candlepin/certs/amqp/candlepin.jks -srckeystore /tmp/keystore.p12 -srcstoretype pkcs12 -alias amqp-client -storepass XXXXXXXXXXXXXXXX -srcstorepass YYYYYYYYYYYYYYYYY -noprompt && rm /tmp/keystore.p12' won't be executed because of failed check 'unless'
      [DEBUG 2019-12-15T11:29:15 main]    proxy_password = XXXXXXXXXXXXX


Version-Release number of selected component (if applicable): NA


Steps to Reproduce RFE:
1. Checked entries in /var/log/foreman-maintain/foreman-maintain.log and /var/log/foreman-installer/satellite.log

Actual results:

 /var/log/foreman-maintain/foreman-maintain.log
      [33m/usr/share/candlepin/cpdb --update --database '//localhost/candlepin' --user 'candlepin' --password 'XXXXXXXXXXXXXXXXXXX' finished successfully!

      /var/log/foreman-installer/satellite.log
      Example entries:
      [DEBUG 2019-12-15T11:xx:54 main]  Executing: 'keytool -list -keystore /etc/candlepin/certs/amqp/candlepin.jks -storepass XXXXXXXXXXXXXXXXXX -alias amqp-client'
      [DEBUG 2019-12-15T11:29:54 main]  /Stage[main]/Certs::Candlepin/Exec[import client certificate into Candlepin keystore]: 'openssl pkcs12 -export -name amqp-client -in /etc/pki/katello/certs/java-client.crt -inkey /etc/pki/katello/private/java-client.key -out /tmp/keystore.p12 -passout file:/etc/pki/katello/keystore_password-file && keytool -importkeystore -destkeystore /etc/candlepin/certs/amqp/candlepin.jks -srckeystore /tmp/keystore.p12 -srcstoretype pkcs12 -alias amqp-client -storepass XXXXXXXXXXXXXXXX -srcstorepass YYYYYYYYYYYYYYYYY -noprompt && rm /tmp/keystore.p12' won't be executed because of failed check 'unless'
      [DEBUG 2019-12-15T11:29:15 main]    proxy_password = XXXXXXXXXXXXX


Expected results:

Passwords in the log file should not be stored in plain text as it becomes a major security threat.

Comment 4 Bryan Kearney 2019-12-20 11:05:28 UTC
Moving this bug to POST for triage into Satellite 6 since the upstream issue https://projects.theforeman.org/issues/28553 has been resolved.

Comment 5 Pavel Moravec 2019-12-20 22:15:42 UTC
sosreport needs a fix like:

diff --git a/sos/plugins/foreman.py b/sos/plugins/foreman.py
index c1546eae..41f7986a 100644
--- a/sos/plugins/foreman.py
+++ b/sos/plugins/foreman.py
@@ -241,8 +241,8 @@ class Foreman(Plugin):
         return _dbcmd % (self.dbhost, csvformat, quote(query))
 
     def postproc(self):
-        satreg = r"((foreman.*)?(\"::(foreman(.*?)|katello).*)?(::(.*)::.*" \
-              r"(passw|cred|token|secret|key).*(\")?:))(.*)"
+        satreg = r"((foreman.*)?(\"::(foreman(.*?)|katello).*)?((::(.*)::.*" \
+              r"(passw|cred|token|secret|key).*(\")?:)|(storepass )))(.*)"
         self.do_path_regex_sub(
             "/var/log/foreman-installer/sat*",
             satreg,
@@ -265,7 +265,7 @@ class Foreman(Plugin):
             r"\1********")
         self.do_path_regex_sub(
             "/var/log/foreman-maintain/foreman-maintain.log*",
-            r"((passw|cred|token|secret)=)(.*)",
+            r"(((passw|cred|token|secret)=)|(password ))(.*)",
             r"\1********")
         self.do_path_regex_sub(
             "/var/log/%s*/foreman-ssl_access_ssl.log*" % self.apachepkg,


Will clone BZ to sos and raise upstream PR for it.

Comment 7 Lukas Zapletal 2020-01-07 14:50:50 UTC
If the concern is the installer, then I am changing to it. I think there is some filtering mechanism in KAFO.

Comment 9 Bryan Kearney 2020-01-07 15:07:56 UTC
Upstream bug assigned to lzap

Comment 10 Bryan Kearney 2020-01-07 15:08:02 UTC
Moving this bug to POST for triage into Satellite 6 since the upstream issue https://projects.theforeman.org/issues/28553 has been resolved.

Comment 16 Devendra Singh 2020-06-17 12:48:23 UTC
Build Version: 6.8 Snap4

Verification point:

* Collected the foreman-debug logs
* Checked the satellite.log, foreman-maintain log, and observed all the passwords replaced with FILTERED

Exec[candlepin-generate-ssl-keystore](provider=posix): Executing check 'keytool -list -keystore /etc/candlepin/certs/keystore -storepass +FILTERED+ -alias tomcat | grep $(openssl x509 -noout -fingerprint -in /etc/pki/katello/certs/katello-tomcat.crt | cut -d '=' -f 2)'
[DEBUG 2020-06-15T05:58:39 main]  Executing: 'keytool -list -keystore /etc/candlepin/certs/keystore -storepass +FILTERED+ -alias tomcat | grep $(openssl x509 -noout -fingerprint -in /etc/pki/katello/certs/katello-tomcat.crt | cut -d '=' -f 2)'
[DEBUG 2020-06-15T05:58:40 main]  Exec[import CA into Candlepin truststore](provider=posix): Executing check 'keytool -list -keystore /etc/candlepin/certs/keystore -storepass +FILTERED+ -alias candlepin-ca'
satellite.6.log:[DEBUG 2020-06-15T05:58:40 main]  Executing: 'keytool -list -keystore /etc/candlepin/certs/keystore -storepass +FILTERED+ -alias candlepin-ca'
Adding relationship from Exec[generate-nss-password+FILTERED+ to File[/etc/pki/katello/nssdb/nss_db_password+FILTERED+ with 'before'
Adding relationship from File[/etc/pki/katello/nssdb/nss_db_password+FILTERED+ to Exec[create-nss-db] with 'before'
/File[/etc/pki/katello/keystore_password+FILTERED+ Found seluser default 'system_u' for /etc/pki/katello/keystore_password+FILTERED+
/File[/etc/pki/katello/keystore_password+FILTERED+ Found selrole default 'object_r' for /etc/pki/katello/keystore_password+FILTERED+
/File[/etc/pki/katello/keystore_password+FILTERED+ Found seltype default 'cert_t' for /etc/pki/katello/keystore_password+FILTERED+
/File[/etc/pki/katello/keystore_password+FILTERED+ Found selrange default 's0' for /etc/pki/katello/keystore_password+FILTERED+
/File[/etc/pki/katello/nssdb/nss_db_password+FILTERED+ Found seluser default 'system_u' for /etc/pki/katello/nssdb/nss_db_password+FILTERED+
/File[/etc/pki/katello/nssdb/nss_db_password+FILTERED+ Found selrole default 'object_r' for /etc/pki/katello/nssdb/nss_db_password+FILTERED+
/File[/etc/pki/katello/nssdb/nss_db_password+FILTERED+ Found seltype default 'cert_t' for /etc/pki/katello/nssdb/nss_db_password+FILTERED+
/File[/etc/pki/katello/nssdb/nss_db_password+FILTERED+ Found selrange default 's0' for /etc/pki/katello/nssdb/nss_db_password+FILTERE

foreman-maintain.log

s::Katello::Host::HypervisorsUpdate','Actions::Foreman::Host::ImportFacts','Actions::Candlepin::ListenOnCandlepinEvents','Actions::Katello::EventQueue::Monitor')\n) TO STDOUT WITH CSV HEADER"
DEBUG -- : Running command PGPASSWORD=+FILTERED+ psql -h localhost  -p 5432 -U foreman -d foreman with stdin "SELECT 1 as ping"
DEBUG -- : Running command PGPASSWORD=+FILTERED+ psql -h localhost  -p 5432 -U foreman -d foreman with stdin "COPY (     SELECT count(*) AS count FROM foreman_tasks_tasks WHERE foreman_tasks_tasks.state = 'planning' AND foreman_tasks_tasks.label IN ('Actions::Katello::Host::GenerateApplicability','Actions::Katello::RepositorySet::ScanCdn','Actions::Katello::Host::Hypervisors','Actions::Katello::Host::HypervisorsUpdate','Actions::Foreman::Host::ImportFacts','Actions::Candlepin::ListenOnCandlepinEvents','Actions::Katello::EventQueue::Monitor')\n) TO STDOUT WITH CSV HEADER"
DEBUG -- : Running command PGPASSWORD=+FILTERED+ psql -h localhost  -p 5432 -U foreman -d foreman with stdin "SELECT 1 as ping"
DEBUG -- : Running command PGPASSWORD=+FILTERED+ psql -h localhost  -p 5432 -U foreman -d foreman with stdin "COPY (          SELECT DISTINCT first.filter_id,\n

Comment 18 Pavel Moravec 2020-06-17 13:26:50 UTC
I can confirm that sos-3.9-2 (a candidate build for RHEL7.9) will scrub the passwords the same way:

# grep password /var/tmp/sosreport-pmoravec-sat66-on-rhev-2020-06-17-kjrzxin/var/log/foreman-maintain/foreman-maintain.log
--driver=org.postgresql.Driver --classpath=/var/lib/tomcat/webapps/candlepin/WEB-INF/lib/postgresql-42.2.2.jar:/var/lib/tomcat/webapps/candlepin/WEB-INF/classes/ --changeLogFile=db/changelog/changelog-update.xml --url=jdbc:postgresql://localhost/candlepin --username=$DBUSERNAME --password=$DBPASSWORD --logLevel=severe
/usr/share/candlepin/cpdb --update --database '//localhost/candlepin' --user 'candlepin' --password ********
Installing             Done                                               [100%] [...........................................................................................................]
--driver=org.postgresql.Driver --classpath=/var/lib/tomcat/webapps/candlepin/WEB-INF/lib/postgresql-42.2.2.jar:/var/lib/tomcat/webapps/candlepin/WEB-INF/classes/ --changeLogFile=db/changelog/changelog-validate.xml --url=jdbc:postgresql://localhost:5432/candlepin --username=$DBUSERNAME --password=$DBPASSWORD --logLevel=debug
--driver=org.postgresql.Driver --classpath=/var/lib/tomcat/webapps/candlepin/WEB-INF/lib/postgresql-42.2.2.jar:/var/lib/tomcat/webapps/candlepin/WEB-INF/classes/ --changeLogFile=db/changelog/changelog-update.xml --url=jdbc:postgresql://localhost/candlepin --username=$DBUSERNAME --password=$DBPASSWORD --logLevel=severe
/usr/share/candlepin/cpdb --update --database '//localhost/candlepin' --user 'candlepin' --password ********
Installing             Done                                               [100%] [...........................................................................................................]
--driver=org.postgresql.Driver --classpath=/var/lib/tomcat/webapps/candlepin/WEB-INF/lib/postgresql-42.2.2.jar:/var/lib/tomcat/webapps/candlepin/WEB-INF/classes/ --changeLogFile=db/changelog/changelog-validate.xml --url=jdbc:postgresql://localhost:5432/candlepin --username=$DBUSERNAME --password=$DBPASSWORD --logLevel=debug
--driver=org.postgresql.Driver --classpath=/var/lib/tomcat/webapps/candlepin/WEB-INF/lib/postgresql-42.2.2.jar:/var/lib/tomcat/webapps/candlepin/WEB-INF/classes/ --changeLogFile=db/changelog/changelog-update.xml --url=jdbc:postgresql://localhost/candlepin --username=$DBUSERNAME --password=$DBPASSWORD --logLevel=severe
/usr/share/candlepin/cpdb --update --database '//localhost/candlepin' --user 'candlepin' --password ********
#

and:

# grep storepass /var/tmp/sosreport-pmoravec-sat66-on-rhev-2020-06-17-kjrzxin/var/log/foreman-installer/satellite.log
[DEBUG 2020-06-17T12:23:20 main]  Exec[import CA into Candlepin truststore](provider=posix): Executing check 'keytool -list -keystore /etc/candlepin/certs/keystore -storepass  ********
[DEBUG 2020-06-17T12:23:20 main]  Executing: 'keytool -list -keystore /etc/candlepin/certs/keystore -storepass  ********
[DEBUG 2020-06-17T12:23:20 main]  /Stage[main]/Certs::Candlepin/Exec[import CA into Candlepin truststore]: 'keytool -import -trustcacerts -v -keystore /etc/candlepin/certs/keystore -storepass  ********
[DEBUG 2020-06-17T12:23:20 main]  Exec[import CA into Candlepin AMQP truststore](provider=posix): Executing check 'keytool -list -keystore /etc/candlepin/certs/amqp/candlepin.truststore -storepass  ********
[DEBUG 2020-06-17T12:23:20 main]  Executing: 'keytool -list -keystore /etc/candlepin/certs/amqp/candlepin.truststore -storepass  ********
[DEBUG 2020-06-17T12:23:20 main]  /Stage[main]/Certs::Candlepin/Exec[import CA into Candlepin AMQP truststore]: 'keytool -import -v -keystore /etc/candlepin/certs/amqp/candlepin.truststore -storepass  ********
[DEBUG 2020-06-17T12:23:20 main]  Exec[import client certificate into Candlepin keystore](provider=posix): Executing check 'keytool -list -keystore /etc/candlepin/certs/amqp/candlepin.jks -storepass  ********
[DEBUG 2020-06-17T12:23:20 main]  Executing: 'keytool -list -keystore /etc/candlepin/certs/amqp/candlepin.jks -storepass  ********
[DEBUG 2020-06-17T12:23:21 main]  /Stage[main]/Certs::Candlepin/Exec[import client certificate into Candlepin keystore]: 'openssl pkcs12 -export -name amqp-client -in /etc/pki/katello/certs/java-client.crt -inkey /etc/pki/katello/private/java-client.key -out /tmp/keystore.p12 -passout file:/etc/pki/katello/keystore_password-file && keytool -importkeystore -destkeystore /etc/candlepin/certs/amqp/candlepin.jks -srckeystore /tmp/keystore.p12 -srcstoretype pkcs12 -alias amqp-client -storepass  ********
#

Comment 19 Pavel Moravec 2020-07-03 12:51:43 UTC
Hello,
in cloned 1785813, we currently figured out that RHEL7.9 candidate build does not obfuscate:

[DEBUG 2019-12-15T11:29:15 main]    proxy_password = XXXXXXXXXXXXX

in /var/log/foreman-installer/satellite* logfiles

These lines appear in an output of "subscription-manager config" command.

We should fix it, for sure. But: same password (rhsm proxy password) was just identified as not obfuscated when collecting /etc/rhsm/rhsm.conf .

Is it sufficient to:
- raise a new BZ to add obfuscations of both places of the proxy_password (such a fix will go to RHEL8.4 only)
- mark this and cloned 1785813 as verified (despite we skip fixing the one string type)

?

Comment 22 errata-xmlrpc 2020-10-27 12:59:35 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (Important: Satellite 6.8 release), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHSA-2020:4366

Comment 23 Red Hat Bugzilla 2023-09-18 00:19:25 UTC
The needinfo request[s] on this closed bug have been removed as they have been unresolved for 120 days


Note You need to log in before you can comment on or make changes to this bug.