我们不能实现一个malloc/calloc包装器,在返回之前将返回的指针地址添加到全局哈希表中,然后再实现一个空闲包装器,在释放之前检查表中是否存在指针(如果不存在,就尽早返回,如果存在,就删除它),然后用Firefox这样的程序对这些malloc/calloc和空闲函数进行LD_PRELOAD,以防止出现双自由度?为什么标准malloc/calloc和空闲函数不使用这样的技术,或者为什么没有类似于建议使用strcpy_s代替strcpy的安全变体?
发布于 2020-05-26 04:58:42
不是的。double空闲的原因是存在漏洞,因为在第二个free之前,内存已经被重新分配给其他东西。任何这样的包装器都无法知道free是用于该地址的第一次或第二次内存分配。
https://security.stackexchange.com/questions/232213
复制相似问题