如果悬空指针指向的位置分配了新对象,地址清理器是否仍会报告释放后使用



我正在使用地址清理器在Firefox构建中玩释放后使用漏洞。假设在利用释放后使用漏洞时,我们设法在放置释放的对象 A 的位置分配一个新对象 B,因此悬空指针指向新对象 B 中的某个位置,我有两个问题:

(1( 当我们取消引用悬空指针时,ASAN 是否仍会检测并报告与悬空指针和释放对象相关的释放后使用?

(2( 如果取消引用悬空指针现在由于指向不同的对象(B(而导致崩溃,那么ASAN是在崩溃之前还是崩溃之后检测到UAF?

假设在利用释放后使用漏洞时,我们设法在放置释放对象 A 的位置分配一个新对象 B

AddressSanitizer 以及大多数其他调试堆实现都具有隔离缓冲区。释放的存储不会在很长一段时间内重复使用,因此可以捕获任何悬空指针的使用。

(1( 当我们取消引用悬空指针时,ASAN 是否仍会检测并报告与悬空指针和释放对象相关的释放后使用?

不。如果您等待足够长的时间(或隔离缓冲区已用尽(以重新使用存储,则 ASAN 将不知道有任何问题。

(2( ...ASAN 是在崩溃之前还是之后检测到 UAF?

也不。一旦存储被重新使用,ASAN 就不知道出了什么问题。如果程序崩溃,ASAN只会告诉您"您的程序已崩溃",但不会帮助说明它崩溃的原因。

相关内容

  • 没有找到相关文章

最新更新