HAEPG:自动多跳漏洞利用生成框架解析
在漏洞利用自动化的领域中,HAEPG(An Automatic Multi - hop Exploitation Generation Framework)是一个引人注目的框架。它旨在自动生成针对堆漏洞的利用程序,下面将详细介绍其原理、实现、评估等方面的内容。
1. 漏洞利用原语
HAEPG主要利用两种关键的漏洞利用原语:
- 任意函数执行(Arbitrary Execution) :通过调用被破坏的函数指针的函数路径,将漏洞利用原语转化为任意执行。具体来说,在使用单指令小工具(one - gadget)破坏指令指针后,HAEPG会挂钩用于进程生成的API(如execve)。当检测到使用bash路径作为参数调用这些API时,它会解决在执行攻击序列时收集的约束条件,并生成利用输入。
- 任意分配(Arbitrary Allocation,AA) :若bin的头指针是符号化的,HAEPG可以在任意位置分配一个块。不过,此原语根据bin的类型有不同的约束:
- tcache :分配器不检查分配块的元数据,因此可将该原语视为任意写原语。
- fastbin :分配器会检查块大小的一致性,攻击者必须找到或构造一个伪造的元数据来绕过完整性检查。例如,glibc中malloc hook附近的函数指针可被分配器误认为是有效的元数据,通过在其上分配一个块,可直接覆盖malloc hook并劫持指令指针。