自动化代码复用漏洞利用生成方法综述
密码学与安全
2021-07-23 v2
摘要
本文综述了自动化代码复用漏洞利用生成的方法与工具。此类漏洞利用使用已存在于易受攻击程序中的代码。代码复用方法允许在操作系统的禁止数据内存执行保护下利用漏洞。本文描述了多种代码复用方法:return-to-libc攻击、面向返回编程、面向跳转编程等。我们定义了基本术语:gadget、gadget frame、gadget catalog。此外,我们表明,gadget实际上是一条指令,而gadget的集合定义了一台虚拟机。我们可以将漏洞利用创建问题归约为该虚拟机的代码生成。每个特定的可执行文件定义了一套虚拟机指令集。我们综述了用于gadget搜索与确定其语义(创建gadget catalog)的方法。这些方法可得到虚拟机指令集。若gadget集合是图灵完备的,则编译器可将gadget catalog用作目标架构。然而,某些指令可能缺失。因此我们讨论了以多个gadget替代缺失指令的几种方法。漏洞利用生成工具可通过模式搜索(正则表达式)或考虑gadget语义来链接gadget。此外,某些链接方法使用遗传算法,而其他方法使用SMT求解器。我们对比了现有的开源工具,并提出了可用于验证所生成链是否成功打开shell的测试系统rop-benchmark。
引用
@article{arxiv.2011.07862,
title = {Survey of Methods for Automated Code-Reuse Exploit Generation},
author = {Alexey Vishnyakov and Alexey Nurmukhametov},
journal= {arXiv preprint arXiv:2011.07862},
year = {2021}
}