gpt4 book ai didi

security - ASLR 如何有效?

转载 作者:行者123 更新时间:2023-12-04 15:37:27 26 4
gpt4 key购买 nike

我听说过这个理论。地址空间位置随机化获取库并将它们加载到虚拟地址空间中的随机位置,以便黑客在您的程序中发现漏洞时,他没有预先知道的地址来执行返回到 libc 攻击反对,例如。但是想了几秒,作为防御手段,没有任何意义。

假设我们假设的 TargetLib(libc 或黑客正在寻找的其他任何东西)加载到随机地址而不是确定性地址。现在黑客并不提前知道 TargetLib 和其中的例程在哪里,但应用程序代码也不知道。它需要在二进制文件的某处有某种查找表,以便在 TargetLib 中找到例程,并且必须位于确定的位置。 (或者在一个随机位置,由其他东西指向。您可以根据需要添加任意数量的间接地址,但最终您必须从已知位置开始。)

这意味着,黑客无需将攻击代码指向 TargetLib 的已知位置,而只需将其攻击代码指向应用程序的 TargetLib 查找表条目,并取消引用指向目标例程的指针,攻击将不受阻碍地进行。

ASLR 的工作方式有什么我不明白的吗?因为正如所描述的,我不明白这只是一个减速带,提供了安全的形象,但没有实际内容。我错过了什么吗?

最佳答案

我相信这是有效的,因为它改变了共享库的基地址。回想一下,从共享库中导入的函数在加载时会被修补到您的可执行镜像中,因此本身没有表,只有指向分散在整个程序代码中的数据和代码的特定地址。

它提高了有效攻击的阈值,因为它使简单的缓冲区溢出(可以设置堆栈上的返回地址)变成一个溢出必须包含确定正确位置的代码,然后跳转到它。大概这只会让它变得更难。

实际上,Windows 中的所有 DLL 都针对它们可能不会运行并且无论如何都会被移动的基地址进行编译,但核心 Windows DLL 往往会对其基地址进行优化,因此不需要重定位。

关于security - ASLR 如何有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3851603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com