CyberGlossary

漏洞

重复释放

别称: 重复释放漏洞

定义

对同一堆块进行两次释放的内存安全缺陷,会破坏分配器元数据,通常可被用于实现任意代码执行。

重复释放(double free)是指在同一指针上多次调用 free()/delete。分配器的空闲链表或 bin 结构变得不一致,攻击者可以让后续分配返回受其影响的内存,或与活动对象重叠,从而获得任意写入与代码执行的原语。被归类为 CWE-415,常与 use-after-free 和 double-fetch 共同出现。防御措施包括单一所有权模式(RAII、智能指针)、释放后将指针置 NULL、采用具备双释放检测的强化分配器(如 glibc tcache 防护、scudo)、使用 AddressSanitizer 测试以及内存安全语言。

示例

  • CVE-2015-1322:glibc tcache 双释放导致堆破坏。
  • CVE-2019-19377:由畸形镜像触发的 Linux btrfs 双释放。

相关术语