Linux系统内存管理:ASLR、KASLR与物理内存组织
1. ASLR与KASLR概述
在Linux系统中,地址空间布局随机化(ASLR)是一项重要的安全特性,它能有效增强系统的安全性。不过,通常用于随机化的比特位并不多,导致熵值不够理想,这意味着即使在64位系统中,页面大小的偏移量也不会太多,可能会削弱其实现效果。下面详细介绍用户模式ASLR和内核模式ASLR(KASLR)。
1.1 用户模式ASLR
用户模式ASLR通常就是指ASLR。启用该功能后,每个进程的用户空间映射都会受到保护。这意味着每次运行用户模式进程时,其绝对内存映射都会发生变化。
Linux从很早(2005年的2.6.12内核版本)就开始支持ASLR。内核在 procfs 中有一个可调整的伪文件 /proc/sys/kernel/randomize_va_space ,用于查询和设置(需要root权限)ASLR状态。该文件有三个可能的值,具体含义如下表所示:
| Tunable value | Interpretation of this value in /proc/sys/kernel/randomize_va_space |
| — | — |
| 0 | (用户模式)ASLR关闭;也可以在启动时通过传递内核参数 norandmaps 来关闭。 |
| 1 | (用户模式)ASLR开启:基于 mmap(2) 的分配、栈和vDSO页面会被随机化,同时共享库加载位置和共享内存段也会随机化。 |
| 2 | (用户模
超级会员免费看
订阅专栏 解锁全文
105

被折叠的 条评论
为什么被折叠?



