HAEPG:自动多跳利用生成框架解析
1. 引言
自动化漏洞利用生成(AEG)在以漏洞为中心的攻击和防御中变得越来越重要。软件供应商用它来快速评估安全漏洞的严重程度,并分配资源修复关键漏洞。防御者则从合成的漏洞利用中学习,生成入侵检测系统规则,阻止潜在攻击。
大多数AEG解决方案通常只支持栈相关或格式化字符串漏洞,这些漏洞在现代系统中较为罕见。由于堆分配器功能的复杂性,只有少数现有解决方案能为基于堆的漏洞生成利用程序。以下是几种现有解决方案及其方法:
- Revery:应用面向布局的模糊测试和控制流拼接解决方案,探索从漏洞点派生路径中的可利用状态。
- Gollum:采用自定义堆分配器创建可利用的堆布局,并基于先前工作的模糊测试技术解决堆操作问题。
- SLAKE:使用静态 - 动态混合分析来搜索有用的内核对象,并通过调整 slab 中的空闲列表来操纵堆布局。
这些解决方案都通过破坏敏感指针(如 VTable 指针)来实现攻击者控制的内存写入或间接调用,即单跳利用。但并非所有漏洞都能用简单的单跳技术利用,比如偏移一位错误,仅触发漏洞无法完全控制敏感指针,更无法将指令指针覆盖为任意值。因此,需要解决以下挑战:
- 挑战 1:探索有限能力堆漏洞的利用潜力 :为利用有限能力的漏洞,攻击者需操纵堆布局,滥用堆分配器的内部功能,创建多个中间跳,扩大可破坏内存范围,最终实现任意内存写入或间接调用,即多跳利用。虽然有解决方案致力于发现堆分配器的多跳利用技术,但无法自动应用于基于堆漏洞的程序。
- 挑战 2:建模程序与堆分配器之间的堆交互 :进行多跳利用时,AEG 解决方