Ami*_*ram 21 linux bash virtual-address-space aslr sysctl
我想在我的系统(Ubuntu Gnu/Linux 2.6.32-41-server)上禁用地址空间布局随机化(ASLR),但是,如果我使用
sysctl -w kernel.randomize_va_space=0
Run Code Online (Sandbox Code Playgroud)
我认为,这种变化会影响系统上的所有用户.(这是真的吗?)我如何限制仅作为用户禁用ASLR对我自己的影响,或者仅限于我调用命令禁用的shell会话?
顺便说一句,我看到我系统的当前(默认)设置是
kernel.randomize_va_space = 2
Run Code Online (Sandbox Code Playgroud)
为什么2而不是1或3?在哪里可以找到有关/ proc/sys设置的数值,范围及其含义的文档?谢谢!
per*_*ror 27
在基于Linux的系统上本地禁用ASLR的最佳方法是使用进程个性标志.操纵个性标志的命令是setarch
与
-R
,--addr-no-randomize
禁用虚拟地址空间的随机化(打开ADDR_NO_RANDOMIZE).
以下是如何进行:
$> setarch $(uname -m) -R /bin/bash
Run Code Online (Sandbox Code Playgroud)
此命令运行已禁用ASLR的shell.此过程的所有后代将继承父亲的个性标志,因此具有禁用的ASLR.打破标志继承的唯一方法是调用setuid程序(这将是支持此类功能的安全漏洞).
请注意,uname -m
此处不会对您的平台的体系结构进行硬编码,并使此命令可移植.
And*_*oss 13
randomize_va_space
sysctl设置的文档Documentation/sysctl/kernel.txt
位于内核源代码树中.基本上,
0 - 关闭进程地址空间随机化.
1 - 使mmap base,stack和VDSO页面的地址随机化.
2 - 另外启用堆随机化.