仅为我自己禁用并重新启用地址空间布局随机化

时间:2012-06-28 05:17:17

标签: linux bash aslr virtual-address-space sysctl

我想在我的系统上禁用地址空间布局随机化(ASLR)(Ubuntu Gnu / Linux 2.6.32-41-server),但是,如果我使用

sysctl -w kernel.randomize_va_space=0

我认为,这种变化会影响系统上的所有用户。 (这是真的吗?)我如何限制仅作为用户禁用ASLR的效果,或仅限于我调用命令禁用的shell会话?

顺便说一句,我看到我系统的当前(默认)设置是

sysctl -w kernel.randomize_va_space=0

为什么2而不是1或3?在哪里可以找到有关/ proc / sys设置的数值,范围及其含义的文档?谢谢!

2 个答案:

答案 0 :(得分:22)

在基于Linux的系统上本地禁用ASLR的最佳方法是使用进程个性标记。操纵人格标志的命令是setarch

  

-R--addr-no-randomize

     

禁用虚拟地址空间的随机化(打开ADDR_NO_RANDOMIZE)。

以下是如何继续:

$> setarch $(uname -m) -R /bin/bash

此命令运行已禁用ASLR的shell。此过程的所有后代将继承父亲的个性标志,因此具有禁用的ASLR。打破标志继承的唯一方法是调用setuid程序(支持此类功能将成为安全漏洞)。

请注意,uname -m不会对您平台的体系结构进行硬编码,并使此命令可移植。

答案 1 :(得分:12)

randomize_va_space sysctl 设置的文档位于内核源代码树的Documentation/sysctl/kernel.txt中。基本上,

  

0 - 关闭进程地址空间随机化。

     

1 - 使mmap base,stack和VDSO页面的地址随机化。

     

2 - 另外启用堆随机化。