摘要
针对使用后释放(Use-After-Free,UAF)漏洞的自动利用生成(Automatic Exploit Generation,AEG)是一项具有挑战性的工作。程序语义之间的复杂依赖关系和堆分配器的不可预测行为增加了困难。现有的UAF漏洞AEG解决方案依赖于模糊器在整个程序空间中搜索可利用状态,效率较低。本文提出了TETRIS,一个用于用户空间中自动生成UAF漏洞利用的系统。TETRIS采用内存冲突策略,自动推断利用漏洞触发后的目标内存布局。为了构建目标布局,我们提出了“重新激活路径”(Reactivated Path,RAP)的概念,用于表示布局操作的程序语义,并在此基础上构建了一种新颖的快速布局探索技术。我们的方法不需要任何关于堆分配器内部机制的知识,并且可以通过替换目标布局推断部分轻松部署到其他堆内存破坏漏洞上。我们在一组19个CTF(夺旗赛)程序上对TETRIS进行了基准测试。结果表明,TETRIS可以为其中的15个程序生成利用,同时也可以生成满足布局要求的输入。与其他最先进的AEG工具进行的评估表明,TETRIS可以更高效地生成UAF利用。
关键词—自动利用生成,使用后释放漏洞,堆布局操作。
引言
随着自动漏洞发现工具的成功部署,越来越多的使用后释放(Use-After-Free,UAF)漏洞被发现,包括内核和应用程序中的漏洞,例如Microsoft Office、浏览器、邮件服务器、虚拟化软件等等。就在几年前,UAF漏洞已经成为使用不安全语言(如C/C++)编写的软件中最常被利用的内存错误之一,许多零日攻击都是通过UAF漏洞发起的,对网络安全构成了严重威胁。
快速评估UAF漏洞的可利用性对于供应商和攻击者都很重要。为了实现这一目标,引入了自动利用生成(Automatic Exploit Generation,AEG)来评估漏洞的可利用性,并且研究人员在内核和解释器中对UAF漏洞的利用性评估取得了进展。然而,对于用户空间应用程序(而不是解释器),自动利用UAF漏洞仍然是一项困难的任务,原因在于漏洞本身和程序运行环境的复杂特性。经

最低0.47元/天 解锁文章
1525





