地址空间布局随机化(ASLR)
地址空间布局随机化(ASLR) 是什么?
地址空间布局随机化(ASLR)ASLR 在每次运行时随机化代码、栈、堆和共享库的内存地址,使攻击者无法可靠预测利用所需的目标地址。
ASLR 是一种防御性缓解措施,它在每次程序运行时随机化关键进程区域(可执行文件、共享库、堆、栈和 mmap 区)的基地址。该技术由 PaX 项目于 2001 年首先实现,如今已被 Linux、Windows、macOS、iOS 和 Android 广泛采用。通过让内存布局不可预测,ASLR 迫使攻击者必须先泄露一个地址,才能执行 ROP 等代码复用攻击。其有效性取决于随机熵的位数、是否对所有二进制(PIE)启用,以及是否与 DEP/NX、栈金丝雀和 CFI 等机制协同抵御部分覆盖和信息泄露攻击。
● 示例
- 01
Linux 在每次 exec 时随机化栈、堆和 PIE 二进制基址。
- 02
Windows 在每次启动时重定位 kernel32.dll 和 ntdll.dll。
● 常见问题
地址空间布局随机化(ASLR) 是什么?
ASLR 在每次运行时随机化代码、栈、堆和共享库的内存地址,使攻击者无法可靠预测利用所需的目标地址。 它属于网络安全的 应用安全 分类。
地址空间布局随机化(ASLR) 是什么意思?
ASLR 在每次运行时随机化代码、栈、堆和共享库的内存地址,使攻击者无法可靠预测利用所需的目标地址。
地址空间布局随机化(ASLR) 是如何工作的?
ASLR 是一种防御性缓解措施,它在每次程序运行时随机化关键进程区域(可执行文件、共享库、堆、栈和 mmap 区)的基地址。该技术由 PaX 项目于 2001 年首先实现,如今已被 Linux、Windows、macOS、iOS 和 Android 广泛采用。通过让内存布局不可预测,ASLR 迫使攻击者必须先泄露一个地址,才能执行 ROP 等代码复用攻击。其有效性取决于随机熵的位数、是否对所有二进制(PIE)启用,以及是否与 DEP/NX、栈金丝雀和 CFI 等机制协同抵御部分覆盖和信息泄露攻击。
如何防御 地址空间布局随机化(ASLR)?
针对 地址空间布局随机化(ASLR) 的防御通常结合技术控制与运营实践,详见上方完整定义。
地址空间布局随机化(ASLR) 还有哪些其他名称?
常见的别称包括: 地址随机化, 位置无关可执行文件 PIE。
● 相关术语
- appsec№ 581
内核 ASLR(KASLR)
内核地址空间随机化(KASLR)在每次启动时随机化内核基址与模块加载地址,防止攻击者依赖固定内核符号进行本地提权。
- appsec№ 303
数据执行保护(DEP)
DEP(又称 NX 位或 W^X)将内存页标记为不可执行,使攻击者无法运行注入到栈或堆中的 shellcode。
- appsec№ 925
面向返回的编程(ROP)
ROP 是一种代码复用利用技术,通过把以 RET 结尾的短指令序列(gadget)串成链来执行任意计算,而无需注入新代码。
- appsec№ 1095
栈金丝雀
栈金丝雀是函数局部缓冲区与保存的返回地址之间放置的秘密值,用于在攻击者劫持控制流之前检测栈溢出。
- appsec№ 217
控制流完整性(CFI)
控制流完整性(CFI)将程序的间接调用和返回限制在预先计算的合法目标集合内,阻断 ROP 与 JOP 等控制流劫持利用。
- appsec№ 670
内存安全
内存安全指程序绝不读取、写入或执行未合法分配的内存,从而消除整类漏洞的属性。