Abstract

This paper provides a survey of methods and tools for automated code-reuse exploit generation. Such exploits use code that already contains in a vulnerable program. The code-reuse approach, e.g., return-oriented programming, allows one to exploit vulnerabilities in the presence of operating system protection that prohibits execution of code in memory pages marked as data. We define fundamental terms such as gadget, gadget frame, gadget catalog. Moreover, we show that a gadget is, in fact, 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 taking gadgets semantics into consideration. Furthermore, some chaining methods use genetic algorithms, while others use SMTsolvers. 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.

Highlights

  • А на этапе верификации для каждого постусловия формально доказывается его истинность или ложность, и гипотеза принимается или отвергается соответственно

  • Построение расписания по дереву гаджетов и генерация ROP цепочки

  • He has a strong interest in compilers, computer security, return-oriented programming

Read more

Summary

Введение

Обзор методов автоматизированной генерации эксплойтов повторного использования кода. Вместе с развитием методов повторного использования кода происходило и развитие инструментов, с помощью которых атакующий конструировал атаки данного типа. Задача автоматизированной генерации эксплойтов для атак повторного использования кода является задачей трансляции некоторого описания эксплойта в архитектуру набора команд виртуальной машины, неявно задаваемой состоянием памяти эксплуатируемого процесса. Который можно использовать при составлении ROP цепочки по сути задается исполняемым файлом. 1 приводится пример размещенной на стеке цепочки гаджетов, осуществляющей запись значения memValue по адресу memAddr. В перечисленных работах было показано, что на RISC архитектурах возможно сконструировать как применимый для эксплуатации, так и полный по Тьюрингу набор гаджетов. Требование к выравниванию инструкций приводит к тому, что по сравнению с x86 остаются только гаджеты, оканчивающимися инструкциями возврата, которые изначально содержались в программе

Фрейм гаджета
Общая схема генерации эксплойтов повторного использования кода
Каталог гаджетов
Поиск гаджетов
Определение семантики гаджетов
Типы гаджетов
Классификация гаджетов
Резюме гаджетов
Генерация на основе шаблонов гаджетов
Связывание гаджетов в цепочки с использованием семантических запросов
Генетический алгоритм
Генерация цепочек с использованием SMT-решателей
Учет запрещенных символов
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.