Verify the UEFI Boot Loader grub.cfg Group Ownership

Classification:

compliance

Framework:

Control:

Description

The file /boot/efi/EFI/redhat/grub.cfg should be group-owned by the root group to prevent destruction or modification of the file.

To properly set the group owner of /boot/efi/EFI/redhat/grub.cfg, run the command:

$ sudo chgrp root /boot/efi/EFI/redhat/grub.cfg

Rationale

The root group is a highly-privileged group. Furthermore, the group-owner of this file should not have any access privileges anyway.

Remediation

Shell script

The following script can be run on the host to remediate the issue.

# Remediation is applicable only in certain platforms
if [ -d /sys/firmware/efi ] && rpm --quiet -q grub2-common && { [ ! -f /.dockerenv ] && [ ! -f /run/.containerenv ]; }; then

chgrp 0 /boot/efi/EFI/redhat/grub.cfg

else
 >&2 echo 'Remediation is not applicable, nothing was done'
fi

Ansible playbook

The following playbook can be run with Ansible to remediate the issue.

- name: Gather the package facts
 package\_facts:
 manager: auto
 tags:
 - CCE-83430-9
 - CJIS-5.5.2.2
 - NIST-800-171-3.4.5
 - NIST-800-53-AC-6(1)
 - NIST-800-53-CM-6(a)
 - PCI-DSS-Req-7.1
 - configure\_strategy
 - file\_groupowner\_efi\_grub2\_cfg
 - low\_complexity
 - low\_disruption
 - medium\_severity
 - no\_reboot\_needed

- name: Test for existence /boot/efi/EFI/redhat/grub.cfg
 stat:
 path: /boot/efi/EFI/redhat/grub.cfg
 register: file\_exists
 when:
 - '"/boot/efi" in ansible\_mounts | map(attribute="mount") | list'
 - '"grub2-common" in ansible\_facts.packages'
 - ansible\_virtualization\_type not in ["docker", "lxc", "openvz", "podman", "container"]
 tags:
 - CCE-83430-9
 - CJIS-5.5.2.2
 - NIST-800-171-3.4.5
 - NIST-800-53-AC-6(1)
 - NIST-800-53-CM-6(a)
 - PCI-DSS-Req-7.1
 - configure\_strategy
 - file\_groupowner\_efi\_grub2\_cfg
 - low\_complexity
 - low\_disruption
 - medium\_severity
 - no\_reboot\_needed

- name: Ensure group owner 0 on /boot/efi/EFI/redhat/grub.cfg
 file:
 path: /boot/efi/EFI/redhat/grub.cfg
 group: '0'
 when:
 - '"/boot/efi" in ansible\_mounts | map(attribute="mount") | list'
 - '"grub2-common" in ansible\_facts.packages'
 - ansible\_virtualization\_type not in ["docker", "lxc", "openvz", "podman", "container"]
 - file\_exists.stat is defined and file\_exists.stat.exists
 tags:
 - CCE-83430-9
 - CJIS-5.5.2.2
 - NIST-800-171-3.4.5
 - NIST-800-53-AC-6(1)
 - NIST-800-53-CM-6(a)
 - PCI-DSS-Req-7.1
 - configure\_strategy
 - file\_groupowner\_efi\_grub2\_cfg
 - low\_complexity
 - low\_disruption
 - medium\_severity
 - no\_reboot\_needed