当前位置: X-MOL 学术Program. Comput. Softw. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Survey of Methods for Automated Code-Reuse Exploit Generation
Programming and Computer Software ( IF 0.7 ) Pub Date : 2021-07-30 , DOI: 10.1134/s0361768821040071
A. V. Vishnyakov 1 , A. R. Nurmukhametov 1
Affiliation  

Abstract

This paper provides a survey of methods and tools for automated code-reuse exploit generation. Such exploits use code that is already contained in a vulnerable program. The code-reuse approach allows one to exploit vulnerabilities in the presence of operating system protection that prohibits data memory execution. This paper contains a description of various code-reuse methods: return-to-libc attack, return-oriented programming, jump-oriented programming, and others. We define fundamental terms: gadget, gadget frame, gadget catalog. Moreover, we show that, in fact, a gadget is an instruction, and a set of gadgets defines a virtual machine. We can reduce an exploit creation problem to code generation for this virtual machine. Each particular executable file defines a virtual machine instruction set. We provide a survey of methods for gadgets searching and determining their semantics (creating a gadget catalog). These methods allow one to get the virtual machine instruction set. If a set of gadgets is Turing-complete, then a compiler can use a gadget catalog as a target architecture. However, some instructions can be absent. Hence we discuss several approaches to replace missing instructions with multiple gadgets. An exploit generation tool can chain gadgets by pattern searching (regular expressions) or considering gadgets semantics. Furthermore, some chaining methods use genetic algorithms, while others use SMT-solvers. We compare existing open-source tools and propose a testing system rop-benchmark that can be used to verify whether a generated chain successfully opens a shell.



中文翻译:

自动代码重用漏洞生成方法调查

摘要

本文对自动代码重用漏洞利用生成的方法和工具进行了调查。此类漏洞利用已包含在易受攻击的程序中的代码。代码重用方法允许在禁止数据内存执行的操作系统保护存在的情况下利用漏洞。本文包含对各种代码重用方法的描述:return-to-libc 攻击、面向返回的编程、面向跳转的编程等。我们定义了基本术语:小工具、小工具框架、小工具目录。此外,我们表明,事实上,一个小工具就是一条指令,一组小工具定义了一个虚拟机。我们可以将漏洞利用创建问题减少到此虚拟机的代码生成。每个特定的可执行文件定义了一个虚拟机指令集。我们提供了有关小工具搜索和确定其语义(创建小工具目录)的方法的调查。这些方法允许获得虚拟机指令集。如果一组小工具是图灵完备的,那么编译器可以使用小工具目录作为目标架构。但是,可能会缺少某些说明。因此,我们讨论了几种用多个小工具替换缺失指令的方法。漏洞利用生成工具可以通过模式搜索(正则表达式)或考虑小工具语义来链接小工具。此外,一些链接方法使用遗传算法,而其他链接方法使用 SMT 求解器。我们比较了现有的开源工具,并提出了一个测试系统 rop-benchmark,可用于验证生成的链是否成功打开了 shell。这些方法允许获得虚拟机指令集。如果一组小工具是图灵完备的,那么编译器可以使用小工具目录作为目标架构。但是,可能会缺少某些说明。因此,我们讨论了几种用多个小工具替换缺失指令的方法。漏洞利用生成工具可以通过模式搜索(正则表达式)或考虑小工具语义来链接小工具。此外,一些链接方法使用遗传算法,而其他链接方法使用 SMT 求解器。我们比较了现有的开源工具,并提出了一个测试系统 rop-benchmark,可用于验证生成的链是否成功打开了 shell。这些方法允许获得虚拟机指令集。如果一组小工具是图灵完备的,那么编译器可以使用小工具目录作为目标架构。但是,可能会缺少某些说明。因此,我们讨论了几种用多个小工具替换缺失指令的方法。漏洞利用生成工具可以通过模式搜索(正则表达式)或考虑小工具语义来链接小工具。此外,一些链接方法使用遗传算法,而其他链接方法使用 SMT 求解器。我们比较了现有的开源工具,并提出了一个测试系统 rop-benchmark,可用于验证生成的链是否成功打开了 shell。但是,可能会缺少某些说明。因此,我们讨论了几种用多个小工具替换缺失指令的方法。漏洞利用生成工具可以通过模式搜索(正则表达式)或考虑小工具语义来链接小工具。此外,一些链接方法使用遗传算法,而其他链接方法使用 SMT 求解器。我们比较了现有的开源工具,并提出了一个测试系统 rop-benchmark,可用于验证生成的链是否成功打开了 shell。但是,可能会缺少某些说明。因此,我们讨论了几种用多个小工具替换缺失指令的方法。漏洞利用生成工具可以通过模式搜索(正则表达式)或考虑小工具语义来链接小工具。此外,一些链接方法使用遗传算法,而其他链接方法使用 SMT 求解器。我们比较了现有的开源工具,并提出了一个测试系统 rop-benchmark,可用于验证生成的链是否成功打开了 shell。

更新日期:2021-07-30
down
wechat
bug