Skip unprivileged_userfaultfd if USERFAULTFD unset
authorEneas U de Queiroz <cotequeiroz@gmail.com>
Fri, 10 Nov 2023 18:21:19 +0000 (15:21 -0300)
committerAlexander Popov <alex.popov@linux.com>
Thu, 2 May 2024 09:18:14 +0000 (12:18 +0300)
Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
kernel_hardening_checker/checks.py

index 0e0f2051ec777ce217fb6e5980a1ad7bf2ecb6be..e2cf42e13a579f50289528da06a3ce6a1381ba2e 100644 (file)
@@ -682,7 +682,9 @@ def add_sysctl_checks(l, _arch):
     l += [SysctlCheck('cut_attack_surface', 'kspp', 'kernel.kptr_restrict', '2')]
     l += [OR(SysctlCheck('cut_attack_surface', 'kspp', 'dev.tty.legacy_tiocsti', '0'),
              SysctlCheck('cut_attack_surface', 'kspp', 'dev.tty.legacy_tiocsti', 'is not set'))]
     l += [SysctlCheck('cut_attack_surface', 'kspp', 'kernel.kptr_restrict', '2')]
     l += [OR(SysctlCheck('cut_attack_surface', 'kspp', 'dev.tty.legacy_tiocsti', '0'),
              SysctlCheck('cut_attack_surface', 'kspp', 'dev.tty.legacy_tiocsti', 'is not set'))]
-    l += [SysctlCheck('cut_attack_surface', 'kspp', 'vm.unprivileged_userfaultfd', '0')]
+    l += [OR(SysctlCheck('cut_attack_surface', 'kspp', 'vm.unprivileged_userfaultfd', '0'),
+             AND(KconfigCheck('cut_attack_surface', 'grsec', 'USERFAULTFD', 'is not set'),
+                 have_config_file))]
           # At first, it disabled unprivileged userfaultfd,
           # and since v5.11 it enables unprivileged userfaultfd for user-mode only.
 
           # At first, it disabled unprivileged userfaultfd,
           # and since v5.11 it enables unprivileged userfaultfd for user-mode only.