#
#
# N.B Hardening command line parameters:
-# slub_debug=FZP
# slab_nomerge
# page_alloc.shuffle=1
# iommu=force (does it help against DMA attacks?)
-# page_poison=1 (if enabled)
-# init_on_alloc=1
-# init_on_free=1
+# slub_debug=FZ (slow)
+# init_on_alloc=1 (since v5.3)
+# init_on_free=1 (since v5.3, otherwise slub_debug=P and page_poison=1)
# loadpin.enforce=1
# debugfs=no-mount (or off if possible)
#
# Mitigations of CPU vulnerabilities:
# Аrch-independent:
-# mitigations=auto,nosmt
+# mitigations=auto,nosmt (nosmt is slow)
# X86:
# spectre_v2=on
# pti=on
# ssbd=force-on
#
# N.B. Hardening sysctls:
-# kernel.kptr_restrict=2
+# kernel.kptr_restrict=2 (or 1?)
# kernel.dmesg_restrict=1
# kernel.perf_event_paranoid=3
# kernel.kexec_load_disabled=1
if arch == 'ARM':
l += [OptCheck('self_protection', 'defconfig', 'CPU_SW_DOMAIN_PAN', 'y')]
l += [OptCheck('self_protection', 'defconfig', 'STACKPROTECTOR_PER_TASK', 'y')]
- if arch in ('ARM64', 'ARM'):
+ if arch == 'ARM64':
+ l += [OR(OptCheck('self_protection', 'defconfig', 'HARDEN_BRANCH_PREDICTOR', 'y'),
+ VerCheck((5, 10)))] # HARDEN_BRANCH_PREDICTOR is enabled by default since v5.10
+ if arch == 'ARM':
l += [OptCheck('self_protection', 'defconfig', 'HARDEN_BRANCH_PREDICTOR', 'y')]
# 'self_protection', 'kspp'
l += [AND(OptCheck('self_protection', 'my', 'UBSAN_BOUNDS', 'y'),
OptCheck('self_protection', 'my', 'UBSAN_MISC', 'is not set'),
OptCheck('self_protection', 'my', 'UBSAN_TRAP', 'y'))]
- l += [OptCheck('self_protection', 'my', 'SLUB_DEBUG_ON', 'y')] # TODO: is it better to set that via kernel cmd?
l += [OptCheck('self_protection', 'my', 'RESET_ATTACK_MITIGATION', 'y')] # needs userspace support (systemd)
if arch == 'X86_64':
l += [AND(OptCheck('self_protection', 'my', 'AMD_IOMMU_V2', 'y'),
iommu_support_is_set)]
if arch == 'ARM64':
- l += [OptCheck('self_protection', 'my', 'SHADOW_CALL_STACK', 'y')]
+ l += [OptCheck('self_protection', 'my', 'SHADOW_CALL_STACK', 'y')] # maybe it should be alternative to STACKPROTECTOR_STRONG
# 'security_policy'
if arch in ('X86_64', 'ARM64', 'X86_32'):
l += [OptCheck('userspace_hardening', 'defconfig', 'INTEGRITY', 'y')]
if arch == 'ARM':
l += [OptCheck('userspace_hardening', 'my', 'INTEGRITY', 'y')]
+ if arch == 'ARM64':
+ l += [OptCheck('userspace_hardening', 'defconfig', 'ARM64_MTE', 'y')]
if arch in ('ARM', 'X86_32'):
l += [OptCheck('userspace_hardening', 'defconfig', 'VMSPLIT_3G', 'y')]
if arch in ('X86_64', 'ARM64'):