Gollum:解释器堆溢出的模块化灰盒漏洞利用生成技术
在即将召开的ACM计算机与通信安全会议(CCS)上,我将发表一篇关于自动漏洞利用生成(AEG)的论文。论文中讨论了一个针对解释器堆溢出自动发现原语并构建漏洞利用的系统。该方法与大多数其他AEG解决方案的不同之处在于完全采用灰盒测试,依赖轻量级插桩和各种类模糊测试的输入生成技术。
系统工作流程
下图展示了系统的工作阶段,每个阶段在论文中都有详细说明: ![工作流程图展示Gollum生成漏洞利用和原语的过程]
实验评估
使用PHP和Python解释器中的10个漏洞作为测试案例,让Gollum进行原语发现和漏洞利用构建: ![漏洞利用生成和原语搜索结果]
三大技术要点
-
模糊测试驱动的AEG方法:通过将问题分解为不同阶段,可以利用轻量级插桩和相对简单的输入生成来攻击多个阶段。与传统依赖符号执行的方法相比,这种方法能有效避免状态空间爆炸问题。
-
延迟解析机制:提出在漏洞利用生成中采用延迟解析任务的方法。先假设堆布局可实现,生成漏洞利用方案,再实际解决堆布局问题。这种思路可推广到其他漏洞类型(如竞争条件)的利用生成。
-
遗传算法优化:相比去年USENIX Security论文中使用的随机搜索算法,遗传算法在堆布局操作任务上表现更优,虽然实现更复杂耗时: ![随机搜索与遗传算法解决堆布局基准测试的对比]
本文首次发布于2019年10月30日,最后更新于2019年11月1日