堆喷射
堆喷射 是什么?
堆喷射一种利用原语,通过在堆中铺设大量相同的载荷副本,使被破坏的指针几乎肯定落在攻击者控制的数据上。
堆喷射通过分配大量可预测的 NOP-sled+shellcode 副本(在现代变种中可能是 ROP gadget 或伪造的 vtable),覆盖进程内大片内存。当浏览器等程序出现 use-after-free 或类型混淆等内存破坏漏洞时,攻击者可以把损坏的指针指向某个常用地址(典型如 0x0c0c0c0c),那里几乎必然命中喷射好的字节。该技术由 Skylined 在 2004 年针对 Internet Explorer 的漏洞利用而广为人知,至今在浏览器、文档解析和字体解析利用中仍十分常见。现代防御包括高熵 ASLR、分区隔离堆(PartitionAlloc、Edge 的 Heap Isolation)、控制流完整性以及 JIT 加固机制。
● 示例
- 01
在 use-after-free 后,通过分配数百 MB 含有 shellcode 的 JavaScript 字符串,使 0x0c0c0c0c 几乎必然是 shellcode。
- 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 加固机制。
如何防御 堆喷射?
针对 堆喷射 的防御通常结合技术控制与运营实践,详见上方完整定义。
堆喷射 还有哪些其他名称?
常见的别称包括: 堆喷。
● 相关术语
● 参见
- № 564JIT 喷射