Применение компиляторных преобразований для противодействия эксплуатации уязвимостей программного обеспечения
А.Р. Нурмухаметов, Ш.Ф. Курмангалеев, В.В. Каушан, С.С. Гайсарян. Применение компиляторных преобразований для противодействия эксплуатации уязвимостей программного обеспечения.
Труды Института системного программирования РАН, том 26, вып. 3, 2014, стр. 113-126.
DOI: 10.15514/ISPRAS-2014-26(3)-6
| Полный текст публикации | | Презентация |
Аннотация
Уязвимости программного обеспечения представляют серьезную угрозу безопасности информационной системы. Любое программное обеспечение, написанное на языках C/C++, потенциально содержит в себе значительное количество уязвимостей, используя которые злоумышленник может с помощью специально подготовленных эксплойтов захватить контроль над системой. Для противодействия эксплуатации таких уязвимостей в данной работе предлагается использовать компиляторные преобразования: перестановка местами функций в модуле, добавление локальных переменных на стек функции, перемешивание локальных переменных на стеке. С помощью этих преобразований предлагается генерировать диверсифицированную популяцию исполняемых файлов компилируемого приложения. Такой подход, например, усложняет планирование ROP-атак на всю популяцию. Злоумышленник, получив в свое распоряжение один исполняемый файл, может сделать ROP-эксплойт, работающий только для этой версии приложения. Остальные исполняемые файлы популяции останутся устойчивыми к данной атаке.