首页 > 系统相关 >Linux地址空间随机化

Linux地址空间随机化

时间:2023-02-12 10:22:25浏览次数:40  
标签:va ASLR space 随机化 地址 关闭 Linux randomize

ASLR(Address Space Layout Randomization)在2005年被引入到Linux的内核 kernel 2.6.12 中,当然早在2004年就以patch的形式被引入。随着内存地址的随机化,使得响应的应用变得随机。这意味着同一应用多次执行所使用内存空间完全不同,也意味着简单的缓冲区溢出攻击无法达到目的。

1、查看ASLR设置

1 $ cat /proc/sys/kernel/randomize_va_space
2 2
3 $ sysctl -a --pattern randomize
4 kernel.randomize_va_space = 2

2、 配置选项

  • 0 = 关闭
  • 1 = 半随机。共享库、栈、mmap() 以及 VDSO 将被随机化。(留坑,PIE会影响heap的随机化。。)
  • 2 = 全随机。除了1中所述,还有heap。

3、关闭ASLR

方法一: 手动修改randomize_va_space文件
诚如上面介绍的randomize_va_space文件的枚举值含义,设置的值不同,linux内核加载程序的地址空间的策略就会不同。比较简单明了。这里0代表关闭ASLR。

1 # echo 0 > /proc/sys/kernel/randomize_va_space

注意,这里是先进root权限,后执行。不要问为什么sudo echo 0 > /proc/sys/kernel/randomize_va_space为什么会报错

方法二: 使用sysctl控制ASLR

1 # sysctl -w kernel.randomize_va_space=0

这是一种临时改变随机策略的方法,重启之后将恢复默认。如果需要永久保存配置,需要在配置文件 /etc/sysctl.conf 中增加这个选项。

方法三: 使用setarch控制单个程序的随机化
如果你想历史关闭单个程序的ASLR,使用setarch是很好的选择。setarch命令如其名,改变程序的运行架构环境,并可以自定义环境flag。

1 setarch `uname -m` -R ./your_program

-R参数代表关闭地址空间随机化(开启ADDR_NO_RANDOMIZE)

方法四: 在GDB场景下,使用set disable-randomization off
在调试特定程序时,可以通过set disable-randomization命令开启或者关闭地址空间随机化。默认是关闭随机化的,也就是on状态。

当然,这里开启,关闭和查看的方法看起来就比较正规了。

关闭ASLR:
set disable-randomization on
开启ASLR:
set disable-randomization off
查看ASLR状态:
show disable-randomization

0x05 ASLR与PIE的区别
ASLR有一个模糊的值(1),既不是全开启也不是全关闭,而是部分关闭,那这部分到底是什么,很容易产生歧义。

ASLR 不负责代码段以及数据段的随机化工作,这项工作由 PIE 负责。但是只有在开启 ASLR 之后,PIE 才会生效。

标签:va,ASLR,space,随机化,地址,关闭,Linux,randomize
From: https://www.cnblogs.com/zzx2bky/p/17113354.html

相关文章

  • Linux 下 python3.9.8的安装
    1.准备安装环境centosyuminstallgcczlib*openssl*-yyuminstallsqlite-devel-yyuminstallbzip2bzip2-devel-yyuminstallxz-devel-yyuminstallp......
  • 代码随想录算法训练营第二十七天 | 93.复原IP地址,78.子集,90.子集II
    一、参考资料复原IP地址题目链接/文章讲解:https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html视频讲解:https://www.bilibili.com/video......
  • linux007之文件、目录操作命令
    查看当前所在目录:pwd:查看当前所在目录路径ls:查看当前目录所有文件ls路径:查看指定目录下所有文件ls-l:以列的形式查看当前目录所有文件ls-l路......
  • #yyds干货盘点#【愚公系列】2023年02月 微信小程序-电商项目-添加收货地址功能实现
    前言在电商系统中,收货地址是必不可少的功能,没有收货地址用户在下单就没法收到货,而且一个用户会有多个收货地址,比如寄给自己,或者寄给别人。一搬在收货地址选择中会有个默认......
  • 7. Linux 软件管理
    1.Fedora/CentOS/RHEL1.1RPM包RPM(原来指RetHatPackageManager),现在是(RPMPackageManager),RedHat公司提出,被众多Linux发行版所采用。rpm包也称二进制包,无需编译,可以直接......
  • 2.Linux安装docker
    Docker作为一个软件集装箱化平台,可以让开发者构建应用程序时,将它与其依赖环境一起打包到一个容器中,然后很容易地发布和应用到任意平台中。 进入docker官网找到安装文档......
  • linux基本功系列之tar命令实战
    前言大家好,又见面了,我是沐风晓月,本文是专栏【linux基本功-基础命令实战】的第44篇文章。此专栏是沐风晓月对Linux常用命令的汇总,希望能够加深自己的印象,以及帮助到其他的......
  • Linux 环境变量配置的 6 种方法,建议收藏!
    Linux环境变量配置在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法。下面所有例子的环境说明如下:系统:Ubuntu14.0用户名:uusama需要配......
  • linux006之帮助命令
    linux帮助命令简介:linux的命令是非常多的,光靠人是记不住的,在工作中一般都会去网上查,这是有外网的情况下,如果项目中不允许访问外网,那么linux的帮助命令就可以派上用场......
  • linux找回root密码以及远程登录和远程传输文件
    注:远程登录首次都需要先查看linux的ip地址(控制台输入ifconfig)且可以互相ping通xshell7(远程登陆linux):主机框需要为ip地址如上设置  接受并保存下次不用输入密......