CyberGlossary

漏洞

堆溢出

别称: 堆缓冲区溢出

定义

发生在动态分配内存中的缓冲区溢出,常破坏分配器元数据、函数指针或对象虚表。

堆溢出是指写入超出堆上分配缓冲区末尾,损坏相邻的内存块或 malloc/free、jemalloc、mimalloc 等分配器的元数据。由于堆布局并非确定性,利用通常需要堆 grooming 或 "feng shui" 来将函数指针、虚表、智能指针控制块、关键状态等可用目标置于易受攻击缓冲区附近。现代分配器通过加固元数据、隔离块、添加守护页等方式提高难度,而 ASLR、CFI、沙箱和内存安全语言进一步降低影响。堆溢出在浏览器、内核与文档解析器利用中处于核心地位,Pwn2Own 上不乏获奖案例。

示例

  • CVE-2018-4407:XNU 内核 TCP 堆溢出。
  • Pwn2Own 上多次出现的 Chrome JavaScript 引擎堆溢出。

相关术语