Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 391

重复释放

审核人Cybersecurity entrepreneur & security researcher

重复释放 是什么?

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


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

示例

  1. 01

    CVE-2015-1322:glibc tcache 双释放导致堆破坏。

  2. 02

    CVE-2019-19377:由畸形镜像触发的 Linux btrfs 双释放。

常见问题

重复释放 是什么?

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

重复释放 是什么意思?

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

如何防御 重复释放?

针对 重复释放 的防御通常结合技术控制与运营实践,详见上方完整定义。

重复释放 还有哪些其他名称?

常见的别称包括: 重复释放漏洞。

相关术语