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

堆喷射

堆喷射 是什么?

堆喷射一种利用原语,通过在堆中铺设大量相同的载荷副本,使被破坏的指针几乎肯定落在攻击者控制的数据上。


堆喷射通过分配大量可预测的 NOP-sled+shellcode 副本(在现代变种中可能是 ROP gadget 或伪造的 vtable),覆盖进程内大片内存。当浏览器等程序出现 use-after-free 或类型混淆等内存破坏漏洞时,攻击者可以把损坏的指针指向某个常用地址(典型如 0x0c0c0c0c),那里几乎必然命中喷射好的字节。该技术由 Skylined 在 2004 年针对 Internet Explorer 的漏洞利用而广为人知,至今在浏览器、文档解析和字体解析利用中仍十分常见。现代防御包括高熵 ASLR、分区隔离堆(PartitionAlloc、Edge 的 Heap Isolation)、控制流完整性以及 JIT 加固机制。

示例

  1. 01

    在 use-after-free 后,通过分配数百 MB 含有 shellcode 的 JavaScript 字符串,使 0x0c0c0c0c 几乎必然是 shellcode。

  2. 02

    Adobe Flash 漏洞利用使用 Vector<uint> 喷射部署 ROP 链。

常见问题

堆喷射 是什么?

一种利用原语,通过在堆中铺设大量相同的载荷副本,使被破坏的指针几乎肯定落在攻击者控制的数据上。 它属于网络安全的 攻击与威胁 分类。

堆喷射 是什么意思?

一种利用原语,通过在堆中铺设大量相同的载荷副本,使被破坏的指针几乎肯定落在攻击者控制的数据上。

堆喷射 是如何工作的?

堆喷射通过分配大量可预测的 NOP-sled+shellcode 副本(在现代变种中可能是 ROP gadget 或伪造的 vtable),覆盖进程内大片内存。当浏览器等程序出现 use-after-free 或类型混淆等内存破坏漏洞时,攻击者可以把损坏的指针指向某个常用地址(典型如 0x0c0c0c0c),那里几乎必然命中喷射好的字节。该技术由 Skylined 在 2004 年针对 Internet Explorer 的漏洞利用而广为人知,至今在浏览器、文档解析和字体解析利用中仍十分常见。现代防御包括高熵 ASLR、分区隔离堆(PartitionAlloc、Edge 的 Heap Isolation)、控制流完整性以及 JIT 加固机制。

如何防御 堆喷射?

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

堆喷射 还有哪些其他名称?

常见的别称包括: 堆喷。

相关术语

参见