ASLR(Address space layout randomization)是一种针对缓冲区溢出的安全保护技术,通过对栈、共享库映射等线性区布局的随机化,防止攻击者定位攻击代码位置,达到阻止溢出攻击的目的。ASLR可以有效的降低缓冲区溢出攻击的成功率,如今Linux、FreeBSD、Windows等主流操作系统都已采用了该技术,其中 Linux 在 2.6.12 版本之后默认启用这种策略,可以通过 less /proc/sys/kernel/randomize_va_space 查看。
/proc/sys/kernel/randomize_va_space 的取值意义如下:(see https://patchwork.kernel.org/patch/33832/)
0 - Turn the process address space randomization off by default.
1 - Make the addresses of mmap base, stack and VDSO page randomized.
2 - Additionally enable heap randomization. This is the default if+ CONFIG_COMPAT_BRK is disabled.