linux KASLR 是否在 AARCH64 上提供物理地址的随机化?

linux KASLR 是否在 AARCH64 上提供物理地址的随机化?

我使用的是 Linux 内核 v4.14。我已经为我的定制板构建了 AARCH64 架构的内核。我已经启用了KASLRCONFIG_RANDOMIZE_BASE=y标志。

然而,每次启动时,我发现内核代码和数据的物理地址是相同的。 (我检查了这个/proc/iomem)。

KASLR 不会随机化内核代码段的物理地址吗?

答案1

Aarch64 上Kconfig的描述RANDOMIZE_BASE

随机化加载内核映像的虚拟地址,作为一项安全功能,可以阻止依赖于内核内部位置知识的利用尝试。

引导加载程序的工作是通过在/chosen/kaslr-seed内核入口处传递随机的 u64 值来提供熵。

当通过 UEFI 存根启动时,它将调用固件的 EFI_RNG_PROTOCOL实现(如果可用)来为内核提供熵。此外,它还会随机化内核映像的物理位置。

就其本身而言,RANDOMIZE_BASE仅随机化内核映像的虚拟地址;为了随机化映像的物理地址,内核需要来自 booloader 的帮助(当它启动时,它本身就是UEFI 存根)。

其他架构也支持随机化物理地址(例如x86)。

相关内容