RUS  ENG
Full version
JOURNALS // Proceedings of the Institute for System Programming of the RAS // Archive

Proceedings of ISP RAS, 2018 Volume 30, Issue 5, Pages 31–54 (Mi tisp359)

This article is cited in 1 paper

Method for analysis of code-reuse attacks

A. V. Vishnyakova, A. R. Nurmukhametova, Sh. F. Kurmangaleeva, S. S. Gaysaryanbacd

a Institute for System Programming of the Russian Academy of Sciences
b National Research University Higher School of Economics (HSE)
c Moscow Institute of Physics and Technology (State University)
d Lomonosov Moscow State University

Abstract: Providing security for computer programs is one of the paramount tasks nowadays. Failures in operation of program software can lead to serious consequences and exploitation of vulnerabilities can inflict immense harm. Large corporations pay particular attention to the analysis of computer security incidents. Code-reuse attacks based on return-oriented programming are gaining more and more popularity each year and can bypass even modern operating system protections. Unlike common shellcode, where instructions are placed consequently in memory, ROP chain contains of several small instruction blocks (gadgets) and uses stack to chain them together, which makes analysis of ROP exploits more difficult. The main goal of this work is to simplify reverse engineering of ROP exploits. In this paper I propose the method for analysis of code-reuse attacks, which allows one to split chain into gadgets, restore the semantics of each particular gadget, and restore prototypes and parameters values of system calls and functions called during the execution of ROP chain. Parametrized types define gadget semantics. Each gadget type is defined by a postcondition (boolean predicate) that must always be true after executing the gadget. The proposed method was implemented as a program tool and tested on real ROP exploits found on the internet.

Keywords: computer security, binary analysis, vulnerability, return-oriented programming, ROP, gadgets classification, code-reuse attack, computer security incident.

DOI: 10.15514/ISPRAS-2018-30(5)-2



Bibliographic databases:


© Steklov Math. Inst. of RAS, 2024