Blame SOURCES/scap-security-guide-0.1.58-rhel8_stig_08_010350-PR_7231.patch

889f2b
From f7bb6fc32091ad9d10ec8253505086670eb135ba Mon Sep 17 00:00:00 2001
889f2b
From: Carlos Matos <cmatos@redhat.com>
889f2b
Date: Mon, 12 Jul 2021 10:06:41 -0400
889f2b
Subject: [PATCH 1/4] Initial commit for RHEL-08-010350 STIG rule
889f2b
889f2b
---
889f2b
 .../ansible/shared.yml                        |  2 +-
889f2b
 .../bash/shared.sh                            |  2 +-
889f2b
 .../oval/shared.xml                           | 44 +++++++++++++------
889f2b
 .../rule.yml                                  | 26 ++++++-----
889f2b
 .../tests/correct_group.pass.sh               |  2 +-
889f2b
 .../tests/incorrect_group.fail.sh             |  8 +++-
889f2b
 products/rhel8/profiles/stig.profile          |  1 +
889f2b
 shared/references/cce-redhat-avail.txt        |  1 -
889f2b
 .../data/profile_stability/rhel8/stig.profile |  1 +
889f2b
 .../profile_stability/rhel8/stig_gui.profile  |  1 +
889f2b
 10 files changed, 57 insertions(+), 31 deletions(-)
889f2b
889f2b
diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/ansible/shared.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/ansible/shared.yml
889f2b
index f90c8e26b15..e0bb6b0dc1a 100644
889f2b
--- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/ansible/shared.yml
889f2b
+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/ansible/shared.yml
889f2b
@@ -1,4 +1,4 @@
889f2b
-# platform = multi_platform_sle
889f2b
+# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora
889f2b
 # reboot = false
889f2b
 # strategy = restrict
889f2b
 # complexity = high
889f2b
diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/bash/shared.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/bash/shared.sh
889f2b
index fba25be6132..d5fb89487d5 100644
889f2b
--- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/bash/shared.sh
889f2b
+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/bash/shared.sh
889f2b
@@ -1,4 +1,4 @@
889f2b
-# platform = multi_platform_sle
889f2b
+# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora
889f2b
 
889f2b
 find /lib \
889f2b
 /lib64 \
889f2b
diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml
889f2b
index 00f733ddc78..e3d64a8390e 100644
889f2b
--- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml
889f2b
+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml
889f2b
@@ -1,27 +1,45 @@
889f2b
 <def-group>
889f2b
-  <definition class="compliance" id="root_permissions_syslibrary_files" version="2">
889f2b
+  <definition class="compliance" id="root_permissions_syslibrary_files" version="1">
889f2b
     {{{ oval_metadata("
889f2b
-        Checks that system-wide library files in /lib, /lib64, /usr/lib, /usr/lib64
889f2b
-        are owned by root.
889f2b
+        Checks that /lib, /lib64, /usr/lib, /usr/lib64, and
889f2b
+        objects therein, are group-owned by root.
889f2b
       ") }}}
889f2b
-    <criteria >
889f2b
-      <criterion test_ref="test_root_permissions_for_syslibrary_files" />
889f2b
+    <criteria operator="AND">
889f2b
+      <criterion test_ref="test_group_ownership_lib_dir" />
889f2b
+      <criterion test_ref="test_group_ownership_lib_files" />
889f2b
     </criteria>
889f2b
   </definition>
889f2b
 
889f2b
-  <unix:file_test  check="all" check_existence="none_exist" comment="test if system-wide files have root permissions" id="test_root_permissions_for_syslibrary_files" version="1">
889f2b
-    <unix:object object_ref="root_permissions_for_system_wide_library_files" />
889f2b
+  <unix:file_test  check="all" check_existence="none_exist" comment="library directories gid root" id="test_group_ownership_lib_dir" version="1">
889f2b
+    <unix:object object_ref="object_group_ownership_lib_dir" />
889f2b
   </unix:file_test>
889f2b
 
889f2b
-  <unix:file_object comment="system-wide directories" id="root_permissions_for_system_wide_library_files" version="1">
889f2b
-    
889f2b
-        are owned by root. -->
889f2b
-    <unix:path operation="pattern match">^\/lib(64)?|^\/usr\/lib(64)?</unix:path >    
889f2b
+  <unix:file_test  check="all" check_existence="none_exist" comment="library files gid root" id="test_group_ownership_lib_files" version="1">
889f2b
+    <unix:object object_ref="object_group_ownership_lib_files" />
889f2b
+  </unix:file_test>
889f2b
+
889f2b
+  <unix:file_object comment="library directories" id="object_group_ownership_lib_dir" version="1">
889f2b
+    
889f2b
+    <unix:path operation="pattern match">^\/lib(|64)?\/|^\/usr\/lib(|64)?\/</unix:path>
889f2b
+    <unix:filename xsi:nil="true" />
889f2b
+    <filter action="include">state_group_ownership_libraries_not_root</filter>
889f2b
+    <filter action="exclude">group_dir_perms_state_symlink</filter>
889f2b
+  </unix:file_object>
889f2b
+
889f2b
+  <unix:file_object comment="library files" id="object_group_ownership_lib_files" version="1">
889f2b
+    
889f2b
+    <unix:path operation="pattern match">^\/lib(|64)?\/|^\/usr\/lib(|64)?\/</unix:path>
889f2b
     <unix:filename operation="pattern match">^.*$</unix:filename>
889f2b
-    <filter action="include">group_permissions_for_system_wide_files_are_not_root</filter>
889f2b
+   <filter action="include">state_group_ownership_libraries_not_root</filter>
889f2b
+   <filter action="exclude">group_dir_perms_state_symlink</filter>
889f2b
   </unix:file_object>
889f2b
 
889f2b
-  <unix:file_state id="group_permissions_for_system_wide_files_are_not_root" version="1" >
889f2b
+  <unix:file_state id="state_group_ownership_libraries_not_root" version="1">
889f2b
     <unix:group_id datatype="int" operation="not equal">0</unix:group_id>
889f2b
   </unix:file_state>
889f2b
+
889f2b
+  <unix:file_state id="group_dir_perms_state_symlink" version="1">
889f2b
+    <unix:type operation="equals">symbolic link</unix:type>
889f2b
+  </unix:file_state>
889f2b
+
889f2b
 </def-group>
889f2b
diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/rule.yml
889f2b
index ff905dd08d..83371b8b9b 100644
889f2b
--- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/rule.yml
889f2b
+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/rule.yml
889f2b
@@ -1,6 +1,6 @@
889f2b
 documentation_complete: true
889f2b
 
889f2b
-prodtype: sle12,sle15
889f2b
+prodtype: sle12,sle15,rhel8,fedora
889f2b
 
889f2b
 title: |-
889f2b
     Verify the system-wide library files in directories
889f2b
@@ -17,18 +17,18 @@ description: |-
889f2b
     All system-wide shared library files should be protected from unauthorised
889f2b
     access. If any of these files is not owned by root, correct its owner with
889f2b
     the following command:
889f2b
-    
$ sudo chgrp root DIR
889f2b
+    
$ sudo chgrp root FILE
889f2b
 
889f2b
 rationale: |-
889f2b
-  If the operating system were to allow any user to make changes to software libraries,
889f2b
-  then those changes might be implemented without undergoing the appropriate testing and
889f2b
-  approvals that are part of a robust change management process.
889f2b
+    If the operating system were to allow any user to make changes to software libraries,
889f2b
+    then those changes might be implemented without undergoing the appropriate testing and
889f2b
+    approvals that are part of a robust change management process.
889f2b
 
889f2b
-  This requirement applies to operating systems with software libraries that are
889f2b
-  accessible and configurable, as in the case of interpreted languages. Software libraries
889f2b
-  also include privileged programs which execute with escalated privileges. Only qualified
889f2b
-  and authorized individuals must be allowed to obtain access to information system components
889f2b
-  for purposes of initiating changes, including upgrades and modifications.
889f2b
+    This requirement applies to operating systems with software libraries that are
889f2b
+    accessible and configurable, as in the case of interpreted languages. Software libraries
889f2b
+    also include privileged programs which execute with escalated privileges. Only qualified
889f2b
+    and authorized individuals must be allowed to obtain access to information system components
889f2b
+    for purposes of initiating changes, including upgrades and modifications.
889f2b
 
889f2b
 severity: medium
889f2b
 
889f2b
@@ -45,7 +45,7 @@ references:
889f2b
     stigid@sle12: SLES-12-010875
889f2b
     stigid@sle15: SLES-15-010355
889f2b
 
889f2b
-ocil_clause: 'any system wide library directory is returned'
889f2b
+ocil_clause: 'system wide library files are not group owned by root'
889f2b
 
889f2b
 ocil: |-
889f2b
     System-wide library files are stored in the following directories:
889f2b
@@ -54,6 +54,6 @@ ocil: |-
889f2b
     /usr/lib
889f2b
     /usr/lib64
889f2b
     
889f2b
-    To find if system-wide library files stored in these directories are group-owned by
889f2b
+    To find if system-wide library files stored in these directories are not group-owned by
889f2b
     root run the following command for each directory DIR:
889f2b
     
$ sudo find -L DIR ! -group root -type f 
889f2b
diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh
889f2b
index 7a8e65b4f3a..8722c2add65 100644
889f2b
--- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh
889f2b
+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh
889f2b
@@ -4,6 +4,6 @@ for SYSLIBDIRS in /lib /lib64 /usr/lib /usr/lib64
889f2b
 do
889f2b
     if [[ -d $SYSLIBDIRS  ]]
889f2b
     then
889f2b
-        find $SYSLIBDIRS ! -group root -type f -exec chgrp root '{}' \;
889f2b
+        find $SYSLIBDIRS ! -group root -exec chgrp root '{}' \;
889f2b
     fi
889f2b
 done
889f2b
diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh
889f2b
index a4b99a9da14..1079046d14e 100644
889f2b
--- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh
889f2b
+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh
889f2b
@@ -1,6 +1,10 @@
889f2b
 #!/bin/bash
889f2b
-  
889f2b
-for TESTFILE in /lib/test_me /lib64/test_me /usr/lib/test_me /usr/lib64/test_me
889f2b
+
889f2b
+# There is a high probability that there will be nested subdirectories within the
889f2b
+# shared system library directories, therefore we should test to make sure we
889f2b
+# cover this. - cmm
889f2b
+test -d /usr/lib/test_dir || mkdir -p /usr/lib/test_dir && chown nobody.nobody /usr/lib/test_dir
889f2b
+for TESTFILE in /lib/test_me /lib64/test_me /usr/lib/test_me /usr/lib64/test_me /usr/lib/test_dir/test_me
889f2b
 do
889f2b
    if [[ ! -f $TESTFILE ]]
889f2b
    then
889f2b
diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile
889f2b
index 2508008d511..9569b2ad629 100644
889f2b
--- a/products/rhel8/profiles/stig.profile
889f2b
+++ b/products/rhel8/profiles/stig.profile
889f2b
@@ -207,6 +207,7 @@ selections:
889f2b
     - file_ownership_library_dirs
889f2b
 
889f2b
     # RHEL-08-010350
889f2b
+    - root_permissions_syslibrary_files
889f2b
 
889f2b
     # RHEL-08-010360
889f2b
     - package_aide_installed
889f2b
diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt
889f2b
index f139d2ed76f..e0eb5ac045c 100644
889f2b
--- a/shared/references/cce-redhat-avail.txt
889f2b
+++ b/shared/references/cce-redhat-avail.txt
889f2b
@@ -662,7 +662,6 @@ CCE-86518-8
889f2b
 CCE-86520-4
889f2b
 CCE-86521-2
889f2b
 CCE-86522-0
889f2b
-CCE-86523-8
889f2b
 CCE-86524-6
889f2b
 CCE-86525-3
889f2b
 CCE-86526-1
889f2b
diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile
889f2b
index 765487c6f16..ebe7a91f45d 100644
889f2b
--- a/tests/data/profile_stability/rhel8/stig.profile
889f2b
+++ b/tests/data/profile_stability/rhel8/stig.profile
889f2b
@@ -221,6 +221,7 @@ selections:
889f2b
 - postfix_client_configure_mail_alias
889f2b
 - require_emergency_target_auth
889f2b
 - require_singleuser_auth
889f2b
+- root_permissions_syslibrary_files
889f2b
 - rsyslog_cron_logging
889f2b
 - rsyslog_remote_access_monitoring
889f2b
 - rsyslog_remote_loghost
889f2b
diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile
889f2b
index 9fd80aac727..97f940dc9ed 100644
889f2b
--- a/tests/data/profile_stability/rhel8/stig_gui.profile
889f2b
+++ b/tests/data/profile_stability/rhel8/stig_gui.profile
889f2b
@@ -232,6 +232,7 @@ selections:
889f2b
 - postfix_client_configure_mail_alias
889f2b
 - require_emergency_target_auth
889f2b
 - require_singleuser_auth
889f2b
+- root_permissions_syslibrary_files
889f2b
 - rsyslog_cron_logging
889f2b
 - rsyslog_remote_access_monitoring
889f2b
 - rsyslog_remote_loghost
889f2b
889f2b
From f16c085894e4dc7974637d44bf226d3acf19f3d1 Mon Sep 17 00:00:00 2001
889f2b
From: Carlos Matos <cmatos@redhat.com>
889f2b
Date: Mon, 12 Jul 2021 16:17:23 -0400
889f2b
Subject: [PATCH 2/4] Updated existing rules for syslibrary files/dirs
889f2b
889f2b
---
889f2b
 .../ansible/shared.yml                        |  6 ++-
889f2b
 .../bash/shared.sh                            |  7 +++
889f2b
 .../dir_group_ownership_library_dirs/rule.yml |  4 ++
889f2b
 .../tests/all_dirs_ok.pass.sh                 |  3 +-
889f2b
 .../nobody_group_owned_dir_on_lib.fail.sh     |  3 +-
889f2b
 .../ansible/shared.yml                        | 23 ++++++++--
889f2b
 .../oval/shared.xml                           | 44 ++++++-------------
889f2b
 .../tests/correct_group.pass.sh               |  4 +-
889f2b
 .../tests/incorrect_group.fail.sh             |  8 +---
889f2b
 products/rhel8/profiles/stig.profile          |  1 +
889f2b
 shared/references/cce-redhat-avail.txt        |  1 -
889f2b
 .../data/profile_stability/rhel8/stig.profile |  1 +
889f2b
 .../profile_stability/rhel8/stig_gui.profile  |  1 +
889f2b
 13 files changed, 59 insertions(+), 47 deletions(-)
889f2b
 create mode 100644 linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/bash/shared.sh
889f2b
889f2b
diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/ansible/shared.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/ansible/shared.yml
889f2b
index 80562991ac5..f6f2ab48afd 100644
889f2b
--- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/ansible/shared.yml
889f2b
+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/ansible/shared.yml
889f2b
@@ -1,4 +1,4 @@
889f2b
-# platform = multi_platform_sle
889f2b
+# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora
889f2b
 # reboot = false
889f2b
 # strategy = restrict
889f2b
 # complexity = medium
889f2b
@@ -20,4 +20,6 @@
889f2b
     state: "directory"
889f2b
     mode: "{{ item.mode }}"
889f2b
   with_items: "{{ library_dirs_not_group_owned_by_root.files }}"
889f2b
-  when: library_dirs_not_group_owned_by_root.matched > 0
889f2b
+  when:
889f2b
+    - library_dirs_not_group_owned_by_root.matched > 0
889f2b
+    - item.gid != 0
889f2b
diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/bash/shared.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/bash/shared.sh
889f2b
new file mode 100644
889f2b
index 00000000000..365b9833188
889f2b
--- /dev/null
889f2b
+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/bash/shared.sh
889f2b
@@ -0,0 +1,7 @@
889f2b
+# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora
889f2b
+
889f2b
+find /lib \
889f2b
+/lib64 \
889f2b
+/usr/lib \
889f2b
+/usr/lib64 \
889f2b
+\! -group root -type d -exec chgrp root '{}' \;
889f2b
diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/rule.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/rule.yml
889f2b
index 4ff043270c8..cd02d95cb1c 100644
889f2b
--- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/rule.yml
889f2b
+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/rule.yml
889f2b
@@ -1,5 +1,7 @@
889f2b
 documentation_complete: true
889f2b
 
889f2b
+prodtype: sle12,sle15,rhel8,fedora
889f2b
+
889f2b
 title: 'Verify that Shared Library Directories Have Root Group Ownership'
889f2b
 
889f2b
 description: |-
889f2b
diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/all_dirs_ok.pass.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/all_dirs_ok.pass.sh
889f2b
index 2a38e9a88bc..50fdb17bd2e 100644
889f2b
--- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/all_dirs_ok.pass.sh
889f2b
+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/all_dirs_ok.pass.sh
889f2b
@@ -1,4 +1,5 @@
889f2b
-# platform = multi_platform_sle
889f2b
+# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora
889f2b
+
889f2b
 DIRS="/lib /lib64 /usr/lib /usr/lib64"
889f2b
 for dirPath in $DIRS; do
889f2b
 	find "$dirPath" -type d -exec chgrp root '{}' \;
889f2b
diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh
889f2b
index f794d9e878f..277bd7d60de 100644
889f2b
--- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh
889f2b
+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh
889f2b
@@ -1,4 +1,5 @@
889f2b
-# platform = multi_platform_sle
889f2b
+# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora
889f2b
+
889f2b
 DIRS="/lib /lib64"
889f2b
 for dirPath in $DIRS; do
889f2b
 	mkdir -p "$dirPath/testme" && chown root:nogroup "$dirPath/testme"
889f2b
diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/ansible/shared.yml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/ansible/shared.yml
889f2b
index e0bb6b0dc1a..ab3e85c4f7c 100644
889f2b
--- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/ansible/shared.yml
889f2b
+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/ansible/shared.yml
889f2b
@@ -4,7 +4,24 @@
889f2b
 # complexity = high
889f2b
 # disruption = medium
889f2b
 
889f2b
-- name: "Set ownership to root of system-wide library files"
889f2b
-  command: "find {{ item }} ! -group root -type f -exec chgrp root '{}' \\;"
889f2b
-  with_items: [ '/lib', '/lib64', '/usr/lib', '/usr/lib64' ]
889f2b
+- name: "Read list libraries without root ownership"
889f2b
+  find:
889f2b
+    paths:
889f2b
+      - "/usr/lib"
889f2b
+      - "/usr/lib64"
889f2b
+      - "/lib"
889f2b
+      - "/lib64"
889f2b
+    file_type: "file"
889f2b
+  register: library_files_not_group_owned_by_root
889f2b
+
889f2b
+- name: "Set group ownership of system library files to root"
889f2b
+  file:
889f2b
+    path: "{{ item.path }}"
889f2b
+    group: "root"
889f2b
+    state: "file"
889f2b
+    mode: "{{ item.mode }}"
889f2b
+  with_items: "{{ library_files_not_group_owned_by_root.files }}"
889f2b
+  when:
889f2b
+    - library_files_not_group_owned_by_root.matched > 0
889f2b
+    - item.gid != 0
889f2b
 
889f2b
diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml
889f2b
index e3d64a8390e..926ff70d1e4 100644
889f2b
--- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml
889f2b
+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml
889f2b
@@ -1,45 +1,27 @@
889f2b
 <def-group>
889f2b
-  <definition class="compliance" id="root_permissions_syslibrary_files" version="1">
889f2b
+  <definition class="compliance" id="root_permissions_syslibrary_files" version="2">
889f2b
     {{{ oval_metadata("
889f2b
-        Checks that /lib, /lib64, /usr/lib, /usr/lib64, and
889f2b
-        objects therein, are group-owned by root.
889f2b
+        Checks that system-wide library files in /lib, /lib64, /usr/lib, /usr/lib64
889f2b
+        are owned by root.
889f2b
       ") }}}
889f2b
-    <criteria operator="AND">
889f2b
-      <criterion test_ref="test_group_ownership_lib_dir" />
889f2b
-      <criterion test_ref="test_group_ownership_lib_files" />
889f2b
+    <criteria >
889f2b
+      <criterion test_ref="test_root_permissions_for_syslibrary_files" />
889f2b
     </criteria>
889f2b
   </definition>
889f2b
 
889f2b
-  <unix:file_test  check="all" check_existence="none_exist" comment="library directories gid root" id="test_group_ownership_lib_dir" version="1">
889f2b
-    <unix:object object_ref="object_group_ownership_lib_dir" />
889f2b
+  <unix:file_test  check="all" check_existence="none_exist" comment="test if system-wide files have root permissions" id="test_root_permissions_for_syslibrary_files" version="1">
889f2b
+    <unix:object object_ref="root_permissions_for_system_wide_library_files" />
889f2b
   </unix:file_test>
889f2b
 
889f2b
-  <unix:file_test  check="all" check_existence="none_exist" comment="library files gid root" id="test_group_ownership_lib_files" version="1">
889f2b
-    <unix:object object_ref="object_group_ownership_lib_files" />
889f2b
-  </unix:file_test>
889f2b
-
889f2b
-  <unix:file_object comment="library directories" id="object_group_ownership_lib_dir" version="1">
889f2b
-    
889f2b
-    <unix:path operation="pattern match">^\/lib(|64)?\/|^\/usr\/lib(|64)?\/</unix:path>
889f2b
-    <unix:filename xsi:nil="true" />
889f2b
-    <filter action="include">state_group_ownership_libraries_not_root</filter>
889f2b
-    <filter action="exclude">group_dir_perms_state_symlink</filter>
889f2b
-  </unix:file_object>
889f2b
-
889f2b
-  <unix:file_object comment="library files" id="object_group_ownership_lib_files" version="1">
889f2b
-    
889f2b
-    <unix:path operation="pattern match">^\/lib(|64)?\/|^\/usr\/lib(|64)?\/</unix:path>
889f2b
+  <unix:file_object comment="system-wide directories" id="root_permissions_for_system_wide_library_files" version="1">
889f2b
+    
889f2b
+        are owned by root. -->
889f2b
+    <unix:path operation="pattern match">^\/lib\/|^\/lib64\/|^\/usr\/lib\/|^\/usr\/lib64\/</unix:path>
889f2b
     <unix:filename operation="pattern match">^.*$</unix:filename>
889f2b
-   <filter action="include">state_group_ownership_libraries_not_root</filter>
889f2b
-   <filter action="exclude">group_dir_perms_state_symlink</filter>
889f2b
+    <filter action="include">group_permissions_for_system_wide_files_are_not_root</filter>
889f2b
   </unix:file_object>
889f2b
 
889f2b
-  <unix:file_state id="state_group_ownership_libraries_not_root" version="1">
889f2b
+  <unix:file_state id="group_permissions_for_system_wide_files_are_not_root" version="1" >
889f2b
     <unix:group_id datatype="int" operation="not equal">0</unix:group_id>
889f2b
   </unix:file_state>
889f2b
-
889f2b
-  <unix:file_state id="group_dir_perms_state_symlink" version="1">
889f2b
-    <unix:type operation="equals">symbolic link</unix:type>
889f2b
-  </unix:file_state>
889f2b
-
889f2b
 </def-group>
889f2b
diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh
889f2b
index 8722c2add65..a4ae2854db1 100644
889f2b
--- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh
889f2b
+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/correct_group.pass.sh
889f2b
@@ -1,9 +1,9 @@
889f2b
-#!/bin/bash
889f2b
+# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora
889f2b
 
889f2b
 for SYSLIBDIRS in /lib /lib64 /usr/lib /usr/lib64
889f2b
 do
889f2b
     if [[ -d $SYSLIBDIRS  ]]
889f2b
     then
889f2b
-        find $SYSLIBDIRS ! -group root -exec chgrp root '{}' \;
889f2b
+        find $SYSLIBDIRS ! -group root -type f -exec chgrp root '{}' \;
889f2b
     fi
889f2b
 done
889f2b
diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh
889f2b
index 1079046d14e..c96f65b989c 100644
889f2b
--- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh
889f2b
+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/tests/incorrect_group.fail.sh
889f2b
@@ -1,10 +1,6 @@
889f2b
-#!/bin/bash
889f2b
+# platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora
889f2b
 
889f2b
-# There is a high probability that there will be nested subdirectories within the
889f2b
-# shared system library directories, therefore we should test to make sure we
889f2b
-# cover this. - cmm
889f2b
-test -d /usr/lib/test_dir || mkdir -p /usr/lib/test_dir && chown nobody.nobody /usr/lib/test_dir
889f2b
-for TESTFILE in /lib/test_me /lib64/test_me /usr/lib/test_me /usr/lib64/test_me /usr/lib/test_dir/test_me
889f2b
+for TESTFILE in /lib/test_me /lib64/test_me /usr/lib/test_me /usr/lib64/test_me
889f2b
 do
889f2b
    if [[ ! -f $TESTFILE ]]
889f2b
    then
889f2b
diff --git a/products/rhel8/profiles/stig.profile b/products/rhel8/profiles/stig.profile
889f2b
index 9569b2ad629..059750f59d0 100644
889f2b
--- a/products/rhel8/profiles/stig.profile
889f2b
+++ b/products/rhel8/profiles/stig.profile
889f2b
@@ -208,6 +208,7 @@ selections:
889f2b
 
889f2b
     # RHEL-08-010350
889f2b
     - root_permissions_syslibrary_files
889f2b
+    - dir_group_ownership_library_dirs
889f2b
 
889f2b
     # RHEL-08-010360
889f2b
     - package_aide_installed
889f2b
diff --git a/shared/references/cce-redhat-avail.txt b/shared/references/cce-redhat-avail.txt
889f2b
index e0eb5ac045c..ae3375fd4d4 100644
889f2b
--- a/shared/references/cce-redhat-avail.txt
889f2b
+++ b/shared/references/cce-redhat-avail.txt
889f2b
@@ -34,7 +34,6 @@ CCE-85890-2
889f2b
 CCE-85891-0
889f2b
 CCE-85892-8
889f2b
 CCE-85893-6
889f2b
-CCE-85894-4
889f2b
 CCE-85895-1
889f2b
 CCE-85896-9
889f2b
 CCE-85897-7
889f2b
diff --git a/tests/data/profile_stability/rhel8/stig.profile b/tests/data/profile_stability/rhel8/stig.profile
889f2b
index ebe7a91f45d..49cce4d81cc 100644
889f2b
--- a/tests/data/profile_stability/rhel8/stig.profile
889f2b
+++ b/tests/data/profile_stability/rhel8/stig.profile
889f2b
@@ -99,6 +99,7 @@ selections:
889f2b
 - dconf_gnome_login_banner_text
889f2b
 - dconf_gnome_screensaver_idle_delay
889f2b
 - dconf_gnome_screensaver_lock_enabled
889f2b
+- dir_group_ownership_library_dirs
889f2b
 - dir_perms_world_writable_root_owned
889f2b
 - dir_perms_world_writable_sticky_bits
889f2b
 - directory_permissions_var_log_audit
889f2b
diff --git a/tests/data/profile_stability/rhel8/stig_gui.profile b/tests/data/profile_stability/rhel8/stig_gui.profile
889f2b
index 97f940dc9ed..943a57d3eb8 100644
889f2b
--- a/tests/data/profile_stability/rhel8/stig_gui.profile
889f2b
+++ b/tests/data/profile_stability/rhel8/stig_gui.profile
889f2b
@@ -110,6 +110,7 @@ selections:
889f2b
 - dconf_gnome_login_banner_text
889f2b
 - dconf_gnome_screensaver_idle_delay
889f2b
 - dconf_gnome_screensaver_lock_enabled
889f2b
+- dir_group_ownership_library_dirs
889f2b
 - dir_perms_world_writable_root_owned
889f2b
 - dir_perms_world_writable_sticky_bits
889f2b
 - directory_permissions_var_log_audit
889f2b
889f2b
From 71deac482753a13a9f98d6d7382b13e9031a2ce4 Mon Sep 17 00:00:00 2001
889f2b
From: Carlos Matos <cmatos@redhat.com>
889f2b
Date: Tue, 13 Jul 2021 13:40:25 -0400
889f2b
Subject: [PATCH 3/4] Updated test for nobody_group_owned_dir rule
889f2b
889f2b
---
889f2b
 .../tests/nobody_group_owned_dir_on_lib.fail.sh               | 4 ++--
889f2b
 1 file changed, 2 insertions(+), 2 deletions(-)
889f2b
889f2b
diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh
889f2b
index 277bd7d60de..043ad6b2dee 100644
889f2b
--- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh
889f2b
+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/dir_group_ownership_library_dirs/tests/nobody_group_owned_dir_on_lib.fail.sh
889f2b
@@ -1,6 +1,6 @@
889f2b
 # platform = multi_platform_sle,Red Hat Enterprise Linux 8,multi_platform_fedora
889f2b
 
889f2b
-DIRS="/lib /lib64"
889f2b
+DIRS="/lib /lib64 /usr/lib /usr/lib64"
889f2b
 for dirPath in $DIRS; do
889f2b
-	mkdir -p "$dirPath/testme" && chown root:nogroup "$dirPath/testme"
889f2b
+	mkdir -p "$dirPath/testme" && chgrp nobody "$dirPath/testme"
889f2b
 done
889f2b
889f2b
From 087359679e4f6794054b6772df6c84c4cd1fee94 Mon Sep 17 00:00:00 2001
889f2b
From: Carlos Matos <cmatos@redhat.com>
889f2b
Date: Wed, 14 Jul 2021 10:04:25 -0400
889f2b
Subject: [PATCH 4/4] Added recommended $ to end of regex pattern to properly
889f2b
 match dirs
889f2b
889f2b
---
889f2b
 .../root_permissions_syslibrary_files/oval/shared.xml           | 2 +-
889f2b
 1 file changed, 1 insertion(+), 1 deletion(-)
889f2b
889f2b
diff --git a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml
889f2b
index 926ff70d1e4..f5ca9380b55 100644
889f2b
--- a/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml
889f2b
+++ b/linux_os/guide/system/permissions/files/permissions_within_important_dirs/root_permissions_syslibrary_files/oval/shared.xml
889f2b
@@ -16,7 +16,7 @@
889f2b
   <unix:file_object comment="system-wide directories" id="root_permissions_for_system_wide_library_files" version="1">
889f2b
     
889f2b
         are owned by root. -->
889f2b
-    <unix:path operation="pattern match">^\/lib\/|^\/lib64\/|^\/usr\/lib\/|^\/usr\/lib64\/</unix:path>
889f2b
+    <unix:path operation="pattern match">^\/lib(|64)?$|^\/usr\/lib(|64)?$</unix:path>
889f2b
     <unix:filename operation="pattern match">^.*$</unix:filename>
889f2b
     <filter action="include">group_permissions_for_system_wide_files_are_not_root</filter>
889f2b
   </unix:file_object>