Enable randomization of the page allocator in zIPL
An XCCDF Rule
Description
To enable the randomization of the page allocator in the kernel, check that
all boot entries in /boot/loader/entries/*.conf
have
page_alloc.shuffle=1
included in its options.
To enable randomization of the page allocator also for newly installed
kernels, add page_alloc.shuffle=1
to /etc/kernel/cmdline
.
Rationale
The CONFIG_SHUFFLE_PAGE_ALLOCATOR
config option is primarily
focused on improving the average utilization of a direct-mapped
memory-side-cache. Aside of this performance effect, it also reduces
predictability of page allocations in situations when the bad actor can
crash the system and somehow leverage knowledge of (page) allocation order
right after a fresh reboot, or can control the timing between a
hot-pluggable memory node (as in NUMA node) and applications allocating
memory ouf of that node. The page_alloc.shuffle=1
kernel command
line parameter then forces this functionality irrespectively of memory cache
architecture.
- ID
- xccdf_org.ssgproject.content_rule_zipl_page_alloc_shuffle_argument
- Severity
- Medium
- References
- Updated
Remediation - Ansible
- name: Ensure BLS boot entries options contain page_alloc.shuffle=1
block:
- name: 'Check how many boot entries exist '
find:
paths: /boot/loader/entries/
Remediation - Shell Script
# Remediation is applicable only in certain platforms
if grep -q s390x /proc/sys/kernel/osrelease && { [ ! -f /.dockerenv ] && [ ! -f /run/.containerenv ]; }; then
# Correct BLS option using grubby, which is a thin wrapper around BLS operations
grubby --update-kernel=ALL --args="page_alloc.shuffle=1"