Bug 2077777

Summary: insight-clients tries to create /root/.gnupg
Product: Red Hat Enterprise Linux 9 Reporter: Pino Toscano <ptoscano>
Component: insights-clientAssignee: CSI Client Tools Bugs <csi-client-tools-bugs>
Status: NEW --- QA Contact: Pavol Kotvan <pakotvan>
Severity: high Docs Contact:
Priority: high    
Version: 9.0CC: cmarinea, fjansen, gchamoul, link, mgrunwal, miabbott, pakotvan, redakkan, stomsa, xiliang
Target Milestone: rcKeywords: Triaged
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 2077778 (view as bug list) Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Pino Toscano 2022-04-22 08:40:39 UTC
Description of problem:
insights-client validates the GPG signatures of files by running `gpg`; this causes some SELinux denials:

audit: type=1400 audit(1650615650.790:4): avc:  denied  { read } for  pid=22197 comm="gpg" name="pubring.kbx" dev="vda4" ino=16798216 scontext=system_u:system_r:insights_client_t:s0 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file permissive=0
audit: type=1400 audit(1650615650.810:5): avc:  denied  { read } for  pid=22197 comm="gpg" name="pubring.kbx" dev="vda4" ino=16798216 scontext=system_u:system_r:insights_client_t:s0 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file permissive=0
audit: type=1400 audit(1650615650.843:6): avc:  denied  { getattr } for  pid=22197 comm="gpg" path="/root/.gnupg/trustdb.gpg" dev="vda4" ino=16799856 scontext=system_u:system_r:insights_client_t:s0 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file permissive=0
audit: type=1400 audit(1650615650.843:7): avc:  denied  { write } for  pid=22197 comm="gpg" name=".gnupg" dev="vda4" ino=16798004 scontext=system_u:system_r:insights_client_t:s0 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=dir permissive=0

`gpg` tries to create its own homedir (~/.gnupg by default): this of course fails in case insights-client is invoked not manually, but e.g. by cockpit (from the subscription-manager plugin) or as systemd service.

Possible solutions to avoid this:
- create a temporary directory for `gpg`, and pass it with `--homedir` to all the `gpg` invocations
- use a Python library for validating signatures -- python3-gpg, i.e. the Python binding of GPGME [1], seems a potential good candidate, as it is already shipped in BaseOS (even in RHEL 8)

[1] https://gnupg.org/software/gpgme/index.html

Version-Release number of selected component (if applicable):
insights-client-3.1.7-8.el9.noarch

Comment 3 mabezerr 2022-08-31 14:59:56 UTC
*** Bug 2113881 has been marked as a duplicate of this bug. ***