Комплексная система защиты от уязвимостей, основанных на возвратно-ориентированном программировании

Затруднительно или невозможно создать программное обеспечение, не содержащее ошибок. Ошибки могут приводить к тому, что переданные в программу данные вызывают нештатный порядок выполнения ее машинного кода. Разбиение на подпрограммы приводит к тому, что инструкции возврата из подпрограмм могут испол...

Ամբողջական նկարագրություն

Մատենագիտական մանրամասներ
Հիմնական հեղինակներ: Ivan Lubkin, Vyacheslav Zolotarev
Ձևաչափ: Հոդված
Լեզու:English
Հրապարակվել է: Russian Academy of Sciences, St. Petersburg Federal Research Center 2022-03-01
Շարք:Информатика и автоматизация
Խորագրեր:
Առցանց հասանելիություն:http://ia.spcras.ru/index.php/sp/article/view/15090
Նկարագրություն
Ամփոփում:Затруднительно или невозможно создать программное обеспечение, не содержащее ошибок. Ошибки могут приводить к тому, что переданные в программу данные вызывают нештатный порядок выполнения ее машинного кода. Разбиение на подпрограммы приводит к тому, что инструкции возврата из подпрограмм могут использоваться для проведения атаки. Существующие средства защиты в основном требуют наличия исходных текстов для предотвращения таких атак. Предлагаемая методика защиты направлена на комплексное решение проблемы. Во-первых, затрудняется получение атакующим контроля над исполнением программы, а во-вторых, снижается количество участков программ, которые могут быть использованы в ходе атаки. Для затруднения получения контроля над исполнением применяется вставка защитного кода в начало и конец подпрограмм. При вызове защищенной подпрограммы производится защита адреса возврата, а при завершении – восстановление – при условии отсутствия повреждения его атакующим. Для снижения количества пригодных для атак участков применяются синонимичные замены инструкций, содержащие опасные значения. Предложенные меры не изменяют алгоритм работы исходного приложения. Для проверки описанных решений была выполнена программная реализация и проведено ее тестирование с использованием синтетических тестов, тестов производительности и реальных программ. Тестирование показало правильность принятых решений, что обеспечивает устранение пригодных для атак участков и невозможность использования штатных инструкций возврата для проведения атак. Тестирование производительности показало 14 % падения скорости работы, что находится на уровне ближайших аналогов. Сравнение с аналогами показало, что количество реализуемых сценариев атаки для предложенного решения меньше, а применимость выше.
ISSN:2713-3192
2713-3206