地址空间布局随机化 (ASLR)


几十年来,内存破坏漏洞一直困扰着软件,尽管苹果、谷歌和微软等大型公司都努力根除它们。本文介绍了有关 ASLR 的一些基本事实,重点关注 Windows 的实现。除了介绍 ASLR 如何提高安全态势外,我们还旨在为防御者提供有关如何提高其软件安全的建议,并为研究人员提供更多有关 ASLR 如何工作以及调查其局限性的思路。

内存破坏漏洞发生在程序错误地将攻击者控制的数据写入预期内存区域之外或预期内存范围之外时。这可能会导致程序崩溃,或者更糟的是,使攻击者完全控制系统。由于这些错误很难发现,并且只有一个错误就可能危及系统,因此安全专业人员设计了故障安全机制来阻止软件利用并限制在利用内存破坏错误时造成的损害。不幸的是,没有什么事情是完美的,但是地址空间布局随机化 (ASLR) 是现有最好的缓解措施之一。

ASLR 通过打破开发人员在运行时可能对程序和库在内存中的位置所做的假设来工作。一个常见的例子是返回导向编程 (ROP) 中使用的 gadget 的位置,ROP 通常用于击败数据执行保护 (DEP) 的防御。ASLR 打乱易受攻击进程的地址空间——主程序、其动态库、堆栈和堆、内存映射文件等等——以便利用有效负载必须根据受害者进程在当时布局的地址空间进行唯一定制。

更新于:2020年9月23日

266 次查看

开启您的职业生涯

完成课程获得认证

开始学习
广告