ASLR 与 PIE 的同与异

对于 ASLR 和 PIE 一直没有系统归纳,部分概念时常混淆,做个笔记记录一下。

ASLR 是什么?

ASLR 是 Linux操作系统的功能选项,作用于程序(ELF)装入内存运行时。是一种针对缓冲区溢出的安全保护技术,通过对加载地址的随机化,防止攻击者直接定位攻击代码位置,到达阻止溢出攻击的一种技术。

开启、关闭ASLR

查看当前系统ASLR的打开情况:

sudo cat /proc/sys/kernel/randomize_va_space

ASLR 有三个安全等级:

  • 0: ASLR 关闭
  • 1:随机化栈基地址(stack)、共享库(.so\libraries)、mmap 基地址
  • 2:在1基础上,增加随机化堆基地址(chunk)

PIE 是什么?

PIE 是 gcc 编译器的功能选项,作用于程序(ELF)编译过程中。是一个针对代码段( .text )、数据段( .data )、未初始化全局变量段( .bss )等固定地址的一个防护技术,如果程序开启了PIE保护的话,在每次加载程序时都变换加载地址,从而不能通过 ROPgadget 等一些工具来帮助解题。

开启 PIE

在使用 gcc 编译时加入参数-fPIE

PIE 开启后会随机化代码段( .text )、初始化数据段( .data )、未初始化数据段( .bss )的加载地址。

总结

作用位置归属作用时间
ASLR1:栈基地址(stack)、共享库(.so\libraries)、mmap 基地址
2:在1基础上,增加随机化堆基地址(chunk)
系统功能作用于程序(ELF)装入内存运行时
PIE代码段( .text )、初始化数据段( .data )、未初始化数据段( .bss )编译器功能作用于程序(ELF)编译过程中
  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值